abstract_os/core/
proxy.rs1use crate::{
14 ibc_client::ExecuteMsg as IbcClientMsg,
15 objects::{
16 core::OsId,
17 proxy_asset::{ProxyAsset, UncheckedProxyAsset},
18 AssetEntry,
19 },
20};
21use cosmwasm_schema::QueryResponses;
22use cosmwasm_std::{CosmosMsg, Empty, Uint128};
23
24pub mod state {
25 pub use crate::objects::core::OS_ID;
26 use cw_controllers::Admin;
27
28 use cosmwasm_std::Addr;
29 use cw_storage_plus::{Item, Map};
30
31 use crate::objects::{
32 ans_host::AnsHost, asset_entry::AssetEntry, common_namespace::ADMIN_NAMESPACE,
33 proxy_asset::ProxyAsset,
34 };
35 #[cosmwasm_schema::cw_serde]
36 pub struct State {
37 pub modules: Vec<Addr>,
38 }
39 pub const ANS_HOST: Item<AnsHost> = Item::new("\u{0}{6}ans_host");
40 pub const STATE: Item<State> = Item::new("\u{0}{5}state");
41 pub const ADMIN: Admin = Admin::new(ADMIN_NAMESPACE);
42 pub const VAULT_ASSETS: Map<&AssetEntry, ProxyAsset> = Map::new("proxy_assets");
43}
44
45#[cosmwasm_schema::cw_serde]
46pub struct InstantiateMsg {
47 pub os_id: OsId,
48 pub ans_host_address: String,
49}
50
51#[cosmwasm_schema::cw_serde]
53#[cfg_attr(feature = "boot", derive(boot_core::ExecuteFns))]
54pub enum ExecuteMsg {
55 SetAdmin { admin: String },
57 ModuleAction { msgs: Vec<CosmosMsg<Empty>> },
59 IbcAction { msgs: Vec<IbcClientMsg> },
61 AddModule { module: String },
63 RemoveModule { module: String },
65 UpdateAssets {
67 to_add: Vec<UncheckedProxyAsset>,
68 to_remove: Vec<String>,
69 },
70}
71#[cosmwasm_schema::cw_serde]
72pub struct MigrateMsg {}
73
74#[cosmwasm_schema::cw_serde]
75#[derive(QueryResponses)]
76#[cfg_attr(feature = "boot", derive(boot_core::QueryFns))]
77pub enum QueryMsg {
78 #[returns(ConfigResponse)]
80 Config {},
81 #[returns(TotalValueResponse)]
84 TotalValue {},
85 #[returns(TokenValueResponse)]
88 TokenValue {
89 identifier: String,
90 amount: Option<Uint128>,
91 },
92 #[returns(HoldingValueResponse)]
95 HoldingValue { identifier: String },
96 #[returns(HoldingAmountResponse)]
99 HoldingAmount { identifier: String },
100 #[returns(AssetConfigResponse)]
103 AssetConfig { identifier: String },
104 #[returns(AssetsResponse)]
106 Assets {
107 start_after: Option<String>,
108 limit: Option<u8>,
109 },
110 #[returns(ValidityResponse)]
112 CheckValidity {},
113 #[returns(BaseAssetResponse)]
115 BaseAsset {},
116}
117
118#[cosmwasm_schema::cw_serde]
119pub struct ConfigResponse {
120 pub modules: Vec<String>,
121}
122
123#[cosmwasm_schema::cw_serde]
124pub struct TotalValueResponse {
125 pub value: Uint128,
126}
127
128#[cosmwasm_schema::cw_serde]
129pub struct TokenValueResponse {
130 pub value: Uint128,
131}
132
133#[cosmwasm_schema::cw_serde]
134pub struct HoldingValueResponse {
135 pub value: Uint128,
136}
137
138#[cosmwasm_schema::cw_serde]
139pub struct ValidityResponse {
140 pub unresolvable_assets: Option<Vec<AssetEntry>>,
142 pub missing_dependencies: Option<Vec<AssetEntry>>,
144}
145
146#[cosmwasm_schema::cw_serde]
147pub struct BaseAssetResponse {
148 pub base_asset: ProxyAsset,
149}
150
151#[cosmwasm_schema::cw_serde]
152pub struct HoldingAmountResponse {
153 pub amount: Uint128,
154}
155
156#[cosmwasm_schema::cw_serde]
157pub struct AssetConfigResponse {
158 pub proxy_asset: ProxyAsset,
159}
160
161#[cosmwasm_schema::cw_serde]
162pub struct AssetsResponse {
163 pub assets: Vec<(AssetEntry, ProxyAsset)>,
164}
165
166#[cosmwasm_schema::cw_serde]
168
169pub struct ValueQueryMsg {
170 pub asset: AssetEntry,
171 pub amount: Uint128,
172}
173#[cosmwasm_schema::cw_serde]
175pub struct ExternalValueResponse {
176 pub value: Uint128,
177}