1
1
use cosmwasm_schema:: { cw_serde, schemars:: JsonSchema } ;
2
2
use cosmwasm_std:: { Addr , Binary , ContractInfoResponse , Empty , Timestamp } ;
3
- use cw721:: { DefaultOptionalCollectionExtension , DefaultOptionalNftExtension } ;
3
+ use cw721:: { state :: Trait , DefaultOptionalCollectionExtension } ;
4
4
use cw_pause_once:: PauseOrchestrator ;
5
5
use cw_storage_plus:: { Index , IndexList , IndexedMap , Item , Map , UniqueIndex } ;
6
6
use serde:: { Deserialize , Serialize } ;
@@ -79,7 +79,22 @@ pub struct UniversalCollectionInfoResponse {
79
79
pub struct UniversalNftInfoResponse {
80
80
pub token_uri : Option < String > ,
81
81
82
- pub extension : DefaultOptionalNftExtension ,
82
+ pub extension : UniversalDefaultOptionalNftExtension ,
83
+ }
84
+
85
+ pub type UniversalDefaultOptionalNftExtension = Option < UniversalNftExtension > ;
86
+
87
+ #[ derive( Serialize , Deserialize , Default , Clone , Debug , PartialEq ) ]
88
+ pub struct UniversalNftExtension {
89
+ pub image : Option < String > ,
90
+ pub image_data : Option < String > ,
91
+ pub external_url : Option < String > ,
92
+ pub description : Option < String > ,
93
+ pub name : Option < String > ,
94
+ pub attributes : Option < Vec < Trait > > ,
95
+ pub background_color : Option < String > ,
96
+ pub animation_url : Option < String > ,
97
+ pub youtube_url : Option < String > ,
83
98
}
84
99
85
100
/// Collection data send by ICS721 on source chain. It is an optional class data for interchain transfer to target chain.
@@ -133,20 +148,21 @@ impl<'a> IndexList<ClassIdInfo> for ClassIdInfoIndexes<'a> {
133
148
#[ cfg( test) ]
134
149
mod tests {
135
150
use cosmwasm_std:: { from_json, to_json_binary} ;
136
- use cw721:: { DefaultOptionalNftExtension , NftExtension } ;
151
+
152
+ use crate :: state:: { UniversalDefaultOptionalNftExtension , UniversalNftExtension } ;
137
153
138
154
use super :: UniversalAllNftInfoResponse ;
139
155
140
156
#[ test]
141
157
fn test_universal_deserialize ( ) {
142
- let start = cw721:: msg:: AllNftInfoResponse :: < DefaultOptionalNftExtension > {
158
+ let start = cw721:: msg:: AllNftInfoResponse :: < UniversalDefaultOptionalNftExtension > {
143
159
access : cw721:: msg:: OwnerOfResponse {
144
160
owner : "foo" . to_string ( ) ,
145
161
approvals : vec ! [ ] ,
146
162
} ,
147
163
info : cw721:: msg:: NftInfoResponse {
148
164
token_uri : None ,
149
- extension : Some ( NftExtension {
165
+ extension : Some ( UniversalNftExtension {
150
166
..Default :: default ( )
151
167
} ) ,
152
168
} ,
@@ -158,7 +174,7 @@ mod tests {
158
174
assert_eq ! ( end. info. token_uri, None ) ;
159
175
assert_eq ! (
160
176
end. info. extension,
161
- Some ( NftExtension {
177
+ Some ( UniversalNftExtension {
162
178
..Default :: default ( )
163
179
} )
164
180
)
0 commit comments