Skip to main content

solid_moneymarket/
native_wrapper.rs

1use cosmwasm_std::Uint128;
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5use cw20::Cw20ReceiveMsg;
6
7#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
8#[serde(rename_all = "snake_case")]
9pub struct InstantiateMsg {
10    /// Owner address for config update
11    pub owner_addr: String,
12    /// Cw20 code id for Solid
13    pub wrapper_code_id: u64,
14
15    pub collateral_denom: String,
16
17    pub wrapper_denom: String,
18}
19
20#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
21#[serde(rename_all = "snake_case")]
22pub enum ExecuteMsg {
23    Receive(Cw20ReceiveMsg),
24
25    /// Update config values
26    UpdateConfig {
27        owner_addr: Option<String>,
28    },
29
30    /// Deposit collateral IBC token and get the wrapper
31    Bond {
32        recipient: Option<String>,
33    },
34}
35
36#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
37#[serde(rename_all = "snake_case")]
38pub enum Cw20HookMsg {
39    /// Burn wrapper to withdraw the collateral
40    Unbound { recipient: Option<String> },
41}
42
43#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
44#[serde(rename_all = "snake_case")]
45pub enum QueryMsg {
46    Config {},
47    State {},
48}
49
50// We define a custom struct for each query response
51#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
52pub struct ConfigResponse {
53    pub owner_addr: String,
54    pub collateral_denom: String,
55    pub wrapper_denom: String,
56    pub wrapper_contract: String,
57}
58
59// We define a custom struct for each query response
60#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
61pub struct StateResponse {
62    pub total_bond: Uint128,
63    pub total_supply: Uint128,
64    pub exchange_rate: Uint128,
65}
66
67// We define a custom struct for each query response
68#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
69pub struct DepositorInfoResponse {
70    pub depositor: String,
71    pub amount: Uint128,
72}
73
74#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
75pub struct DepositorInfosResponse {
76    pub depositor_infos: Vec<DepositorInfoResponse>,
77}
78
79#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
80#[serde(rename_all = "snake_case")]
81pub struct MigrateMsg {}