@@ -124,9 +124,10 @@ mod types {
124
124
pub struct StateDiff {
125
125
pub storage_diffs : Vec < StorageDiff > ,
126
126
#[ serde_as( as = "Vec<RpcFelt>" ) ]
127
- pub deprecated_declared_contract_hashes : Vec < ClassHash > ,
128
- pub declared_contract_hashes : Vec < DeclaredSierraClass > ,
127
+ pub deprecated_declared_classes : Vec < ClassHash > ,
128
+ pub declared_classes : Vec < DeclaredSierraClass > ,
129
129
pub deployed_contracts : Vec < DeployedContract > ,
130
+ pub replaced_classes : Vec < ReplacedClass > ,
130
131
pub nonces : Vec < Nonce > ,
131
132
}
132
133
@@ -142,8 +143,8 @@ mod types {
142
143
. collect ( ) ;
143
144
Self {
144
145
storage_diffs,
145
- deprecated_declared_contract_hashes : state_diff. old_declared_contracts ,
146
- declared_contract_hashes : state_diff
146
+ deprecated_declared_classes : state_diff. old_declared_contracts ,
147
+ declared_classes : state_diff
147
148
. declared_classes
148
149
. into_iter ( )
149
150
. map ( Into :: into)
@@ -153,6 +154,11 @@ mod types {
153
154
. into_iter ( )
154
155
. map ( Into :: into)
155
156
. collect ( ) ,
157
+ replaced_classes : state_diff
158
+ . replaced_classes
159
+ . into_iter ( )
160
+ . map ( Into :: into)
161
+ . collect ( ) ,
156
162
nonces : state_diff
157
163
. nonces
158
164
. into_iter ( )
@@ -200,12 +206,12 @@ mod types {
200
206
. collect ( ) ;
201
207
Self {
202
208
storage_diffs,
203
- deprecated_declared_contract_hashes : diff
209
+ deprecated_declared_classes : diff
204
210
. declared_contracts
205
211
. into_iter ( )
206
212
. map ( |d| d. class_hash )
207
213
. collect ( ) ,
208
- declared_contract_hashes : diff
214
+ declared_classes : diff
209
215
. declared_sierra_classes
210
216
. into_iter ( )
211
217
. map ( Into :: into)
@@ -215,6 +221,7 @@ mod types {
215
221
. into_iter ( )
216
222
. map ( Into :: into)
217
223
. collect ( ) ,
224
+ replaced_classes : diff. replaced_classes . into_iter ( ) . map ( Into :: into) . collect ( ) ,
218
225
nonces : diff. nonces . into_iter ( ) . map ( Into :: into) . collect ( ) ,
219
226
}
220
227
}
@@ -314,6 +321,36 @@ mod types {
314
321
}
315
322
}
316
323
324
+ /// L2 state diff replaced class item.
325
+ #[ serde_with:: serde_as]
326
+ #[ derive( Clone , Debug , Serialize , PartialEq , Eq ) ]
327
+ #[ cfg_attr( any( test, feature = "rpc-full-serde" ) , derive( serde:: Deserialize ) ) ]
328
+ #[ serde( deny_unknown_fields) ]
329
+ pub struct ReplacedClass {
330
+ #[ serde_as( as = "RpcFelt251" ) ]
331
+ pub contract_address : ContractAddress ,
332
+ #[ serde_as( as = "RpcFelt" ) ]
333
+ pub class_hash : ClassHash ,
334
+ }
335
+
336
+ impl From < starknet_gateway_types:: reply:: state_update:: ReplacedClass > for ReplacedClass {
337
+ fn from ( r : starknet_gateway_types:: reply:: state_update:: ReplacedClass ) -> Self {
338
+ Self {
339
+ contract_address : r. address ,
340
+ class_hash : r. class_hash ,
341
+ }
342
+ }
343
+ }
344
+
345
+ impl From < pathfinder_storage:: types:: state_update:: ReplacedClass > for ReplacedClass {
346
+ fn from ( r : pathfinder_storage:: types:: state_update:: ReplacedClass ) -> Self {
347
+ Self {
348
+ contract_address : r. address ,
349
+ class_hash : r. class_hash ,
350
+ }
351
+ }
352
+ }
353
+
317
354
/// L2 state diff nonce item.
318
355
#[ serde_with:: serde_as]
319
356
#[ derive( Clone , Debug , Serialize , PartialEq , Eq ) ]
@@ -354,18 +391,22 @@ mod types {
354
391
value: StorageValue ( felt!( "0x55" ) ) ,
355
392
} ] ,
356
393
} ] ,
357
- deprecated_declared_contract_hashes : vec ! [
394
+ deprecated_declared_classes : vec ! [
358
395
ClassHash ( felt!( "0xcdef" ) ) ,
359
396
ClassHash ( felt!( "0xcdee" ) ) ,
360
397
] ,
361
- declared_contract_hashes : vec ! [ DeclaredSierraClass {
398
+ declared_classes : vec ! [ DeclaredSierraClass {
362
399
class_hash: SierraHash ( felt!( "0xabcd" ) ) ,
363
400
compiled_class_hash: CasmHash ( felt!( "0xdcba" ) ) ,
364
401
} ] ,
365
402
deployed_contracts : vec ! [ DeployedContract {
366
403
address: ContractAddress :: new_or_panic( felt!( "0xadd" ) ) ,
367
404
class_hash: ClassHash ( felt!( "0xcdef" ) ) ,
368
405
} ] ,
406
+ replaced_classes : vec ! [ ReplacedClass {
407
+ contract_address: ContractAddress :: new_or_panic( felt!( "0xcad" ) ) ,
408
+ class_hash: ClassHash ( felt!( "0xdac" ) ) ,
409
+ } ] ,
369
410
nonces : vec ! [ Nonce {
370
411
contract_address: ContractAddress :: new_or_panic( felt!( "0xca" ) ) ,
371
412
nonce: ContractNonce ( felt!( "0x404ce" ) ) ,
@@ -588,8 +629,8 @@ mod tests {
588
629
} ,
589
630
] ,
590
631
} ] ,
591
- deprecated_declared_contract_hashes : vec ! [ ] ,
592
- declared_contract_hashes : vec ! [ ] ,
632
+ deprecated_declared_classes : vec ! [ ] ,
633
+ declared_classes : vec ! [ ] ,
593
634
deployed_contracts : vec ! [
594
635
DeployedContract {
595
636
address: ContractAddress :: new_or_panic( felt_bytes!(
@@ -604,6 +645,7 @@ mod tests {
604
645
class_hash: ClassHash ( felt_bytes!( b"pending contract 1 hash" ) ) ,
605
646
} ,
606
647
] ,
648
+ replaced_classes : vec ! [ ] ,
607
649
nonces : vec ! [ ] ,
608
650
} ,
609
651
} ;
0 commit comments