abstract_os/objects/pool/
pool_reference.rs1use crate::{
2 objects::{
3 pool_id::{PoolAddress, UncheckedPoolAddress},
4 unique_pool_id::UniquePoolId,
5 },
6 AbstractResult,
7};
8use cosmwasm_std::Api;
9
10#[cosmwasm_schema::cw_serde]
11pub struct PoolReference {
12 pub unique_id: UniquePoolId,
13 pub pool_address: PoolAddress,
14}
15
16impl PoolReference {
17 pub fn new(unique_id: UniquePoolId, pool_address: PoolAddress) -> Self {
18 Self {
19 unique_id,
20 pool_address,
21 }
22 }
23}
24
25pub struct UncheckedPoolReference {
27 pub unique_id: u64,
28 pub pool_address: UncheckedPoolAddress,
29}
30
31impl UncheckedPoolReference {
32 pub fn new(unique_id: u64, pool_address: UncheckedPoolAddress) -> Self {
33 Self {
34 unique_id,
35 pool_address,
36 }
37 }
38
39 pub fn check(&self, api: &dyn Api) -> AbstractResult<PoolReference> {
40 let checked_pool_address = self.pool_address.check(api)?;
41
42 Ok(PoolReference::new(
43 UniquePoolId::new(self.unique_id),
44 checked_pool_address,
45 ))
46 }
47}