@@ -40,6 +40,7 @@ import {
4040import * as AccountAddress from './types/AccountAddress.js' ;
4141import * as CcdAmount from './types/CcdAmount.js' ;
4242import { DataBlob } from './types/DataBlob.js' ;
43+ import * as InitName from './types/InitName.js' ;
4344import * as Parameter from './types/Parameter.js' ;
4445import * as ReceiveName from './types/ReceiveName.js' ;
4546
@@ -259,8 +260,26 @@ export class InitContractHandler implements AccountTransactionHandler<InitContra
259260 return Buffer . concat ( [ serializedAmount , serializedModuleRef , serializedInitName , serializedParameters ] ) ;
260261 }
261262
262- deserialize ( ) : InitContractPayload {
263- throw new Error ( 'deserialize not supported' ) ;
263+ deserialize ( serializePayload : Cursor ) : InitContractPayload {
264+ const amount = serializePayload . read ( 8 ) . readBigUInt64BE ( 0 ) ;
265+ const moduleRef = serializePayload . read ( 32 ) ;
266+
267+ const initNameLength = serializePayload . read ( 2 ) . readUInt16BE ( 0 ) ;
268+ const initName = serializePayload . read ( initNameLength ) ;
269+ const initNameAfterConversion = InitName . fromString ( initName . toString ( 'utf8' ) ) ;
270+
271+ const paramLength = serializePayload . read ( 2 ) . readUInt16BE ( 0 ) ;
272+ const param = serializePayload . read ( paramLength ) ;
273+ const paramBuffer = Parameter . fromBuffer ( param . buffer ) ;
274+
275+ return {
276+ amount : CcdAmount . fromMicroCcd ( amount ) ,
277+ moduleRef : ModuleReference . fromBuffer ( moduleRef ) ,
278+ initName : ContractName . fromInitName ( initNameAfterConversion ) ,
279+ param : paramBuffer ,
280+ //The execution energy cannot be recovered as it is not part of the payload serialization
281+ maxContractExecutionEnergy : Energy . create ( 0n ) ,
282+ } ;
264283 }
265284
266285 toJSON ( payload : InitContractPayload ) : InitContractPayloadJSON {
0 commit comments