Skip to main content

pylon_token/
vesting.rs

1use cosmwasm_std::Uint128;
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5use crate::common::OrderBy;
6
7#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
8pub struct InstantiateMsg {
9    pub owner: String,
10    pub pylon_token: String,
11    pub genesis_time: u64,
12}
13
14#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
15#[serde(rename_all = "snake_case")]
16pub enum ExecuteMsg {
17    UpdateConfig {
18        owner: Option<String>,
19        pylon_token: Option<String>,
20        genesis_time: Option<u64>,
21    },
22    RegisterVestingAccounts {
23        vesting_accounts: Vec<VestingAccount>,
24    },
25    Claim {},
26}
27
28/// CONTRACT: end_time > start_time
29#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
30pub struct VestingAccount {
31    pub address: String,
32    pub schedules: Vec<(u64, u64, Uint128)>,
33}
34
35#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
36pub struct VestingInfo {
37    pub schedules: Vec<(u64, u64, Uint128)>,
38    pub last_claim_time: u64,
39}
40
41#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
42#[serde(rename_all = "snake_case")]
43pub enum QueryMsg {
44    Config {},
45    VestingAccount {
46        address: String,
47    },
48    VestingAccounts {
49        start_after: Option<String>,
50        limit: Option<u32>,
51        order_by: Option<OrderBy>,
52    },
53}
54
55// We define a custom struct for each query response
56#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
57pub struct ConfigResponse {
58    pub owner: String,
59    pub pylon_token: String,
60    pub genesis_time: u64,
61}
62
63// We define a custom struct for each query response
64#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
65pub struct VestingAccountResponse {
66    pub address: String,
67    pub info: VestingInfo,
68}
69
70// We define a custom struct for each query response
71#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
72pub struct VestingAccountsResponse {
73    pub vesting_accounts: Vec<VestingAccountResponse>,
74}