use cosmwasm_schema::{cw_serde, schemars::JsonSchema};
use cosmwasm_std::{Binary, IbcPacket};
use serde::{Deserialize, Serialize};
use crate::ibc_types::NonFungibleTokenPacketData;
#[derive(Serialize, Deserialize, JsonSchema, Clone, Debug, PartialEq)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[schemars(crate = "cosmwasm_schema::schemars")]
#[serde(crate = "cosmwasm_schema::serde")]
pub struct Ics721Memo {
pub callbacks: Option<Ics721Callbacks>,
}
#[cw_serde]
pub struct Ics721Callbacks {
pub ack_callback_data: Option<Binary>,
pub ack_callback_addr: Option<String>,
pub receive_callback_data: Option<Binary>,
pub receive_callback_addr: Option<String>,
}
#[cw_serde]
pub struct Ics721ReceiveCallbackMsg {
pub nft_contract: String,
pub original_packet: NonFungibleTokenPacketData,
pub msg: Binary,
}
#[cw_serde]
pub struct Ics721AckCallbackMsg {
pub status: Ics721Status,
pub nft_contract: String,
pub original_packet: NonFungibleTokenPacketData,
pub msg: Binary,
}
#[cw_serde]
pub enum Ics721Status {
Success,
Failed(String),
}
#[cw_serde]
pub enum ReceiverExecuteMsg {
Ics721ReceiveCallback(Ics721ReceiveCallbackMsg),
Ics721AckCallback(Ics721AckCallbackMsg),
Ics721ReceivePacketMsg {
packet: IbcPacket,
data: NonFungibleTokenPacketData,
},
}