cw20_wrapped/
state.rs

1use schemars::JsonSchema;
2use serde::{
3    Deserialize,
4    Serialize,
5};
6
7use cosmwasm_std::{
8    Binary,
9    CanonicalAddr,
10    Storage,
11};
12use cosmwasm_storage::{
13    singleton,
14    singleton_read,
15    ReadonlySingleton,
16    Singleton,
17};
18
19pub const KEY_WRAPPED_ASSET: &[u8] = b"wrappedAsset";
20
21// Created at initialization and reference original asset and bridge address
22#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
23pub struct WrappedAssetInfo {
24    pub asset_chain: u16,      // Asset chain id
25    pub asset_address: Binary, // Asset smart contract address on the original chain
26    pub bridge: CanonicalAddr, // Bridge address, authorized to mint and burn wrapped tokens
27}
28
29pub fn wrapped_asset_info(storage: &mut dyn Storage) -> Singleton<WrappedAssetInfo> {
30    singleton(storage, KEY_WRAPPED_ASSET)
31}
32
33pub fn wrapped_asset_info_read(
34    storage: &dyn Storage,
35) -> ReadonlySingleton<WrappedAssetInfo> {
36    singleton_read(storage, KEY_WRAPPED_ASSET)
37}