use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::Binary;
use bs721::Expiration;
use schemars::JsonSchema;
#[cw_serde]
pub struct InstantiateMsg {
pub name: String,
pub symbol: String,
pub uri: Option<String>,
pub minter: String,
}
#[cw_serde]
pub enum ExecuteMsg<T, E> {
TransferNft { recipient: String, token_id: String },
SendNft {
contract: String,
token_id: String,
msg: Binary,
},
Approve {
spender: String,
token_id: String,
expires: Option<Expiration>,
},
Revoke { spender: String, token_id: String },
ApproveAll {
operator: String,
expires: Option<Expiration>,
},
RevokeAll { operator: String },
Mint(MintMsg<T>),
Burn { token_id: String },
Extension { msg: E },
}
#[cw_serde]
pub struct MintMsg<T> {
pub token_id: String,
pub owner: String,
pub token_uri: Option<String>,
pub seller_fee_bps: Option<u16>,
pub payment_addr: Option<String>,
pub extension: T,
}
#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg<Q: JsonSchema> {
#[returns(bs721::OwnerOfResponse)]
OwnerOf {
token_id: String,
include_expired: Option<bool>,
},
#[returns(bs721::ApprovalResponse)]
Approval {
token_id: String,
spender: String,
include_expired: Option<bool>,
},
#[returns(bs721::ApprovalsResponse)]
Approvals {
token_id: String,
include_expired: Option<bool>,
},
#[returns(bs721::OperatorsResponse)]
AllOperators {
owner: String,
include_expired: Option<bool>,
start_after: Option<String>,
limit: Option<u32>,
},
#[returns(bs721::NumTokensResponse)]
NumTokens {},
#[returns(bs721::ContractInfoResponse)]
ContractInfo {},
#[returns(bs721::NftInfoResponse<Q>)]
NftInfo { token_id: String },
#[returns(bs721::AllNftInfoResponse<Q>)]
AllNftInfo {
token_id: String,
include_expired: Option<bool>,
},
#[returns(bs721::TokensResponse)]
Tokens {
owner: String,
start_after: Option<String>,
limit: Option<u32>,
},
#[returns(bs721::TokensResponse)]
AllTokens {
start_after: Option<String>,
limit: Option<u32>,
},
#[returns(MinterResponse)]
Minter {},
#[returns(())]
Extension { msg: Q },
}
#[cw_serde]
pub struct MinterResponse {
pub minter: String,
}