@@ -19,6 +19,8 @@ import {
1919 mintNonFungibleTokenParametersNormalised ,
2020 transferNonFungibleTokenWithAllowanceParameters ,
2121 transferNonFungibleTokenWithAllowanceParametersNormalised ,
22+ transferNonFungibleTokenParameters ,
23+ transferNonFungibleTokenParametersNormalised ,
2224 transferFungibleTokenWithAllowanceParameters ,
2325 transferFungibleTokenWithAllowanceParametersNormalised ,
2426 updateTokenParameters ,
@@ -156,7 +158,7 @@ export default class HederaParameterNormaliser {
156158 // Normalize scheduling parameters (if present and isScheduled = true)
157159 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
158160 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
159- . schedulingParams
161+ . schedulingParams
160162 : { isScheduled : false } ;
161163
162164 return {
@@ -206,7 +208,7 @@ export default class HederaParameterNormaliser {
206208 // Normalize scheduling parameters (if present and isScheduled = true)
207209 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
208210 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
209- . schedulingParams
211+ . schedulingParams
210212 : { isScheduled : false } ;
211213
212214 return {
@@ -261,7 +263,7 @@ export default class HederaParameterNormaliser {
261263 // Normalize scheduling parameters (if present and isScheduled = true)
262264 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
263265 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
264- . schedulingParams
266+ . schedulingParams
265267 : { isScheduled : false } ;
266268
267269 return {
@@ -448,6 +450,44 @@ export default class HederaParameterNormaliser {
448450 } ;
449451 }
450452
453+ static async normaliseTransferNonFungibleToken (
454+ params : z . infer < ReturnType < typeof transferNonFungibleTokenParameters > > ,
455+ context : Context ,
456+ client : Client ,
457+ ) : Promise < z . infer < ReturnType < typeof transferNonFungibleTokenParametersNormalised > > > {
458+ // Validate input using schema
459+ const parsedParams : z . infer < ReturnType < typeof transferNonFungibleTokenParameters > > =
460+ this . parseParamsWithSchema ( params , transferNonFungibleTokenParameters , context ) ;
461+
462+ // Resolve sender account (defaults to operator)
463+ const senderAccountId = AccountResolver . getDefaultAccount ( context , client ) ;
464+ if ( ! senderAccountId ) {
465+ throw new Error ( 'Could not determine sender account ID' ) ;
466+ }
467+
468+ // Convert tokenId to SDK TokenId
469+ const tokenId = TokenId . fromString ( parsedParams . tokenId ) ;
470+
471+ // Map recipients to normalized NFT transfers
472+ const transfers = parsedParams . recipients . map ( recipient => ( {
473+ nftId : new NftId ( tokenId , Number ( recipient . serialNumber ) ) ,
474+ receiver : AccountId . fromString ( recipient . recipientId ) ,
475+ } ) ) ;
476+
477+ // Normalize scheduling parameters (if present and isScheduled = true)
478+ const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
479+ ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
480+ . schedulingParams
481+ : { isScheduled : false } ;
482+
483+ return {
484+ senderAccountId : AccountId . fromString ( senderAccountId ) ,
485+ transactionMemo : parsedParams . transactionMemo ,
486+ transfers,
487+ schedulingParams,
488+ } ;
489+ }
490+
451491 static async normaliseApproveTokenAllowance (
452492 params : z . infer < ReturnType < typeof approveTokenAllowanceParameters > > ,
453493 context : Context ,
@@ -549,7 +589,7 @@ export default class HederaParameterNormaliser {
549589 // Normalize scheduling parameters (if present and isScheduled = true)
550590 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
551591 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
552- . schedulingParams
592+ . schedulingParams
553593 : { isScheduled : false } ;
554594
555595 return {
@@ -755,7 +795,7 @@ export default class HederaParameterNormaliser {
755795 // Normalize scheduling parameters (if present and isScheduled = true)
756796 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
757797 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
758- . schedulingParams
798+ . schedulingParams
759799 : { isScheduled : false } ;
760800
761801 return {
@@ -793,7 +833,7 @@ export default class HederaParameterNormaliser {
793833 // Normalize scheduling parameters (if present and isScheduled = true)
794834 const schedulingParams = parsedParams . schedulingParams ?. isScheduled
795835 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
796- . schedulingParams
836+ . schedulingParams
797837 : { isScheduled : false } ;
798838
799839 return {
@@ -859,7 +899,7 @@ export default class HederaParameterNormaliser {
859899 // Normalize scheduling parameters (if present and isScheduled = true)
860900 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
861901 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
862- . schedulingParams
902+ . schedulingParams
863903 : { isScheduled : false } ;
864904
865905 return {
@@ -897,7 +937,7 @@ export default class HederaParameterNormaliser {
897937 // Normalize scheduling parameters (if present and isScheduled = true)
898938 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
899939 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
900- . schedulingParams
940+ . schedulingParams
901941 : { isScheduled : false } ;
902942
903943 return {
@@ -929,7 +969,7 @@ export default class HederaParameterNormaliser {
929969 // Normalize scheduling parameters (if present and isScheduled = true)
930970 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
931971 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
932- . schedulingParams
972+ . schedulingParams
933973 : { isScheduled : false } ;
934974
935975 return {
@@ -953,7 +993,7 @@ export default class HederaParameterNormaliser {
953993 // Normalize scheduling parameters (if present and isScheduled = true)
954994 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
955995 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
956- . schedulingParams
996+ . schedulingParams
957997 : { isScheduled : false } ;
958998
959999 return {
@@ -993,7 +1033,7 @@ export default class HederaParameterNormaliser {
9931033 // Normalize scheduling parameters (if present and isScheduled = true)
9941034 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
9951035 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
996- . schedulingParams
1036+ . schedulingParams
9971037 : { isScheduled : false } ;
9981038
9991039 return {
@@ -1039,7 +1079,7 @@ export default class HederaParameterNormaliser {
10391079 // Normalize scheduling parameters (if present and isScheduled = true)
10401080 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
10411081 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
1042- . schedulingParams
1082+ . schedulingParams
10431083 : { isScheduled : false } ;
10441084
10451085 return {
@@ -1078,7 +1118,7 @@ export default class HederaParameterNormaliser {
10781118 // Normalize scheduling parameters (if present and isScheduled = true)
10791119 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
10801120 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
1081- . schedulingParams
1121+ . schedulingParams
10821122 : { isScheduled : false } ;
10831123
10841124 return {
@@ -1146,7 +1186,7 @@ export default class HederaParameterNormaliser {
11461186 // Normalize scheduling parameters (if present and isScheduled = true)
11471187 const schedulingParams = parsedParams ?. schedulingParams ?. isScheduled
11481188 ? ( await this . normaliseScheduledTransactionParams ( parsedParams , context , client ) )
1149- . schedulingParams
1189+ . schedulingParams
11501190 : { isScheduled : false } ;
11511191
11521192 return {
0 commit comments