ve3_shared/
msgs_connector_emission.rs

1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::{Addr, Decimal, QuerierWrapper, Uint128};
3use cw_asset::{AssetInfo, AssetInfoUnchecked};
4#[allow(unused_imports)]
5use std::collections::HashSet;
6
7use crate::{
8  adapters::{
9    asset_gauge::AssetGauge, global_config_adapter::ConfigExt, voting_escrow::VotingEscrow,
10  },
11  constants::{AT_ASSET_GAUGE, AT_VOTING_ESCROW},
12  error::SharedError,
13};
14
15#[cw_serde]
16pub struct InstantiateMsg {
17  pub emissions_per_week: Uint128,
18  pub team_share: Decimal,
19  pub rebase_config: RebaseConfg,
20  pub mint_config: MintConfig,
21
22  pub gauge: String,
23  pub global_config_addr: String,
24  pub emission_token: AssetInfoUnchecked,
25}
26
27#[cw_serde]
28pub enum RebaseConfg {
29  Fixed(Decimal),
30
31  // weeklyEmissions × (1 - (VP.totalSupply / 10) ÷ TOKEN.totalsupply)ˆ2 × 0.5
32  Dynamic {},
33
34  TargetYearlyApy(Decimal),
35}
36
37#[cw_serde]
38pub enum MintConfig {
39  /// send amount from existing balance
40  UseBalance,
41
42  MintDirect,
43
44  MintProxy,
45}
46
47#[cw_serde]
48pub struct MigrateMsg {}
49
50#[cw_serde]
51pub struct Config {
52  pub global_config_addr: Addr,
53  pub gauge: String,
54
55  pub emissions_per_week: Uint128,
56  pub team_share: Decimal,
57  pub enabled: bool,
58  pub rebase_config: RebaseConfg,
59  pub mint_config: MintConfig,
60  pub last_claim_s: u64,
61  pub emission_token: AssetInfo,
62}
63
64impl Config {
65  pub fn voting_escrow(&self, querier: &QuerierWrapper) -> Result<VotingEscrow, SharedError> {
66    self.global_config().get_address(querier, AT_VOTING_ESCROW).map(VotingEscrow)
67  }
68
69  pub fn asset_gauge(&self, querier: &QuerierWrapper) -> Result<AssetGauge, SharedError> {
70    self.global_config().get_address(querier, AT_ASSET_GAUGE).map(AssetGauge)
71  }
72}
73
74#[cw_serde]
75pub enum ExecuteMsg {
76  // Privileged functions
77  ClaimRewards {},
78
79  UpdateConfig {
80    emissions_per_s: Option<Uint128>,
81    team_share: Option<Decimal>,
82    rebase_config: Option<RebaseConfg>,
83    mint_config: Option<MintConfig>,
84    enabled: Option<bool>,
85    gauge: Option<String>,
86  },
87}
88
89#[cw_serde]
90#[derive(QueryResponses)]
91pub enum QueryMsg {
92  #[returns(Config)]
93  Config {},
94}