use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::Uint128;
use cw_utils::Expiration;
use crate::msg::TokenId;
#[cw_serde]
#[derive(QueryResponses)]
pub enum Cw1155QueryMsg {
#[returns(BalanceResponse)]
Balance { owner: String, token_id: TokenId },
#[returns(BatchBalanceResponse)]
BatchBalance {
owner: String,
token_ids: Vec<TokenId>,
},
#[returns(ApprovedForAllResponse)]
ApprovedForAll {
owner: String,
include_expired: Option<bool>,
start_after: Option<String>,
limit: Option<u32>,
},
#[returns(IsApprovedForAllResponse)]
IsApprovedForAll { owner: String, operator: String },
#[returns(TokenInfoResponse)]
TokenInfo { token_id: TokenId },
#[returns(TokensResponse)]
Tokens {
owner: String,
start_after: Option<String>,
limit: Option<u32>,
},
#[returns(TokensResponse)]
AllTokens {
start_after: Option<String>,
limit: Option<u32>,
},
}
#[cw_serde]
pub struct BalanceResponse {
pub balance: Uint128,
}
#[cw_serde]
pub struct BatchBalanceResponse {
pub balances: Vec<Uint128>,
}
#[cw_serde]
pub struct Approval {
pub spender: String,
pub expires: Expiration,
}
#[cw_serde]
pub struct ApprovedForAllResponse {
pub operators: Vec<Approval>,
}
#[cw_serde]
pub struct IsApprovedForAllResponse {
pub approved: bool,
}
#[cw_serde]
pub struct TokenInfoResponse {
pub url: String,
}
#[cw_serde]
pub struct TokensResponse {
pub tokens: Vec<TokenId>,
}