1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::Addr;
3use croncat_sdk_core::internal_messages::tasks::{TasksRemoveTaskByManager, TasksRescheduleTask};
4
5use crate::types::TaskRequest;
6
7#[cw_serde]
8pub struct TasksInstantiateMsg {
9 pub chain_name: String,
11
12 pub version: Option<String>,
14
15 pub pause_admin: Addr,
19
20 pub croncat_manager_key: (String, [u8; 2]),
22 pub croncat_agents_key: (String, [u8; 2]),
24
25 pub slot_granularity_time: Option<u64>,
27
28 pub gas_base_fee: Option<u64>,
30 pub gas_action_fee: Option<u64>,
32 pub gas_query_fee: Option<u64>,
34
35 pub gas_limit: Option<u64>,
37}
38
39#[cw_serde]
40pub struct UpdateConfigMsg {
41 pub croncat_factory_addr: Option<String>,
42 pub croncat_manager_key: Option<(String, [u8; 2])>,
43 pub croncat_agents_key: Option<(String, [u8; 2])>,
44 pub slot_granularity_time: Option<u64>,
45 pub gas_base_fee: Option<u64>,
46 pub gas_action_fee: Option<u64>,
47 pub gas_query_fee: Option<u64>,
48 pub gas_limit: Option<u64>,
49}
50
51#[cw_serde]
52pub enum TasksExecuteMsg {
53 UpdateConfig(UpdateConfigMsg),
54 CreateTask {
58 task: Box<TaskRequest>,
59 },
60
61 RemoveTask {
63 task_hash: String,
64 },
65 RemoveTaskByManager(TasksRemoveTaskByManager),
68 RescheduleTask(TasksRescheduleTask),
70 PauseContract {},
72 UnpauseContract {},
74}
75
76#[cw_serde]
77#[derive(QueryResponses)]
78pub enum TasksQueryMsg {
79 #[returns(crate::types::Config)]
80 Config {},
81 #[returns[bool]]
83 Paused {},
84 #[returns(cosmwasm_std::Uint64)]
86 TasksTotal {},
87 #[returns(crate::types::CurrentTaskInfoResponse)]
89 CurrentTaskInfo {},
90 #[returns(crate::types::TaskResponse)]
92 CurrentTask {},
93 #[returns(crate::types::TaskResponse)]
95 Task { task_hash: String },
96 #[returns(Vec<crate::types::TaskInfo>)]
98 Tasks {
99 from_index: Option<u64>,
100 limit: Option<u64>,
101 },
102 #[returns(Vec<u64>)]
103 EventedIds {
104 from_index: Option<u64>,
105 limit: Option<u64>,
106 },
107 #[returns(Vec<String>)]
108 EventedHashes {
109 id: Option<u64>,
110 from_index: Option<u64>,
111 limit: Option<u64>,
112 },
113 #[returns(Vec<crate::types::TaskInfo>)]
115 EventedTasks {
116 start: Option<u64>,
117 from_index: Option<u64>,
118 limit: Option<u64>,
119 },
120 #[returns(Vec<crate::types::TaskInfo>)]
122 TasksByOwner {
123 owner_addr: String,
124 from_index: Option<u64>,
125 limit: Option<u64>,
126 },
127 #[returns(String)]
129 TaskHash { task: Box<crate::types::Task> },
130 #[returns(crate::types::SlotHashesResponse)]
132 SlotHashes { slot: Option<u64> },
133 #[returns(crate::types::SlotIdsResponse)]
135 SlotIds {
136 from_index: Option<u64>,
137 limit: Option<u64>,
138 },
139 #[returns(crate::types::SlotTasksTotalResponse)]
140 SlotTasksTotal { offset: Option<u64> },
141}