ve3_shared/
msgs_connector_emission.rs1use 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 Dynamic {},
33
34 TargetYearlyApy(Decimal),
35}
36
37#[cw_serde]
38pub enum MintConfig {
39 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 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}