Skip to main content

solid_moneymarket/
distribution_model.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use cosmwasm_std::Decimal256;
5
6#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
7pub struct InstantiateMsg {
8    pub owner: String,
9    pub emission_cap: Decimal256,
10    pub emission_floor: Decimal256,
11    pub increment_multiplier: Decimal256,
12    pub decrement_multiplier: Decimal256,
13}
14
15#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
16#[serde(rename_all = "snake_case")]
17pub enum ExecuteMsg {
18    UpdateConfig {
19        owner: Option<String>,
20        emission_cap: Option<Decimal256>,
21        emission_floor: Option<Decimal256>,
22        increment_multiplier: Option<Decimal256>,
23        decrement_multiplier: Option<Decimal256>,
24    },
25}
26
27#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
28#[serde(rename_all = "snake_case")]
29pub enum QueryMsg {
30    Config {},
31    AncEmissionRate {
32        deposit_rate: Decimal256,
33        target_deposit_rate: Decimal256,
34        threshold_deposit_rate: Decimal256,
35        current_emission_rate: Decimal256,
36    },
37}
38
39// We define a custom struct for each query response
40#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
41pub struct ConfigResponse {
42    pub owner: String,
43    pub emission_cap: Decimal256,
44    pub emission_floor: Decimal256,
45    pub increment_multiplier: Decimal256,
46    pub decrement_multiplier: Decimal256,
47}
48
49// We define a custom struct for each query response
50#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
51pub struct AncEmissionRateResponse {
52    pub emission_rate: Decimal256,
53}