coreum_wasm_sdk/deprecated/
assetnft.rs

1use cosmwasm_schema::QueryResponses;
2use cosmwasm_std::{Binary, Coin};
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6use crate::deprecated::pagination::{PageRequest, PageResponse};
7
8pub const BURNING: u32 = 0;
9pub const FREEZING: u32 = 1;
10pub const WHITELISTING: u32 = 2;
11pub const DISABLE_SENDING: u32 = 3;
12pub const SOULBOUND: u32 = 4;
13
14#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
15#[serde(rename_all = "snake_case")]
16pub struct Params {
17    pub mint_fee: Coin,
18}
19
20#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
21#[serde(rename_all = "snake_case")]
22pub struct ParamsResponse {
23    pub params: Params,
24}
25
26#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
27#[serde(rename_all = "snake_case")]
28pub struct Class {
29    pub id: String,
30    pub issuer: String,
31    pub name: String,
32    pub symbol: String,
33    pub description: Option<String>,
34    pub uri: Option<String>,
35    pub uri_hash: Option<String>,
36    pub data: Option<Binary>,
37    pub features: Option<Vec<u32>>,
38    pub royalty_rate: Option<String>,
39}
40
41#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
42#[serde(rename_all = "snake_case")]
43pub struct ClassResponse {
44    pub class: Class,
45}
46
47#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
48#[serde(rename_all = "snake_case")]
49pub struct ClassesResponse {
50    pub pagination: PageResponse,
51    pub classes: Vec<Class>,
52}
53
54#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
55#[serde(rename_all = "snake_case")]
56pub struct FrozenResponse {
57    pub frozen: bool,
58}
59
60#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
61#[serde(rename_all = "snake_case")]
62pub struct ClassFrozenResponse {
63    pub frozen: bool,
64}
65
66#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
67#[serde(rename_all = "snake_case")]
68pub struct ClassFrozenAccountsResponse {
69    pub pagination: PageResponse,
70    pub accounts: Vec<String>,
71}
72
73#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
74#[serde(rename_all = "snake_case")]
75pub struct WhitelistedResponse {
76    pub whitelisted: bool,
77}
78
79#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
80#[serde(rename_all = "snake_case")]
81pub struct WhitelistedAccountsForNFTResponse {
82    pub pagination: PageResponse,
83    pub accounts: Vec<String>,
84}
85
86#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
87#[serde(rename_all = "snake_case")]
88pub struct ClassWhitelistedAccountsResponse {
89    pub pagination: PageResponse,
90    pub accounts: Vec<String>,
91}
92
93#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
94#[serde(rename_all = "snake_case")]
95pub struct BurntNFTResponse {
96    pub burnt: bool,
97}
98
99#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
100#[serde(rename_all = "snake_case")]
101pub struct BurntNFTsInClassResponse {
102    pub pagination: PageResponse,
103    pub nft_ids: Vec<String>,
104}
105
106#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
107pub enum Msg {
108    IssueClass {
109        name: String,
110        symbol: String,
111        description: Option<String>,
112        uri: Option<String>,
113        uri_hash: Option<String>,
114        data: Option<Binary>,
115        features: Option<Vec<u32>>,
116        royalty_rate: Option<String>,
117    },
118    Mint {
119        class_id: String,
120        id: String,
121        uri: Option<String>,
122        uri_hash: Option<String>,
123        data: Option<Binary>,
124        recipient: Option<String>,
125    },
126    Burn {
127        class_id: String,
128        id: String,
129    },
130    Freeze {
131        class_id: String,
132        id: String,
133    },
134    Unfreeze {
135        class_id: String,
136        id: String,
137    },
138    ClassFreeze {
139        class_id: String,
140        account: String,
141    },
142    ClassUnfreeze {
143        class_id: String,
144        account: String,
145    },
146    AddToWhitelist {
147        class_id: String,
148        id: String,
149        account: String,
150    },
151    RemoveFromWhitelist {
152        class_id: String,
153        id: String,
154        account: String,
155    },
156    AddToClassWhitelist {
157        class_id: String,
158        account: String,
159    },
160    RemoveFromClassWhitelist {
161        class_id: String,
162        account: String,
163    },
164}
165
166#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema, QueryResponses)]
167pub enum Query {
168    #[returns(ParamsResponse)]
169    Params {},
170
171    #[returns(ClassResponse)]
172    Class { id: String },
173
174    #[returns(ClassesResponse)]
175    Classes {
176        pagination: Option<PageRequest>,
177        issuer: String,
178    },
179
180    #[returns(FrozenResponse)]
181    Frozen { id: String, class_id: String },
182
183    #[returns(ClassFrozenResponse)]
184    ClassFrozen { class_id: String, account: String },
185
186    #[returns(ClassFrozenAccountsResponse)]
187    ClassFrozenAccounts {
188        pagination: Option<PageRequest>,
189        class_id: String,
190    },
191
192    #[returns(WhitelistedResponse)]
193    Whitelisted {
194        id: String,
195        class_id: String,
196        account: String,
197    },
198
199    #[returns(WhitelistedAccountsForNFTResponse)]
200    WhitelistedAccountsForNFT {
201        pagination: Option<PageRequest>,
202        id: String,
203        class_id: String,
204    },
205
206    #[returns(ClassWhitelistedAccountsResponse)]
207    ClassWhitelistedAccounts {
208        pagination: Option<PageRequest>,
209        class_id: String,
210    },
211
212    #[returns(BurntNFTResponse)]
213    BurntNFT { class_id: String, nft_id: String },
214
215    #[returns(BurntNFTsInClassResponse)]
216    BurntNFTsInClass {
217        pagination: Option<PageRequest>,
218        class_id: String,
219    },
220}