use cosmwasm_std::{Binary, CosmosMsg, HumanAddr, StdResult};
use hermit_toolkit_utils::HandleCallback;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::contract::BLOCK_SIZE;
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
#[serde(rename_all = "snake_case")]
pub enum Snip721ReceiveMsg {
ReceiveNft {
sender: HumanAddr,
token_id: String,
msg: Option<Binary>,
},
BatchReceiveNft {
sender: HumanAddr,
from: HumanAddr,
token_ids: Vec<String>,
msg: Option<Binary>,
},
}
impl HandleCallback for Snip721ReceiveMsg {
const BLOCK_SIZE: usize = BLOCK_SIZE;
}
pub fn receive_nft_msg(
sender: HumanAddr,
token_id: String,
msg: Option<Binary>,
callback_code_hash: String,
contract_addr: HumanAddr,
) -> StdResult<CosmosMsg> {
let msg = Snip721ReceiveMsg::ReceiveNft {
sender,
token_id,
msg,
};
msg.to_cosmos_msg(callback_code_hash, contract_addr, None)
}
pub fn batch_receive_nft_msg(
sender: HumanAddr,
from: HumanAddr,
token_ids: Vec<String>,
msg: Option<Binary>,
callback_code_hash: String,
contract_addr: HumanAddr,
) -> StdResult<CosmosMsg> {
let msg = Snip721ReceiveMsg::BatchReceiveNft {
sender,
from,
token_ids,
msg,
};
msg.to_cosmos_msg(callback_code_hash, contract_addr, None)
}