croncat_sdk_core/internal_messages/
agents.rs

1use cosmwasm_schema::cw_serde;
2use cosmwasm_std::{to_binary, Addr, Binary, CosmosMsg, StdResult, WasmMsg};
3
4#[cw_serde]
5pub struct AgentOnTaskCreated {}
6
7#[cw_serde]
8pub struct AgentOnTaskCompleted {
9    pub is_block_slot_task: bool,
10    pub agent_id: Addr,
11}
12
13impl AgentOnTaskCreated {
14    /// serializes the message
15    pub fn into_binary(self) -> StdResult<Binary> {
16        let msg = NewTaskMsg::OnTaskCreated(self);
17        to_binary(&msg)
18    }
19
20    /// creates a cosmos_msg sending this struct to the named contract
21    pub fn into_cosmos_msg<T: Into<String>>(self, contract_addr: T) -> StdResult<CosmosMsg> {
22        let msg = self.into_binary()?;
23        let execute = WasmMsg::Execute {
24            contract_addr: contract_addr.into(),
25            msg,
26            funds: vec![],
27        };
28        Ok(execute.into())
29    }
30}
31
32#[cw_serde]
33enum NewTaskMsg {
34    OnTaskCreated(AgentOnTaskCreated),
35}
36#[cw_serde]
37pub struct AgentWithdrawOnRemovalArgs {
38    pub agent_id: String,
39    pub payable_account_id: String,
40}