astrovault/staking_derivative/
init_msg.rs

1use cosmwasm_std::Uint128;
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5use super::handle_msg::NetworkSettings;
6
7#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq, JsonSchema)]
8pub struct InstantiateMsg {
9    pub owner: Option<String>,
10    pub bulk_distributor_settings: BulkSettings,
11    pub dx_token_settings: DxTokenSettings,
12    pub network_settings: NetworkSettings,
13    pub validators: Vec<ValidatorSetting>,
14    pub external_source_operator: Option<String>, // multisign wallet on source chain that will do the cross chain operations
15    pub archway_handler_addr: Option<String>,
16}
17
18#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone, JsonSchema)]
19pub struct BulkSettings {
20    pub existing_address: Option<String>,
21    pub code_id: Option<u64>,
22    pub distribute_rewards_over: u64,
23}
24
25#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone, JsonSchema)]
26pub struct DxTokenSettings {
27    pub existing_address: Option<String>,
28    pub create_token: Option<CreateDxTokenSettings>,
29}
30
31#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone, JsonSchema)]
32pub struct CreateDxTokenSettings {
33    pub code_id: u64,
34    pub name: String,
35    pub symbol: String,
36    pub label: String,
37    pub decimals: u8,
38}
39
40#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone, JsonSchema)]
41pub struct ValidatorSetting {
42    pub address: String,
43    pub per: Uint128, // with precision of 10000 <=> 100% && 10 <=> 0.1%
44}