coreum_wasm_sdk/deprecated/
nft.rs

1use cosmwasm_schema::QueryResponses;
2use cosmwasm_std::Binary;
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6use crate::deprecated::pagination::{PageRequest, PageResponse};
7
8#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
9#[serde(rename_all = "snake_case")]
10pub struct NFT {
11    pub class_id: String,
12    pub id: String,
13    pub uri: Option<String>,
14    pub uri_hash: Option<String>,
15    pub data: Option<Binary>,
16}
17
18#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
19#[serde(rename_all = "snake_case")]
20pub struct Class {
21    pub id: String,
22    pub name: Option<String>,
23    pub symbol: Option<String>,
24    pub description: Option<String>,
25    pub uri: Option<String>,
26    pub uri_hash: Option<String>,
27    pub data: Option<Binary>,
28}
29
30#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
31#[serde(rename_all = "snake_case")]
32pub struct BalanceResponse {
33    pub amount: u64,
34}
35
36#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
37#[serde(rename_all = "snake_case")]
38pub struct OwnerResponse {
39    pub owner: String,
40}
41
42#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
43#[serde(rename_all = "snake_case")]
44pub struct SupplyResponse {
45    pub amount: u64,
46}
47
48#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
49#[serde(rename_all = "snake_case")]
50pub struct NFTResponse {
51    pub nft: NFT,
52}
53
54#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
55#[serde(rename_all = "snake_case")]
56pub struct NFTsResponse {
57    pub nfts: Vec<NFT>,
58    pub pagination: PageResponse,
59}
60
61#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
62#[serde(rename_all = "snake_case")]
63pub struct ClassResponse {
64    pub class: Class,
65}
66
67#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
68#[serde(rename_all = "snake_case")]
69pub struct ClassesResponse {
70    pub classes: Vec<Class>,
71    pub pagination: PageResponse,
72}
73
74#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
75pub enum Msg {
76    Send {
77        class_id: String,
78        id: String,
79        receiver: String,
80    },
81}
82
83#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema, QueryResponses)]
84pub enum Query {
85    #[returns(BalanceResponse)]
86    Balance { class_id: String, owner: String },
87
88    #[returns(OwnerResponse)]
89    Owner { class_id: String, id: String },
90
91    #[returns(SupplyResponse)]
92    Supply { class_id: String },
93
94    #[returns(NFTResponse)]
95    NFT { class_id: String, id: String },
96
97    #[returns(NFTsResponse)]
98    NFTs {
99        class_id: Option<String>,
100        owner: Option<String>,
101        pagination: Option<PageRequest>,
102    },
103
104    #[returns(ClassResponse)]
105    Class { class_id: String },
106
107    #[returns(ClassesResponse)]
108    Classes { pagination: Option<PageRequest> },
109}