diff --git a/modules/sdk-coin-canton/src/lib/utils.ts b/modules/sdk-coin-canton/src/lib/utils.ts index c5d94cf8bb..13cecca6a3 100644 --- a/modules/sdk-coin-canton/src/lib/utils.ts +++ b/modules/sdk-coin-canton/src/lib/utils.ts @@ -352,13 +352,13 @@ export class Utils implements BaseUtils { } case TransactionType.CosignDelegationAccept: { - // exercise CosignDelegationProposal_Accept → actingParties[0] = signer (sender) - const signerParty = findExerciseActingParty('CosignDelegationProposal_Accept'); + // exercise CosigningDelegationProposal_Accept → actingParties[0] = signer (sender) + const signerParty = findExerciseActingParty('CosigningDelegationProposal_Accept'); if (signerParty) sender = signerParty; - // CosignDelegationProposal create node → admin = receiver - const proposalFields = findCreateNodeFields('CosignDelegationProposal'); - if (proposalFields) { - const adminData = getField(proposalFields, 'admin'); + // CosigningDelegation create node (result of the accept) → admin = receiver + const delegationFields = findCreateNodeFields('CosigningDelegation'); + if (delegationFields) { + const adminData = getField(delegationFields, 'admin'); if (adminData?.oneofKind === 'party') receiver = adminData.party ?? ''; } amount = '0'; diff --git a/modules/sdk-coin-canton/test/resources.ts b/modules/sdk-coin-canton/test/resources.ts index dc8718040f..d1774789a0 100644 --- a/modules/sdk-coin-canton/test/resources.ts +++ b/modules/sdk-coin-canton/test/resources.ts @@ -348,3 +348,14 @@ export const CantonCreateCommandPrepareResponse = { preparedTransactionHash: 'xn2fK57XUY7MFHWAsppKczOkgUYx//0VyMC1jBNbuPI=', hashingSchemeVersion: 'HASHING_SCHEME_VERSION_V2', }; + +export const CosignDelegationAcceptPrepareResponse = { + preparedTransaction: + 'CqcPCgMyLjESATAaygYKATHCPsMGCsAGCgMyLjESQjAwMWJkYTEwYzA4ZTFmNDVlZTVlZTFlMmFjYmUzOTkwNGJhMWJmOTczNmM4MTRiYTgxNDNjMWQyNGY2ZTYyODkwNxoPdHJhZGV3ZWItZGFkLXYxIm4KQDgyYzEwNzVhMzA3NTFlOTEzYTBlNzcxM2M0MDVlNmZjOWVjZGIzNmEwMTI1NDVlMWY4YjMxMDA0MDdiYjQ4ZTMSFVRXLk9wZXJhdG9yLlYxLkNvc2lnbhoTQ29zaWduaW5nRGVsZWdhdGlvbiqtAnKqAgpuCkA4MmMxMDc1YTMwNzUxZTkxM2EwZTc3MTNjNDA1ZTZmYzllY2RiMzZhMDEyNTQ1ZTFmOGIzMTAwNDA3YmI0OGUzEhVUVy5PcGVyYXRvci5WMS5Db3NpZ24aE0Nvc2lnbmluZ0RlbGVnYXRpb24SXwoFYWRtaW4SVjpUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyElcKBnNpZ25lchJNOksxMjIwODo6MTIyMDgzMDgyZTlhZjE1NmZlYWViN2FmZDM2M2EwZWU1ZmZhMWZkMTYwOTQ3YjY0N2ExMzlhN2UwYzJlZDc4ZjVkYzcySzEyMjA4OjoxMjIwODMwODJlOWFmMTU2ZmVhZWI3YWZkMzYzYTBlZTVmZmExZmQxNjA5NDdiNjQ3YTEzOWE3ZTBjMmVkNzhmNWRjNzJUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyOksxMjIwODo6MTIyMDgzMDgyZTlhZjE1NmZlYWViN2FmZDM2M2EwZWU1ZmZhMWZkMTYwOTQ3YjY0N2ExMzlhN2UwYzJlZDc4ZjVkYzc6VHJhdmktbmV3LXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMhqFCAoBMMI+/gca+wcKAzIuMRKKATAwNTBjNjIzMmQzOWU1ZDFlNGQ5MTZiMmRiZTlkM2Q2NGFkZTc0YjQyZDliOTQyODkxNjhiMTM4NmE1NjNkYTU5MWNhMTIxMjIwNTMyMDdhYWFkYmZiYThlYTQ5NGY5NWVhY2IxMTA4YzVhZjc2ZWZiNDk5ODk3MWYyYzljZDc2NTk1NjU3NzA4NBoPdHJhZGV3ZWItZGFkLXYxInYKQDgyYzEwNzVhMzA3NTFlOTEzYTBlNzcxM2M0MDVlNmZjOWVjZGIzNmEwMTI1NDVlMWY4YjMxMDA0MDdiYjQ4ZTMSFVRXLk9wZXJhdG9yLlYxLkNvc2lnbhobQ29zaWduaW5nRGVsZWdhdGlvblByb3Bvc2FsKlRyYXZpLW5ldy1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIySzEyMjA4OjoxMjIwODMwODJlOWFmMTU2ZmVhZWI3YWZkMzYzYTBlZTVmZmExZmQxNjA5NDdiNjQ3YTEzOWE3ZTBjMmVkNzhmNWRjNzJUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyOksxMjIwODo6MTIyMDgzMDgyZTlhZjE1NmZlYWViN2FmZDM2M2EwZWU1ZmZhMWZkMTYwOTQ3YjY0N2ExMzlhN2UwYzJlZDc4ZjVkYzdKIkNvc2lnbmluZ0RlbGVnYXRpb25Qcm9wb3NhbF9BY2NlcHRSgQFyfwp9CkA4MmMxMDc1YTMwNzUxZTkxM2EwZTc3MTNjNDA1ZTZmYzllY2RiMzZhMDEyNTQ1ZTFmOGIzMTAwNDA3YmI0OGUzEhVUVy5PcGVyYXRvci5WMS5Db3NpZ24aIkNvc2lnbmluZ0RlbGVnYXRpb25Qcm9wb3NhbF9BY2NlcHRYAWIBMWrqAXLnAQqEAQpAODJjMTA3NWEzMDc1MWU5MTNhMGU3NzEzYzQwNWU2ZmM5ZWNkYjM2YTAxMjU0NWUxZjhiMzEwMDQwN2JiNDhlMxIVVFcuT3BlcmF0b3IuVjEuQ29zaWduGilDb3NpZ25pbmdEZWxlZ2F0aW9uUHJvcG9zYWxfQWNjZXB0X1Jlc3VsdBJeChZjb3NpZ25pbmdEZWxlZ2F0aW9uQ2lkEkRKQjAwMWJkYTEwYzA4ZTFmNDVlZTVlZTFlMmFjYmUzOTkwNGJhMWJmOTczNmM4MTRiYTgxNDNjMWQyNGY2ZTYyODkwNyIiEiDexREPEP5Xv4zbEY2fCbOcVZi0Df7jF2cc4nnu2wJtsSIkCAESIJs7xUanIWWT1wZipHMBsulvXBnAE6R1amIRgSwCiBjUEr0NEnMKSzEyMjA4OjoxMjIwODMwODJlOWFmMTU2ZmVhZWI3YWZkMzYzYTBlZTVmZmExZmQxNjA5NDdiNjQ3YTEzOWE3ZTBjMmVkNzhmNWRjNxIkYTQyOTIyNTQtMzYxMC00ZGMyLTkzZTAtNTkwOGZiOWNjZTFmGlNnbG9iYWwtZG9tYWluOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYSokNTBiNWRkODAtYWFhOS00YzJlLTkzNjMtNTUzOTA1NjFlMWU1MKjThsOO/JQDOsELCswGCgMyLjESigEwMDUwYzYyMzJkMzllNWQxZTRkOTE2YjJkYmU5ZDNkNjRhZGU3NGI0MmQ5Yjk0Mjg5MTY4YjEzODZhNTYzZGE1OTFjYTEyMTIyMDUzMjA3YWFhZGJmYmE4ZWE0OTRmOTVlYWNiMTEwOGM1YWY3NmVmYjQ5OTg5NzFmMmM5Y2Q3NjU5NTY1NzcwODQaD3RyYWRld2ViLWRhZC12MSJ2CkA4MmMxMDc1YTMwNzUxZTkxM2EwZTc3MTNjNDA1ZTZmYzllY2RiMzZhMDEyNTQ1ZTFmOGIzMTAwNDA3YmI0OGUzEhVUVy5PcGVyYXRvci5WMS5Db3NpZ24aG0Nvc2lnbmluZ0RlbGVnYXRpb25Qcm9wb3NhbCq1AnKyAgp2CkA4MmMxMDc1YTMwNzUxZTkxM2EwZTc3MTNjNDA1ZTZmYzllY2RiMzZhMDEyNTQ1ZTFmOGIzMTAwNDA3YmI0OGUzEhVUVy5PcGVyYXRvci5WMS5Db3NpZ24aG0Nvc2lnbmluZ0RlbGVnYXRpb25Qcm9wb3NhbBJfCgVhZG1pbhJWOlRyYXZpLW5ldy1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDISVwoGc2lnbmVyEk06SzEyMjA4OjoxMjIwODMwODJlOWFmMTU2ZmVhZWI3YWZkMzYzYTBlZTVmZmExZmQxNjA5NDdiNjQ3YTEzOWE3ZTBjMmVkNzhmNWRjNzJUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyOksxMjIwODo6MTIyMDgzMDgyZTlhZjE1NmZlYWViN2FmZDM2M2EwZWU1ZmZhMWZkMTYwOTQ3YjY0N2ExMzlhN2UwYzJlZDc4ZjVkYzc6VHJhdmktbmV3LXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMsA+ttP6pP/7lAPSPuQECgMyLjES3AQKRQBQxiMtOeXR5NkWstvp09ZK3nS0LZuUKJFosThqVj2lkcoSEiBTIHqq2/uo6klPlerLEQjFr3bvtJmJcfLJzXZZVldwhBIPdHJhZGV3ZWItZGFkLXYxGnkKQDgyYzEwNzVhMzA3NTFlOTEzYTBlNzcxM2M0MDVlNmZjOWVjZGIzNmEwMTI1NDVlMWY4YjMxMDA0MDdiYjQ4ZTMSAlRXEghPcGVyYXRvchICVjESBkNvc2lnbhobQ29zaWduaW5nRGVsZWdhdGlvblByb3Bvc2FsIq4BaqsBClgKVjpUcmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyCk8KTTpLMTIyMDg6OjEyMjA4MzA4MmU5YWYxNTZmZWFlYjdhZmQzNjNhMGVlNWZmYTFmZDE2MDk0N2I2NDdhMTM5YTdlMGMyZWQ3OGY1ZGM3KlRyYXZpLW5ldy1wYXJ0eTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDIySzEyMjA4OjoxMjIwODMwODJlOWFmMTU2ZmVhZWI3YWZkMzYzYTBlZTVmZmExZmQxNjA5NDdiNjQ3YTEzOWE3ZTBjMmVkNzhmNWRjNzm2qZ7031MGAEIqCiYKJAgBEiBDS185jpVaGFmJ2vX54nF3ZtTWTXiSUFXL/dL5ESXNlhAe', + preparedTransactionHash: 'd6iTd+VjYA/cJw7pj+CaKVSs0MqMXV9LZNU45Ij1188=', + hashingSchemeVersion: 'HASHING_SCHEME_VERSION_V2', + hashingDetails: null, +}; + +export const CosignDelegationAcceptRawTransaction = + 'eyJwcmVwYXJlQ29tbWFuZFJlc3BvbnNlIjp7InByZXBhcmVkVHJhbnNhY3Rpb24iOiJDcWNQQ2dNeUxqRVNBVEFheWdZS0FUSENQc01HQ3NBR0NnTXlMakVTUWpBd01XSmtZVEV3WXpBNFpURm1ORFZsWlRWbFpURmxNbUZqWW1Vek9Ua3dOR0poTVdKbU9UY3pObU00TVRSaVlUZ3hORE5qTVdReU5HWTJaVFl5T0Rrd054b1BkSEpoWkdWM1pXSXRaR0ZrTFhZeEltNEtRRGd5WXpFd056VmhNekEzTlRGbE9URXpZVEJsTnpjeE0yTTBNRFZsTm1aak9XVmpaR0l6Tm1Fd01USTFORFZsTVdZNFlqTXhNREEwTURkaVlqUTRaVE1TRlZSWExrOXdaWEpoZEc5eUxsWXhMa052YzJsbmJob1RRMjl6YVdkdWFXNW5SR1ZzWldkaGRHbHZiaXF0QW5LcUFncHVDa0E0TW1NeE1EYzFZVE13TnpVeFpUa3hNMkV3WlRjM01UTmpOREExWlRabVl6bGxZMlJpTXpaaE1ERXlOVFExWlRGbU9HSXpNVEF3TkRBM1ltSTBPR1V6RWhWVVZ5NVBjR1Z5WVhSdmNpNVdNUzVEYjNOcFoyNGFFME52YzJsbmJtbHVaMFJsYkdWbllYUnBiMjRTWHdvRllXUnRhVzRTVmpwVWNtRjJhUzF1WlhjdGNHRnlkSGs2T2pFeU1qQTVNbVUzWkRNellXTXhNR013WmpOa05UVTVOell6TkRKbU16YzFOVFZrWmpBMVpHRTFZamMwTWprMU5tUTFObUUyTW1GbE1qTTJOemMyT1RBM09XUXlFbGNLQm5OcFoyNWxjaEpOT2tzeE1qSXdPRG82TVRJeU1EZ3pNRGd5WlRsaFpqRTFObVpsWVdWaU4yRm1aRE0yTTJFd1pXVTFabVpoTVdaa01UWXdPVFEzWWpZME4yRXhNemxoTjJVd1l6SmxaRGM0WmpWa1l6Y3lTekV5TWpBNE9qb3hNakl3T0RNd09ESmxPV0ZtTVRVMlptVmhaV0kzWVdaa016WXpZVEJsWlRWbVptRXhabVF4TmpBNU5EZGlOalEzWVRFek9XRTNaVEJqTW1Wa056aG1OV1JqTnpKVWNtRjJhUzF1WlhjdGNHRnlkSGs2T2pFeU1qQTVNbVUzWkRNellXTXhNR013WmpOa05UVTVOell6TkRKbU16YzFOVFZrWmpBMVpHRTFZamMwTWprMU5tUTFObUUyTW1GbE1qTTJOemMyT1RBM09XUXlPa3N4TWpJd09EbzZNVEl5TURnek1EZ3laVGxoWmpFMU5tWmxZV1ZpTjJGbVpETTJNMkV3WldVMVptWmhNV1prTVRZd09UUTNZalkwTjJFeE16bGhOMlV3WXpKbFpEYzRaalZrWXpjNlZISmhkbWt0Ym1WM0xYQmhjblI1T2pveE1qSXdPVEpsTjJRek0yRmpNVEJqTUdZelpEVTFPVGMyTXpReVpqTTNOVFUxWkdZd05XUmhOV0kzTkRJNU5UWmtOVFpoTmpKaFpUSXpOamMzTmprd056bGtNaHFGQ0FvQk1NSSsvZ2NhK3djS0F6SXVNUktLQVRBd05UQmpOakl6TW1Rek9XVTFaREZsTkdRNU1UWmlNbVJpWlRsa00yUTJOR0ZrWlRjMFlqUXlaRGxpT1RReU9Ea3hOamhpTVRNNE5tRTFOak5rWVRVNU1XTmhNVEl4TWpJd05UTXlNRGRoWVdGa1ltWmlZVGhsWVRRNU5HWTVOV1ZoWTJJeE1UQTRZelZoWmpjMlpXWmlORGs1T0RrM01XWXlZemxqWkRjMk5UazFOalUzTnpBNE5Cb1BkSEpoWkdWM1pXSXRaR0ZrTFhZeEluWUtRRGd5WXpFd056VmhNekEzTlRGbE9URXpZVEJsTnpjeE0yTTBNRFZsTm1aak9XVmpaR0l6Tm1Fd01USTFORFZsTVdZNFlqTXhNREEwTURkaVlqUTRaVE1TRlZSWExrOXdaWEpoZEc5eUxsWXhMa052YzJsbmJob2JRMjl6YVdkdWFXNW5SR1ZzWldkaGRHbHZibEJ5YjNCdmMyRnNLbFJ5WVhacExXNWxkeTF3WVhKMGVUbzZNVEl5TURreVpUZGtNek5oWXpFd1l6Qm1NMlExTlRrM05qTTBNbVl6TnpVMU5XUm1NRFZrWVRWaU56UXlPVFUyWkRVMllUWXlZV1V5TXpZM056WTVNRGM1WkRJeVN6RXlNakE0T2pveE1qSXdPRE13T0RKbE9XRm1NVFUyWm1WaFpXSTNZV1prTXpZellUQmxaVFZtWm1FeFptUXhOakE1TkRkaU5qUTNZVEV6T1dFM1pUQmpNbVZrTnpobU5XUmpOekpVY21GMmFTMXVaWGN0Y0dGeWRIazZPakV5TWpBNU1tVTNaRE16WVdNeE1HTXdaak5rTlRVNU56WXpOREptTXpjMU5UVmtaakExWkdFMVlqYzBNamsxTm1RMU5tRTJNbUZsTWpNMk56YzJPVEEzT1dReU9rc3hNakl3T0RvNk1USXlNRGd6TURneVpUbGhaakUxTm1abFlXVmlOMkZtWkRNMk0yRXdaV1UxWm1aaE1XWmtNVFl3T1RRM1lqWTBOMkV4TXpsaE4yVXdZekpsWkRjNFpqVmtZemRLSWtOdmMybG5ibWx1WjBSbGJHVm5ZWFJwYjI1UWNtOXdiM05oYkY5QlkyTmxjSFJTZ1FGeWZ3cDlDa0E0TW1NeE1EYzFZVE13TnpVeFpUa3hNMkV3WlRjM01UTmpOREExWlRabVl6bGxZMlJpTXpaaE1ERXlOVFExWlRGbU9HSXpNVEF3TkRBM1ltSTBPR1V6RWhWVVZ5NVBjR1Z5WVhSdmNpNVdNUzVEYjNOcFoyNGFJa052YzJsbmJtbHVaMFJsYkdWbllYUnBiMjVRY205d2IzTmhiRjlCWTJObGNIUllBV0lCTVdycUFYTG5BUXFFQVFwQU9ESmpNVEEzTldFek1EYzFNV1U1TVROaE1HVTNOekV6WXpRd05XVTJabU01WldOa1lqTTJZVEF4TWpVME5XVXhaamhpTXpFd01EUXdOMkppTkRobE14SVZWRmN1VDNCbGNtRjBiM0l1VmpFdVEyOXphV2R1R2lsRGIzTnBaMjVwYm1kRVpXeGxaMkYwYVc5dVVISnZjRzl6WVd4ZlFXTmpaWEIwWDFKbGMzVnNkQkplQ2haamIzTnBaMjVwYm1kRVpXeGxaMkYwYVc5dVEybGtFa1JLUWpBd01XSmtZVEV3WXpBNFpURm1ORFZsWlRWbFpURmxNbUZqWW1Vek9Ua3dOR0poTVdKbU9UY3pObU00TVRSaVlUZ3hORE5qTVdReU5HWTJaVFl5T0Rrd055SWlFaURleFJFUEVQNVh2NHpiRVkyZkNiT2NWWmkwRGY3akYyY2M0bm51MndKdHNTSWtDQUVTSUpzN3hVYW5JV1dUMXdaaXBITUJzdWx2WEJuQUU2UjFhbUlSZ1N3Q2lCalVFcjBORW5NS1N6RXlNakE0T2pveE1qSXdPRE13T0RKbE9XRm1NVFUyWm1WaFpXSTNZV1prTXpZellUQmxaVFZtWm1FeFptUXhOakE1TkRkaU5qUTNZVEV6T1dFM1pUQmpNbVZrTnpobU5XUmpOeElrWVRReU9USXlOVFF0TXpZeE1DMDBaR015TFRrelpUQXROVGt3T0daaU9XTmpaVEZtR2xObmJHOWlZV3d0Wkc5dFlXbHVPam94TWpJd1ltVTFPR015T1dVMk5XUmxOREJpWmpJM00ySmxNV1JqTW1JeU5qWmtORE5oT1dFd01ESmxZVFZpTVRnNU5UVmhaV1ZtTjJGaFl6ZzRNV0ppTkRjeFlTb2tOVEJpTldSa09EQXRZV0ZoT1MwMFl6SmxMVGt6TmpNdE5UVXpPVEExTmpGbE1XVTFNS2pUaHNPTy9KUURPc0VMQ3N3R0NnTXlMakVTaWdFd01EVXdZell5TXpKa016bGxOV1F4WlRSa09URTJZakprWW1VNVpETmtOalJoWkdVM05HSTBNbVE1WWprME1qZzVNVFk0WWpFek9EWmhOVFl6WkdFMU9URmpZVEV5TVRJeU1EVXpNakEzWVdGaFpHSm1ZbUU0WldFME9UUm1PVFZsWVdOaU1URXdPR00xWVdZM05tVm1ZalE1T1RnNU56Rm1NbU01WTJRM05qVTVOVFkxTnpjd09EUWFEM1J5WVdSbGQyVmlMV1JoWkMxMk1TSjJDa0E0TW1NeE1EYzFZVE13TnpVeFpUa3hNMkV3WlRjM01UTmpOREExWlRabVl6bGxZMlJpTXpaaE1ERXlOVFExWlRGbU9HSXpNVEF3TkRBM1ltSTBPR1V6RWhWVVZ5NVBjR1Z5WVhSdmNpNVdNUzVEYjNOcFoyNGFHME52YzJsbmJtbHVaMFJsYkdWbllYUnBiMjVRY205d2IzTmhiQ3ExQW5LeUFncDJDa0E0TW1NeE1EYzFZVE13TnpVeFpUa3hNMkV3WlRjM01UTmpOREExWlRabVl6bGxZMlJpTXpaaE1ERXlOVFExWlRGbU9HSXpNVEF3TkRBM1ltSTBPR1V6RWhWVVZ5NVBjR1Z5WVhSdmNpNVdNUzVEYjNOcFoyNGFHME52YzJsbmJtbHVaMFJsYkdWbllYUnBiMjVRY205d2IzTmhiQkpmQ2dWaFpHMXBiaEpXT2xSeVlYWnBMVzVsZHkxd1lYSjBlVG82TVRJeU1Ea3laVGRrTXpOaFl6RXdZekJtTTJRMU5UazNOak0wTW1Zek56VTFOV1JtTURWa1lUVmlOelF5T1RVMlpEVTJZVFl5WVdVeU16WTNOelk1TURjNVpESVNWd29HYzJsbmJtVnlFazA2U3pFeU1qQTRPam94TWpJd09ETXdPREpsT1dGbU1UVTJabVZoWldJM1lXWmtNell6WVRCbFpUVm1abUV4Wm1ReE5qQTVORGRpTmpRM1lURXpPV0UzWlRCak1tVmtOemhtTldSak56SlVjbUYyYVMxdVpYY3RjR0Z5ZEhrNk9qRXlNakE1TW1VM1pETXpZV014TUdNd1pqTmtOVFU1TnpZek5ESm1NemMxTlRWa1pqQTFaR0UxWWpjME1qazFObVExTm1FMk1tRmxNak0yTnpjMk9UQTNPV1F5T2tzeE1qSXdPRG82TVRJeU1EZ3pNRGd5WlRsaFpqRTFObVpsWVdWaU4yRm1aRE0yTTJFd1pXVTFabVpoTVdaa01UWXdPVFEzWWpZME4yRXhNemxoTjJVd1l6SmxaRGM0WmpWa1l6YzZWSEpoZG1rdGJtVjNMWEJoY25SNU9qb3hNakl3T1RKbE4yUXpNMkZqTVRCak1HWXpaRFUxT1RjMk16UXlaak0zTlRVMVpHWXdOV1JoTldJM05ESTVOVFprTlRaaE5qSmhaVEl6TmpjM05qa3dOemxrTXNBK3R0UDZwUC83bEFQU1B1UUVDZ015TGpFUzNBUUtSUUJReGlNdE9lWFI1TmtXc3R2cDA5WkszblMwTFp1VUtKRm9zVGhxVmoybGtjb1NFaUJUSUhxcTIvdW82a2xQbGVyTEVRakZyM2J2dEptSmNmTEp6WFpaVmxkd2hCSVBkSEpoWkdWM1pXSXRaR0ZrTFhZeEdua0tRRGd5WXpFd056VmhNekEzTlRGbE9URXpZVEJsTnpjeE0yTTBNRFZsTm1aak9XVmpaR0l6Tm1Fd01USTFORFZsTVdZNFlqTXhNREEwTURkaVlqUTRaVE1TQWxSWEVnaFBjR1Z5WVhSdmNoSUNWakVTQmtOdmMybG5iaG9iUTI5emFXZHVhVzVuUkdWc1pXZGhkR2x2YmxCeWIzQnZjMkZzSXE0QmFxc0JDbGdLVmpwVWNtRjJhUzF1WlhjdGNHRnlkSGs2T2pFeU1qQTVNbVUzWkRNellXTXhNR013WmpOa05UVTVOell6TkRKbU16YzFOVFZrWmpBMVpHRTFZamMwTWprMU5tUTFObUUyTW1GbE1qTTJOemMyT1RBM09XUXlDazhLVFRwTE1USXlNRGc2T2pFeU1qQTRNekE0TW1VNVlXWXhOVFptWldGbFlqZGhabVF6TmpOaE1HVmxOV1ptWVRGbVpERTJNRGswTjJJMk5EZGhNVE01WVRkbE1HTXlaV1EzT0dZMVpHTTNLbFJ5WVhacExXNWxkeTF3WVhKMGVUbzZNVEl5TURreVpUZGtNek5oWXpFd1l6Qm1NMlExTlRrM05qTTBNbVl6TnpVMU5XUm1NRFZrWVRWaU56UXlPVFUyWkRVMllUWXlZV1V5TXpZM056WTVNRGM1WkRJeVN6RXlNakE0T2pveE1qSXdPRE13T0RKbE9XRm1NVFUyWm1WaFpXSTNZV1prTXpZellUQmxaVFZtWm1FeFptUXhOakE1TkRkaU5qUTNZVEV6T1dFM1pUQmpNbVZrTnpobU5XUmpOem0ycVo3MDMxTUdBRUlxQ2lZS0pBZ0JFaUJEUzE4NWpwVmFHRm1KMnZYNTRuRjNadFRXVFhpU1VGWEwvZEw1RVNYTmxoQWUiLCJwcmVwYXJlZFRyYW5zYWN0aW9uSGFzaCI6ImQ2aVRkK1ZqWUEvY0p3N3BqK0NhS1ZTczBNcU1YVjlMWk5VNDVJajExODg9IiwiaGFzaGluZ1NjaGVtZVZlcnNpb24iOiJIQVNISU5HX1NDSEVNRV9WRVJTSU9OX1YyIiwiaGFzaGluZ0RldGFpbHMiOm51bGx9LCJ0eFR5cGUiOiJDb3NpZ25EZWxlZ2F0aW9uQWNjZXB0IiwicHJlcGFyZWRUcmFuc2FjdGlvbiI6IiIsInBhcnR5U2lnbmF0dXJlcyI6eyJzaWduYXR1cmVzIjpbXX0sImRlZHVwbGljYXRpb25QZXJpb2QiOnsiRW1wdHkiOnt9fSwiaGFzaGluZ1NjaGVtZVZlcnNpb24iOiJIQVNISU5HX1NDSEVNRV9WRVJTSU9OX1YyIiwibWluTGVkZ2VyVGltZSI6eyJ0aW1lIjp7IkVtcHR5Ijp7fX19LCJzdWJtaXNzaW9uSWQiOiIzOTM1YTA2ZC0zYjAzLTQxYmUtOTlhNS05NWIyZWNhYWJmN2QifQ=='; diff --git a/modules/sdk-coin-canton/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.ts b/modules/sdk-coin-canton/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.ts index dacc45e32c..08ec8b8c4e 100644 --- a/modules/sdk-coin-canton/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.ts +++ b/modules/sdk-coin-canton/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.ts @@ -3,8 +3,9 @@ import should from 'should'; import { coins } from '@bitgo/statics'; -import { CosignDelegationAcceptBuilder, Transaction } from '../../../../src'; -import { CantonTransferAcceptRejectRequest } from '../../../../src/lib/iface'; +import { CosignDelegationAcceptBuilder, Transaction, TransactionBuilderFactory } from '../../../../src'; +import { CantonTransferAcceptRejectRequest, TxData } from '../../../../src/lib/iface'; +import { CosignDelegationAcceptPrepareResponse, CosignDelegationAcceptRawTransaction } from '../../../resources'; const commandId = '3935a06d-3b03-41be-99a5-95b2ecaabf7d'; const contractId = @@ -79,4 +80,41 @@ describe('CosignDelegationAccept Builder', () => { txBuilder.initBuilder(tx); assert.throws(() => txBuilder.actAs(''), /actAsPartyId must be a non-empty string/); }); + + it('should parse preparedTransaction and extract sender, receiver, and amount via setTransaction + toJson', function () { + const txBuilder = new CosignDelegationAcceptBuilder(coins.get('tcanton')); + const tx = new Transaction(coins.get('tcanton')); + txBuilder.initBuilder(tx); + txBuilder.setTransaction(CosignDelegationAcceptPrepareResponse); + txBuilder.commandId(commandId).contractId(contractId).actAs(actAsPartyId); + const txData = txBuilder.transaction.toJson() as TxData; + should.exist(txData); + assert.equal(txData.sender, '12208::122083082e9af156feaeb7afd363a0ee5ffa1fd160947b647a139a7e0c2ed78f5dc7'); + assert.equal( + txData.receiver, + 'ravi-new-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2' + ); + assert.equal(txData.amount, '0'); + }); + + it('should parse round-trip from raw transaction via TransactionBuilderFactory.from', function () { + const factory = new TransactionBuilderFactory(coins.get('tcanton')); + const txBuilder = factory.from(CosignDelegationAcceptRawTransaction); + const txData = txBuilder.transaction.toJson() as TxData; + should.exist(txData); + assert.equal(txData.sender, '12208::122083082e9af156feaeb7afd363a0ee5ffa1fd160947b647a139a7e0c2ed78f5dc7'); + assert.equal( + txData.receiver, + 'ravi-new-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2' + ); + assert.equal(txData.amount, '0'); + }); + + it('should validate raw transaction hash', function () { + const txBuilder = new CosignDelegationAcceptBuilder(coins.get('tcanton')); + const tx = new Transaction(coins.get('tcanton')); + txBuilder.initBuilder(tx); + txBuilder.setTransaction(CosignDelegationAcceptPrepareResponse); + txBuilder.validateRawTransaction(CosignDelegationAcceptPrepareResponse.preparedTransaction); + }); }); diff --git a/modules/sdk-core/src/bitgo/utils/mpcUtils.ts b/modules/sdk-core/src/bitgo/utils/mpcUtils.ts index e328512199..6e8a610326 100644 --- a/modules/sdk-core/src/bitgo/utils/mpcUtils.ts +++ b/modules/sdk-core/src/bitgo/utils/mpcUtils.ts @@ -138,11 +138,19 @@ export abstract class MpcUtils { ); } - if (['transferAccept', 'transferReject'].includes(params.intentType) && baseCoin.getFamily() === 'canton') { + if ( + ['transferAccept', 'transferReject', 'cosignDelegationAccept', 'allocationAllocate'].includes( + params.intentType + ) && + baseCoin.getFamily() === 'canton' + ) { assert(params.txRequestId, `'txRequestId' is required parameter for ${params.intentType} intent`); } - if (params.intentType === 'transferOfferWithdrawn' && baseCoin.getFamily() === 'canton') { + if ( + ['transferOfferWithdrawn', 'allocationAllocateWithdrawn'].includes(params.intentType) && + baseCoin.getFamily() === 'canton' + ) { assert(params.transferOfferId, `'transferOfferId' is required parameter for ${params.intentType} intent`); } @@ -181,6 +189,9 @@ export abstract class MpcUtils { 'transferAccept', 'transferReject', 'transferOfferWithdrawn', + 'cosignDelegationAccept', + 'allocationAllocate', + 'allocationAllocateWithdrawn', 'bridgeFunds', 'cantonCommand', 'defi-approve', diff --git a/modules/sdk-core/src/bitgo/wallet/wallet.ts b/modules/sdk-core/src/bitgo/wallet/wallet.ts index c466ce8b7f..4d43c53b77 100644 --- a/modules/sdk-core/src/bitgo/wallet/wallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/wallet.ts @@ -4308,6 +4308,32 @@ export class Wallet implements IWallet { ); break; } + case 'cosignDelegationAccept': { + txRequest = await this.tssUtils!.prebuildTxWithIntent( + { + reqId, + intentType: 'cosignDelegationAccept', + txRequestId: params.txRequestId, + sequenceId: params.txRequestId, + }, + apiVersion, + params.preview + ); + break; + } + case 'allocationAllocate': { + txRequest = await this.tssUtils!.prebuildTxWithIntent( + { + reqId, + intentType: 'allocationAllocate', + txRequestId: params.txRequestId, + sequenceId: params.txRequestId, + }, + apiVersion, + params.preview + ); + break; + } case 'transferReject': { txRequest = await this.tssUtils!.prebuildTxWithIntent( { @@ -4334,6 +4360,19 @@ export class Wallet implements IWallet { ); break; } + case 'allocationAllocateWithdrawn': { + txRequest = await this.tssUtils!.prebuildTxWithIntent( + { + reqId, + intentType: 'allocationAllocateWithdrawn', + transferOfferId: params.transferOfferId, + sequenceId: params.transferOfferId, + }, + apiVersion, + params.preview + ); + break; + } case 'cantonCommand': { if (!params.cantonCommandParams) { throw new Error('cantonCommandParams is required for cantonCommand intent');