warp_controller_pkg/
lib.rs

1use crate::account::{
2    AccountResponse, AccountsResponse, CreateAccountMsg, QueryAccountMsg, QueryAccountsMsg,
3};
4use crate::job::{
5    CreateJobMsg, DeleteJobMsg, EvictJobMsg, ExecuteJobMsg, JobResponse, JobsResponse, QueryJobMsg,
6    QueryJobsMsg, UpdateJobMsg,
7};
8use cosmwasm_schema::{cw_serde, QueryResponses};
9use cosmwasm_std::{Addr, Uint128, Uint64};
10
11pub mod account;
12pub mod job;
13
14//objects
15#[cw_serde]
16pub struct Config {
17    pub owner: Addr,
18    pub fee_denom: String,
19    pub fee_collector: Addr,
20    pub warp_account_code_id: Uint64,
21    pub minimum_reward: Uint128,
22    pub creation_fee_percentage: Uint64,
23    pub cancellation_fee_percentage: Uint64,
24    pub resolver_address: Addr,
25    // maximum time for evictions
26    pub t_max: Uint64,
27    // minimum time for evictions
28    pub t_min: Uint64,
29    // maximum fee for evictions
30    pub a_max: Uint128,
31    // minimum fee for evictions
32    pub a_min: Uint128,
33    // maximum length of queue modifier for evictions
34    pub q_max: Uint64,
35}
36
37#[cw_serde]
38pub struct State {
39    pub current_job_id: Uint64,
40    // queue length
41    pub q: Uint64,
42}
43
44//instantiate
45#[cw_serde]
46pub struct InstantiateMsg {
47    pub owner: Option<String>,
48    pub fee_denom: String,
49    pub fee_collector: Option<String>,
50    pub warp_account_code_id: Uint64,
51    pub minimum_reward: Uint128,
52    pub creation_fee: Uint64,
53    pub cancellation_fee: Uint64,
54    pub resolver_address: String,
55    pub t_max: Uint64,
56    pub t_min: Uint64,
57    pub a_max: Uint128,
58    pub a_min: Uint128,
59    pub q_max: Uint64,
60}
61
62//execute
63#[cw_serde]
64pub enum ExecuteMsg {
65    CreateJob(CreateJobMsg),
66    DeleteJob(DeleteJobMsg),
67    UpdateJob(UpdateJobMsg),
68    ExecuteJob(ExecuteJobMsg),
69    EvictJob(EvictJobMsg),
70
71    CreateAccount(CreateAccountMsg),
72
73    UpdateConfig(UpdateConfigMsg),
74
75    MigrateAccounts(MigrateAccountsMsg),
76    MigratePendingJobs(MigrateJobsMsg),
77    MigrateFinishedJobs(MigrateJobsMsg),
78}
79
80#[cw_serde]
81pub struct UpdateConfigMsg {
82    pub owner: Option<String>,
83    pub fee_collector: Option<String>,
84    pub minimum_reward: Option<Uint128>,
85    pub creation_fee_percentage: Option<Uint64>,
86    pub cancellation_fee_percentage: Option<Uint64>,
87    pub t_max: Option<Uint64>,
88    pub t_min: Option<Uint64>,
89    pub a_max: Option<Uint128>,
90    pub a_min: Option<Uint128>,
91    pub q_max: Option<Uint64>,
92}
93
94#[cw_serde]
95pub struct MigrateAccountsMsg {
96    pub warp_account_code_id: Uint64,
97    pub start_after: Option<String>,
98    pub limit: u8,
99}
100
101#[cw_serde]
102pub struct MigrateJobsMsg {
103    pub start_after: Option<Uint64>,
104    pub limit: u8,
105}
106
107//query
108#[derive(QueryResponses)]
109#[cw_serde]
110pub enum QueryMsg {
111    #[returns(JobResponse)]
112    QueryJob(QueryJobMsg),
113    #[returns(JobsResponse)]
114    QueryJobs(QueryJobsMsg),
115
116    #[returns(AccountResponse)]
117    QueryAccount(QueryAccountMsg),
118    #[returns(AccountsResponse)]
119    QueryAccounts(QueryAccountsMsg),
120
121    #[returns(ConfigResponse)]
122    QueryConfig(QueryConfigMsg),
123}
124
125#[cw_serde]
126pub struct QueryConfigMsg {}
127
128//responses
129#[cw_serde]
130pub struct ConfigResponse {
131    pub config: Config,
132}
133
134//migrate//{"resolver_address":"terra1a8dxkrapwj4mkpfnrv7vahd0say0lxvd0ft6qv","warp_account_code_id":"10081"}
135#[cw_serde]
136pub struct MigrateMsg {
137    pub warp_account_code_id: Uint64,
138    pub resolver_address: String,
139}