abstract_os/objects/pool/
pool_reference.rs

1use 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
25/// Pool referenced with an unchecked pool ID
26pub 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}