olympus_pro/
factory.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use terraswap::asset::AssetInfo;
5
6use crate::custom_bond::FeeTier;
7
8#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
9pub struct InstantiateMsg {
10    pub custom_bond_id: u64,
11    pub custom_treasury_id: u64,
12    pub treasury: String,
13    pub subsidy_router: String,
14    pub olympus_dao: String,
15}
16
17#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
18#[serde(rename_all = "snake_case")]
19pub enum ExecuteMsg {
20    UpdateConfig {
21        custom_bond_id: Option<u64>,
22        custom_treasury_id: Option<u64>,
23        policy: Option<String>,
24    },
25    CreateBondAndTreasury {
26        payout_token: String,
27        principal_token: AssetInfo,
28        initial_owner: String,
29        fee_tiers: Vec<FeeTier>,
30        fee_in_payout: bool,
31    },
32    CreateBond {
33        principal_token: AssetInfo,
34        custom_treasury: String,
35        initial_owner: String,
36        fee_tiers: Vec<FeeTier>,
37        fee_in_payout: bool,
38    },
39}
40
41#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
42#[serde(rename_all = "snake_case")]
43pub struct MigrateMsg {}
44
45#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
46#[serde(rename_all = "snake_case")]
47pub enum QueryMsg {
48    Config {},
49    State {},
50    BondInfo { bond_id: u64 },
51}
52
53// We define a custom struct for each query response
54#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
55pub struct ConfigResponse {
56    pub custom_bond_id: u64,
57    pub custom_treasury_id: u64,
58    pub treasury: String,
59    pub subsidy_router: String,
60    pub olympus_dao: String,
61    pub policy: String,
62}
63
64#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
65pub struct BondInfoResponse {
66    pub principal_token: AssetInfo,
67    pub custom_treasury: String,
68    pub bond: String,
69    pub initial_owner: String,
70    pub fee_tiers: Vec<FeeTier>,
71}