1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::Decimal;
3use mars_owner::OwnerUpdate;
4
5use crate::types::{asset::AssetParamsUnchecked, vault::VaultConfigUnchecked};
6
7#[cw_serde]
8pub struct InstantiateMsg {
9 pub owner: String,
11 pub target_health_factor: Decimal,
13}
14
15#[cw_serde]
16pub enum ExecuteMsg {
17 UpdateOwner(OwnerUpdate),
18 UpdateTargetHealthFactor(Decimal),
19 UpdateAssetParams(AssetParamsUpdate),
20 UpdateVaultConfig(VaultConfigUpdate),
21 EmergencyUpdate(EmergencyUpdate),
22}
23
24#[cw_serde]
25#[derive(QueryResponses)]
26pub enum QueryMsg {
27 #[returns(mars_owner::OwnerResponse)]
28 Owner {},
29
30 #[returns(crate::types::asset::AssetParams)]
31 AssetParams {
32 denom: String,
33 },
34
35 #[returns(Vec<crate::types::asset::AssetParams>)]
36 AllAssetParams {
37 start_after: Option<String>,
38 limit: Option<u32>,
39 },
40
41 #[returns(crate::types::vault::VaultConfig)]
42 VaultConfig {
43 address: String,
45 },
46
47 #[returns(Vec<crate::types::vault::VaultConfig>)]
48 AllVaultConfigs {
49 start_after: Option<String>,
50 limit: Option<u32>,
51 },
52
53 #[returns(Decimal)]
54 TargetHealthFactor {},
55}
56
57#[cw_serde]
58pub enum AssetParamsUpdate {
59 AddOrUpdate {
60 params: AssetParamsUnchecked,
61 },
62}
63
64#[cw_serde]
65pub enum VaultConfigUpdate {
66 AddOrUpdate {
67 config: VaultConfigUnchecked,
68 },
69}
70
71#[cw_serde]
72pub enum CmEmergencyUpdate {
73 SetZeroMaxLtvOnVault(String),
74 SetZeroDepositCapOnVault(String),
75 DisallowCoin(String),
76}
77
78#[cw_serde]
79pub enum RedBankEmergencyUpdate {
80 DisableBorrowing(String),
81}
82
83#[cw_serde]
84pub enum EmergencyUpdate {
85 CreditManager(CmEmergencyUpdate),
86 RedBank(RedBankEmergencyUpdate),
87}