@bitgo-beta/sdk-coin-sol 7.6.4-beta.76 → 7.6.4-beta.761
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/bigint-buffer-guard.d.ts.map +1 -0
- package/dist/cjs/src/bigint-buffer-guard.js +29 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/index.js +1 -1
- package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +12 -1
- package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/ataInitializationBuilder.js +231 -0
- package/dist/cjs/src/lib/closeAtaBuilder.d.ts +55 -0
- package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/closeAtaBuilder.js +162 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts +136 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.js +375 -0
- package/dist/{src → cjs/src}/lib/constants.d.ts +97 -2
- package/dist/cjs/src/lib/constants.d.ts.map +1 -0
- package/dist/cjs/src/lib/constants.js +277 -0
- package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +13 -2
- package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/customInstructionBuilder.js +392 -0
- package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
- package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
- package/dist/cjs/src/lib/explainTransactionWasm.js +304 -0
- package/dist/cjs/src/lib/iface.d.ts +538 -0
- package/dist/cjs/src/lib/iface.d.ts.map +1 -0
- package/dist/cjs/src/lib/iface.js +7 -0
- package/dist/{src → cjs/src}/lib/index.d.ts +9 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/index.js +106 -0
- package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +3 -1
- package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/instructionParamsFactory.js +1284 -0
- package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
- package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
- package/dist/{src → cjs/src}/lib/keyPair.d.ts +6 -0
- package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
- package/dist/cjs/src/lib/keyPair.js +112 -0
- package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
- package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
- package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
- package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
- package/dist/cjs/src/lib/scaledUiAmount.d.ts +30 -0
- package/dist/cjs/src/lib/scaledUiAmount.d.ts.map +1 -0
- package/dist/cjs/src/lib/scaledUiAmount.js +112 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts +21 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/config.js +34 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts +14 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/instruction.js +32 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts +27 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.js +196 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts +36 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +211 -0
- package/dist/cjs/src/lib/serialization/index.d.ts +5 -0
- package/dist/cjs/src/lib/serialization/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/index.js +27 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts +9 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.js +58 -0
- package/dist/cjs/src/lib/serialization/wire-transaction.d.ts +14 -0
- package/dist/cjs/src/lib/serialization/wire-transaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/wire-transaction.js +51 -0
- package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +1 -1
- package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/solInstructionFactory.js +1119 -0
- package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingActivateBuilder.js +129 -0
- package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
- package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingDeactivateBuilder.js +214 -0
- package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingDelegateBuilder.js +126 -0
- package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
- package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingWithdrawBuilder.js +87 -0
- package/dist/cjs/src/lib/token2022Resolve.d.ts +106 -0
- package/dist/cjs/src/lib/token2022Resolve.d.ts.map +1 -0
- package/dist/cjs/src/lib/token2022Resolve.js +199 -0
- package/dist/cjs/src/lib/tokenExtensions.d.ts +26 -0
- package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenExtensions.js +109 -0
- package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +27 -1
- package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenTransferBuilder.js +237 -0
- package/dist/{src → cjs/src}/lib/transaction.d.ts +46 -1
- package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/transaction.js +761 -0
- package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +42 -1
- package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilder.js +462 -0
- package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +37 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.js +249 -0
- package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transferBuilder.js +81 -0
- package/dist/cjs/src/lib/transferBuilderV2.d.ts +69 -0
- package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
- package/dist/cjs/src/lib/transferBuilderV2.js +252 -0
- package/dist/{src → cjs/src}/lib/utils.d.ts +16 -0
- package/dist/cjs/src/lib/utils.d.ts.map +1 -0
- package/dist/cjs/src/lib/utils.js +681 -0
- package/dist/cjs/src/lib/v1CustomInstructionBuilder.d.ts +29 -0
- package/dist/cjs/src/lib/v1CustomInstructionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/v1CustomInstructionBuilder.js +36 -0
- package/dist/cjs/src/lib/v1PaymentBuilder.d.ts +36 -0
- package/dist/cjs/src/lib/v1PaymentBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/v1PaymentBuilder.js +70 -0
- package/dist/cjs/src/lib/v1TransactionBuilder.d.ts +253 -0
- package/dist/cjs/src/lib/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/v1TransactionBuilder.js +601 -0
- package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
- package/dist/cjs/src/register.d.ts +5 -0
- package/dist/cjs/src/register.d.ts.map +1 -0
- package/dist/cjs/src/register.js +29 -0
- package/dist/{src → cjs/src}/sol.d.ts +114 -3
- package/dist/cjs/src/sol.d.ts.map +1 -0
- package/dist/cjs/src/sol.js +1707 -0
- package/dist/{src → cjs/src}/solToken.d.ts +7 -0
- package/dist/cjs/src/solToken.d.ts.map +1 -0
- package/dist/cjs/src/solToken.js +79 -0
- package/dist/cjs/src/tsol.d.ts.map +1 -0
- package/dist/cjs/src/tsol.js +24 -0
- package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
- package/dist/cjs/test/fixtures/sol.js +1433 -0
- package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
- package/dist/cjs/test/resources/sol.d.ts.map +1 -0
- package/dist/cjs/test/resources/sol.js +320 -0
- package/dist/cjs/test/unit/ctEnablementVerify.d.ts +2 -0
- package/dist/cjs/test/unit/ctEnablementVerify.d.ts.map +1 -0
- package/dist/cjs/test/unit/ctEnablementVerify.js +143 -0
- package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
- package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
- package/dist/cjs/test/unit/explainTransactionWasm.js +66 -0
- package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
- package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
- package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
- package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
- package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
- package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
- package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
- package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
- package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
- package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
- package/dist/cjs/test/unit/keyPair.js +177 -0
- package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
- package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
- package/dist/cjs/test/unit/register.d.ts +2 -0
- package/dist/cjs/test/unit/register.d.ts.map +1 -0
- package/dist/cjs/test/unit/register.js +65 -0
- package/dist/cjs/test/unit/scaledUiAmount.d.ts +2 -0
- package/dist/cjs/test/unit/scaledUiAmount.d.ts.map +1 -0
- package/dist/cjs/test/unit/scaledUiAmount.js +101 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
- package/dist/cjs/test/unit/serialization/exportV1.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/exportV1.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/exportV1.js +21 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
- package/dist/cjs/test/unit/serialization/transactionV1.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/transactionV1.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/transactionV1.js +136 -0
- package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
- package/dist/cjs/test/unit/sol.js +5364 -0
- package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/solInstructionFactory.js +623 -0
- package/dist/cjs/test/unit/solIntentVersion.d.ts +2 -0
- package/dist/cjs/test/unit/solIntentVersion.d.ts.map +1 -0
- package/dist/cjs/test/unit/solIntentVersion.js +59 -0
- package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
- package/dist/cjs/test/unit/solToken.js +37 -0
- package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
- package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
- package/dist/cjs/test/unit/token2022Resolve.js +252 -0
- package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
- package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
- package/dist/cjs/test/unit/tokenExtensions.js +73 -0
- package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction.js +1129 -0
- package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
- package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +508 -0
- package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +343 -0
- package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.js +346 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.js +124 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.js +922 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.js +194 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.js +168 -0
- package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +724 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
- package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +926 -0
- package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +302 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
- package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.js +138 -0
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.js +331 -0
- package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
- package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
- package/dist/cjs/test/unit/utils.js +663 -0
- package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/versionedTransaction.js +207 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/bigint-buffer-guard.d.ts +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/lib/ataInitializationBuilder.d.ts +58 -0
- package/dist/esm/lib/ataInitializationBuilder.d.ts.map +1 -0
- package/dist/esm/lib/ataInitializationBuilder.js +191 -0
- package/dist/esm/lib/closeAtaBuilder.d.ts +55 -0
- package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
- package/dist/esm/lib/closeAtaBuilder.js +155 -0
- package/dist/esm/lib/confidentialTransferBuilder.d.ts +136 -0
- package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/esm/lib/confidentialTransferBuilder.js +368 -0
- package/dist/esm/lib/constants.d.ts +235 -0
- package/dist/esm/lib/constants.d.ts.map +1 -0
- package/dist/esm/lib/constants.js +274 -0
- package/dist/esm/lib/customInstructionBuilder.d.ts +83 -0
- package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +1 -1
- package/dist/esm/lib/customInstructionBuilder.js +385 -0
- package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
- package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
- package/dist/esm/lib/explainTransactionWasm.js +301 -0
- package/dist/esm/lib/iface.d.ts +538 -0
- package/dist/esm/lib/iface.d.ts.map +1 -0
- package/dist/esm/lib/iface.js +3 -0
- package/dist/esm/lib/index.d.ts +31 -0
- package/dist/esm/lib/index.d.ts.map +1 -0
- package/dist/esm/lib/index.js +31 -0
- package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
- package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
- package/dist/esm/lib/instructionParamsFactory.js +1276 -0
- package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
- package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
- package/dist/esm/lib/keyPair.d.ts +32 -0
- package/dist/esm/lib/keyPair.d.ts.map +1 -0
- package/dist/esm/lib/keyPair.js +75 -0
- package/dist/esm/lib/messages/index.d.ts +2 -0
- package/dist/esm/lib/messages/index.js +2 -0
- package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
- package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
- package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
- package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
- package/dist/esm/lib/scaledUiAmount.d.ts +30 -0
- package/dist/esm/lib/scaledUiAmount.d.ts.map +1 -0
- package/dist/esm/lib/scaledUiAmount.js +108 -0
- package/dist/esm/lib/serialization/codecs/v1/config.d.ts +21 -0
- package/dist/esm/lib/serialization/codecs/v1/config.d.ts.map +1 -0
- package/dist/esm/lib/serialization/codecs/v1/config.js +30 -0
- package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts +14 -0
- package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/codecs/v1/instruction.js +29 -0
- package/dist/esm/lib/serialization/codecs/v1/message.d.ts +27 -0
- package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -0
- package/dist/esm/lib/serialization/codecs/v1/message.js +188 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +36 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.js +208 -0
- package/dist/esm/lib/serialization/index.d.ts +5 -0
- package/dist/esm/lib/serialization/index.d.ts.map +1 -0
- package/dist/esm/lib/serialization/index.js +5 -0
- package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
- package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
- package/dist/esm/lib/serialization/wire-transaction.d.ts +14 -0
- package/dist/esm/lib/serialization/wire-transaction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/wire-transaction.js +48 -0
- package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
- package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
- package/dist/esm/lib/solInstructionFactory.js +1113 -0
- package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
- package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingActivateBuilder.js +122 -0
- package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
- package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
- package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
- package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingDeactivateBuilder.js +207 -0
- package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
- package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingDelegateBuilder.js +119 -0
- package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
- package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
- package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
- package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingWithdrawBuilder.js +80 -0
- package/dist/esm/lib/token2022Resolve.d.ts +106 -0
- package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
- package/dist/esm/lib/token2022Resolve.js +194 -0
- package/dist/esm/lib/tokenExtensions.d.ts +26 -0
- package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
- package/dist/esm/lib/tokenExtensions.js +103 -0
- package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
- package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/esm/lib/tokenTransferBuilder.js +230 -0
- package/dist/esm/lib/transaction.d.ts +148 -0
- package/dist/esm/lib/transaction.d.ts.map +1 -0
- package/dist/esm/lib/transaction.js +754 -0
- package/dist/esm/lib/transactionBuilder.d.ts +169 -0
- package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/esm/lib/transactionBuilder.js +455 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts +152 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/esm/lib/transactionBuilderFactory.js +245 -0
- package/dist/esm/lib/transferBuilder.d.ts +26 -0
- package/dist/{src → esm}/lib/transferBuilder.d.ts.map +1 -1
- package/dist/esm/lib/transferBuilder.js +74 -0
- package/dist/esm/lib/transferBuilderV2.d.ts +69 -0
- package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
- package/dist/esm/lib/transferBuilderV2.js +245 -0
- package/dist/esm/lib/utils.d.ts +216 -0
- package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
- package/dist/esm/lib/utils.js +642 -0
- package/dist/esm/lib/v1CustomInstructionBuilder.d.ts +29 -0
- package/dist/esm/lib/v1CustomInstructionBuilder.d.ts.map +1 -0
- package/dist/esm/lib/v1CustomInstructionBuilder.js +32 -0
- package/dist/esm/lib/v1PaymentBuilder.d.ts +36 -0
- package/dist/esm/lib/v1PaymentBuilder.d.ts.map +1 -0
- package/dist/esm/lib/v1PaymentBuilder.js +63 -0
- package/dist/esm/lib/v1TransactionBuilder.d.ts +253 -0
- package/dist/esm/lib/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/esm/lib/v1TransactionBuilder.js +591 -0
- package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
- package/dist/esm/lib/walletInitializationBuilder.js +64 -0
- package/dist/esm/register.d.ts +5 -0
- package/dist/esm/register.d.ts.map +1 -0
- package/dist/esm/register.js +24 -0
- package/dist/esm/sol.d.ts +351 -0
- package/dist/esm/sol.d.ts.map +1 -0
- package/dist/esm/sol.js +1666 -0
- package/dist/esm/solToken.d.ts +44 -0
- package/dist/esm/solToken.d.ts.map +1 -0
- package/dist/esm/solToken.js +75 -0
- package/dist/esm/tsol.d.ts +11 -0
- package/dist/esm/tsol.js +20 -0
- package/package.json +37 -17
- package/dist/src/config/token2022StaticConfig.d.ts +0 -3
- package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
- package/dist/src/config/token2022StaticConfig.js +0 -50
- package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
- package/dist/src/lib/ataInitializationBuilder.js +0 -196
- package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
- package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
- package/dist/src/lib/closeAtaBuilder.js +0 -69
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -171
- package/dist/src/lib/customInstructionBuilder.js +0 -289
- package/dist/src/lib/iface.d.ts +0 -244
- package/dist/src/lib/iface.d.ts.map +0 -1
- package/dist/src/lib/iface.js +0 -7
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -77
- package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
- package/dist/src/lib/instructionParamsFactory.js +0 -1036
- package/dist/src/lib/jitoStakePoolOperations.js +0 -200
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -63
- package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
- package/dist/src/lib/solInstructionFactory.js +0 -572
- package/dist/src/lib/stakingActivateBuilder.js +0 -120
- package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
- package/dist/src/lib/stakingDeactivateBuilder.js +0 -208
- package/dist/src/lib/stakingDelegateBuilder.js +0 -120
- package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
- package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
- package/dist/src/lib/token2022Config.d.ts +0 -44
- package/dist/src/lib/token2022Config.d.ts.map +0 -1
- package/dist/src/lib/token2022Config.js +0 -27
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
- package/dist/src/lib/tokenTransferBuilder.js +0 -188
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -595
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -380
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilderFactory.js +0 -202
- package/dist/src/lib/transferBuilder.js +0 -70
- package/dist/src/lib/transferBuilderV2.d.ts +0 -43
- package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
- package/dist/src/lib/transferBuilderV2.js +0 -210
- package/dist/src/lib/utils.js +0 -589
- package/dist/src/lib/walletInitializationBuilder.js +0 -71
- package/dist/src/register.d.ts +0 -3
- package/dist/src/register.d.ts.map +0 -1
- package/dist/src/register.js +0 -15
- package/dist/src/sol.d.ts.map +0 -1
- package/dist/src/sol.js +0 -1324
- package/dist/src/solToken.d.ts.map +0 -1
- package/dist/src/solToken.js +0 -69
- package/dist/src/tsol.js +0 -24
- package/dist/test/fixtures/sol.js +0 -1433
- package/dist/test/resources/sol.d.ts.map +0 -1
- package/dist/test/resources/sol.js +0 -320
- package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
- package/dist/test/unit/fixtures/solBackupKey.js +0 -8
- package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
- package/dist/test/unit/getBuilderFactory.js +0 -10
- package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
- package/dist/test/unit/instructionParamsFactory.js +0 -412
- package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
- package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
- package/dist/test/unit/keyPair.js +0 -177
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
- package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
- package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
- package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
- package/dist/test/unit/sol.js +0 -3180
- package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
- package/dist/test/unit/solInstructionFactory.js +0 -454
- package/dist/test/unit/solToken.d.ts.map +0 -1
- package/dist/test/unit/solToken.js +0 -31
- package/dist/test/unit/transaction.d.ts.map +0 -1
- package/dist/test/unit/transaction.js +0 -983
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
- package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
- package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
- package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
- package/dist/test/unit/utils.js +0 -517
- package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
- package/dist/test/unit/versionedTransaction.js +0 -207
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
- /package/dist/{src → cjs/src}/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
- /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
- /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
- /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
- /package/dist/{src → esm}/index.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/tsol.d.ts.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confidentialTransferV1.d.ts","sourceRoot":"","sources":["../../../../../test/unit/transactionBuilder/confidentialTransferV1.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
require("should");
|
|
40
|
+
const tweetnacl_1 = __importDefault(require("tweetnacl"));
|
|
41
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
42
|
+
const src_1 = require("../../../src");
|
|
43
|
+
const parseWireTransaction_1 = require("../../../src/lib/serialization/parseWireTransaction");
|
|
44
|
+
const testData = __importStar(require("../../resources/sol"));
|
|
45
|
+
const getBuilderFactory_1 = require("../getBuilderFactory");
|
|
46
|
+
describe('Solana Confidential Transfer Builder - v1', () => {
|
|
47
|
+
const factory = (0, getBuilderFactory_1.getBuilderFactory)('sol');
|
|
48
|
+
const account = new src_1.KeyPair(testData.associatedTokenAccounts.accounts[0]).getKeys();
|
|
49
|
+
const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
|
|
50
|
+
const gasTank = new src_1.KeyPair({ prv: testData.prvKeys.prvKey1.base58 }).getKeys();
|
|
51
|
+
const nonceAccount = new src_1.KeyPair(testData.nonceAccount).getKeys();
|
|
52
|
+
const mintAddress = testData.associatedTokenAccountsForSol2022.mintId;
|
|
53
|
+
const tokenAddress = testData.associatedTokenAccountsForSol2022.accounts[0].ata;
|
|
54
|
+
const destinationTokenAddress = 'ENn8a2tGMS9bR5XV7smGHJvNgzkyxJmnD2eUvQxY5jSP';
|
|
55
|
+
const authorityAddress = account.pub;
|
|
56
|
+
const zeroBytes36 = '00'.repeat(36);
|
|
57
|
+
const zeroBytes64 = '00'.repeat(64);
|
|
58
|
+
const proofDataHex = '00'.repeat(320);
|
|
59
|
+
const v1Config = {
|
|
60
|
+
computeUnitLimit: 200000,
|
|
61
|
+
heapSize: 32768,
|
|
62
|
+
loadedAccountsDataSizeLimit: 65536,
|
|
63
|
+
priorityFee: 5000,
|
|
64
|
+
};
|
|
65
|
+
const ctBuilder = () => {
|
|
66
|
+
const txBuilder = factory.getConfidentialTransferBuilder();
|
|
67
|
+
txBuilder.nonce(recentBlockHash);
|
|
68
|
+
txBuilder.sender(account.pub);
|
|
69
|
+
txBuilder.sign({ key: account.prv });
|
|
70
|
+
return txBuilder;
|
|
71
|
+
};
|
|
72
|
+
const addTransfer = (builder) => {
|
|
73
|
+
builder
|
|
74
|
+
.applyPendingBalance({
|
|
75
|
+
tokenAddress,
|
|
76
|
+
authorityAddress,
|
|
77
|
+
expectedPendingBalanceCreditCounter: '2',
|
|
78
|
+
newDecryptableAvailableBalance: zeroBytes36,
|
|
79
|
+
})
|
|
80
|
+
.verifyEqualityProof({ proofData: proofDataHex })
|
|
81
|
+
.verifyValidityProof({ proofData: proofDataHex })
|
|
82
|
+
.verifyRangeProof({ proofData: '00'.repeat(1000) })
|
|
83
|
+
.confidentialTransfer({
|
|
84
|
+
sourceTokenAddress: tokenAddress,
|
|
85
|
+
mintAddress,
|
|
86
|
+
destinationTokenAddress,
|
|
87
|
+
authorityAddress,
|
|
88
|
+
newSourceDecryptableAvailableBalance: zeroBytes36,
|
|
89
|
+
transferAmountAuditorCiphertextLo: zeroBytes64,
|
|
90
|
+
transferAmountAuditorCiphertextHi: zeroBytes64,
|
|
91
|
+
equalityProofInstructionOffset: 1,
|
|
92
|
+
ciphertextValidityProofInstructionOffset: 2,
|
|
93
|
+
rangeProofInstructionOffset: 3,
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
it('should build a v1 confidential transfer transaction (0x81 prefix, within 4096 bytes)', async () => {
|
|
97
|
+
const builder = ctBuilder();
|
|
98
|
+
addTransfer(builder);
|
|
99
|
+
builder.version(1).transactionConfig(v1Config);
|
|
100
|
+
const tx = await builder.build();
|
|
101
|
+
tx.isVersionedTransaction().should.equal(true);
|
|
102
|
+
tx.v1TransactionBytes.should.be.an.instanceOf(Uint8Array);
|
|
103
|
+
const rawTx = tx.toBroadcastFormat();
|
|
104
|
+
const wire = Buffer.from(rawTx, 'base64');
|
|
105
|
+
// v1 version byte prefix
|
|
106
|
+
wire[0].should.equal(0x81);
|
|
107
|
+
// within the v1 wire size limit
|
|
108
|
+
wire.length.should.be.lessThanOrEqual(4096);
|
|
109
|
+
// config preserved in the decoded v1 message
|
|
110
|
+
});
|
|
111
|
+
it('injects the AdvanceNonceAccount instruction and assembles user + gas-tank signatures in signer order for durable nonce', async () => {
|
|
112
|
+
const builder = ctBuilder();
|
|
113
|
+
addTransfer(builder);
|
|
114
|
+
builder.nonce(recentBlockHash, {
|
|
115
|
+
walletNonceAddress: nonceAccount.pub,
|
|
116
|
+
authWalletAddress: gasTank.pub,
|
|
117
|
+
});
|
|
118
|
+
builder.version(1).transactionConfig(v1Config);
|
|
119
|
+
const unsigned = (await builder.build());
|
|
120
|
+
const messageBytes = unsigned.v1MessageBytes;
|
|
121
|
+
unsigned.isVersionedTransaction().should.equal(true);
|
|
122
|
+
unsigned.v1TransactionBytes[0].should.equal(0x81);
|
|
123
|
+
// 2 required signers: user (fee payer) + gas-tank nonce authority
|
|
124
|
+
messageBytes[1].should.equal(2);
|
|
125
|
+
const decoded = (0, src_1.decodeV1Message)(messageBytes);
|
|
126
|
+
// nonce hash occupies the blockhash field
|
|
127
|
+
decoded.blockhash.should.equal(recentBlockHash);
|
|
128
|
+
// first instruction is AdvanceNonceAccount (System Program, discriminator 4)
|
|
129
|
+
decoded.compiledInstructions[0].data[0].should.equal(4);
|
|
130
|
+
decoded.staticAccounts[decoded.compiledInstructions[0].programAddressIndex].should.equal(web3_js_1.SystemProgram.programId.toBase58());
|
|
131
|
+
// signer order: fee payer (user) first, then gas tank
|
|
132
|
+
decoded.staticAccounts.slice(0, 2).should.deepEqual([account.pub, gasTank.pub]);
|
|
133
|
+
// attach the gas-tank HSM signature over the same message bytes
|
|
134
|
+
const signWith = (keyPair, msg) => {
|
|
135
|
+
const prv = keyPair.prv;
|
|
136
|
+
if (typeof prv !== 'string') {
|
|
137
|
+
throw new Error('Missing private key for test signer');
|
|
138
|
+
}
|
|
139
|
+
const kp = new src_1.KeyPair({ prv });
|
|
140
|
+
return tweetnacl_1.default.sign.detached(msg, kp.getKeys(true).prv);
|
|
141
|
+
};
|
|
142
|
+
const gasTankSig = signWith(gasTank, messageBytes);
|
|
143
|
+
builder.addSignature({ pub: gasTank.pub }, Buffer.from(gasTankSig));
|
|
144
|
+
const signed = (await builder.build());
|
|
145
|
+
// message byte-identity between build and sign
|
|
146
|
+
Buffer.from(signed.v1MessageBytes).equals(Buffer.from(messageBytes)).should.be.true();
|
|
147
|
+
signed.v1TransactionBytes.length.should.equal(messageBytes.length + 2 * 64);
|
|
148
|
+
const parsed = (0, src_1.parseWireTransaction)(signed.v1TransactionBytes);
|
|
149
|
+
parsed.signerPublicKeys.should.deepEqual([account.pub, gasTank.pub]);
|
|
150
|
+
(0, parseWireTransaction_1.verifyV1Signatures)(parsed.messageBytes, parsed.signatures, parsed.signerPublicKeys);
|
|
151
|
+
});
|
|
152
|
+
it('should require transactionConfig when version(1) is set', async () => {
|
|
153
|
+
const builder = ctBuilder();
|
|
154
|
+
addTransfer(builder);
|
|
155
|
+
builder.version(1);
|
|
156
|
+
await builder.build().should.be.rejectedWith(/transactionConfig is required/);
|
|
157
|
+
});
|
|
158
|
+
it('should reject v1 transactions that exceed the 4096-byte wire limit at broadcast', async () => {
|
|
159
|
+
const builder = ctBuilder();
|
|
160
|
+
addTransfer(builder);
|
|
161
|
+
builder.version(1).transactionConfig(v1Config);
|
|
162
|
+
const tx = await builder.build();
|
|
163
|
+
const rawTx = tx.toBroadcastFormat();
|
|
164
|
+
// Force an oversized v1 payload by padding the wire bytes past the limit.
|
|
165
|
+
const wire = Buffer.from(rawTx, 'base64');
|
|
166
|
+
const oversized = Buffer.concat([wire, Buffer.alloc(4097)]);
|
|
167
|
+
oversized[0].should.equal(0x81);
|
|
168
|
+
// Broadcast the oversized v1 tx through Sol.prototype.broadcastTransaction with an RPC
|
|
169
|
+
// stub that must not be reached - the size guard short-circuits before the RPC call.
|
|
170
|
+
const coin = { getDataFromNode: () => Promise.reject(new Error('RPC should not be reached')) };
|
|
171
|
+
await src_1.Sol.prototype.broadcastTransaction
|
|
172
|
+
.call(coin, { serializedSignedTransaction: oversized.toString('base64') })
|
|
173
|
+
.should.be.rejectedWith(/exceeds the 4096-byte size limit/);
|
|
174
|
+
});
|
|
175
|
+
it('should leave the non-v1 path unchanged (v0/legacy default)', async () => {
|
|
176
|
+
const builder = ctBuilder();
|
|
177
|
+
builder.configureAccount({
|
|
178
|
+
tokenAddress,
|
|
179
|
+
mintAddress,
|
|
180
|
+
authorityAddress,
|
|
181
|
+
elgamalPubkey: '11'.repeat(32),
|
|
182
|
+
decryptableZeroBalance: zeroBytes36,
|
|
183
|
+
maximumPendingBalanceCreditCounter: '65536',
|
|
184
|
+
proofInstructionOffset: 1,
|
|
185
|
+
});
|
|
186
|
+
const tx = await builder.build();
|
|
187
|
+
const rawTx = tx.toBroadcastFormat();
|
|
188
|
+
// legacy transaction does not carry the 0x81 v1 prefix
|
|
189
|
+
Buffer.from(rawTx, 'base64')[0].should.not.equal(0x81);
|
|
190
|
+
tx.isVersionedTransaction().should.equal(false);
|
|
191
|
+
src_1.Utils.isValidRawTransaction(rawTx).should.equal(true);
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlkZW50aWFsVHJhbnNmZXJWMS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvY29uZmlkZW50aWFsVHJhbnNmZXJWMS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtCQUFnQjtBQUNoQiwwREFBNkI7QUFDN0IsNkNBQWdEO0FBQ2hELHNDQUF1RztBQUN2Ryw4RkFBeUY7QUFFekYsOERBQWdEO0FBQ2hELDREQUF5RDtBQUV6RCxRQUFRLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxFQUFFO0lBQ3pELE1BQU0sT0FBTyxHQUFHLElBQUEscUNBQWlCLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxhQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BGLE1BQU0sZUFBZSxHQUFHLDhDQUE4QyxDQUFDO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLElBQUksYUFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxhQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRWxFLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxNQUFNLENBQUM7SUFDdEUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDaEYsTUFBTSx1QkFBdUIsR0FBRyw4Q0FBOEMsQ0FBQztJQUMvRSxNQUFNLGdCQUFn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QUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzlCLHNCQUFzQixFQUFFLFdBQVc7WUFDbkMsa0NBQWtDLEVBQUUsT0FBTztZQUMzQyxzQkFBc0IsRUFBRSxDQUFDO1NBQzFCLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBRSxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUFJLEVBQWtCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN0RCx1REFBdUQ7UUFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsRUFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsV0FBSyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnc2hvdWxkJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgeyBTeXN0ZW1Qcm9ncmFtIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IGRlY29kZVYxTWVzc2FnZSwgS2V5UGFpciwgcGFyc2VXaXJlVHJhbnNhY3Rpb24sIFNvbCwgVHJhbnNhY3Rpb24sIFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IHZlcmlmeVYxU2lnbmF0dXJlcyB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi9wYXJzZVdpcmVUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBTb2xhbmFLZXlzIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IGdldEJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vZ2V0QnVpbGRlckZhY3RvcnknO1xuXG5kZXNjcmliZSgnU29sYW5hIENvbmZpZGVudGlhbCBUcmFuc2ZlciBCdWlsZGVyIC0gdjEnLCAoKSA9PiB7XG4gIGNvbnN0IGZhY3RvcnkgPSBnZXRCdWlsZGVyRmFjdG9yeSgnc29sJyk7XG4gIGNvbnN0IGFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXSkuZ2V0S2V5cygpO1xuICBjb25zdCByZWNlbnRCbG9ja0hhc2ggPSAnR0h0WFFCc29aSFZuTkZhOVlldkF6RnIxN0RKamdIWGszeWNUS0Q1eEQzWmknO1xuICBjb25zdCBnYXNUYW5rID0gbmV3IEtleVBhaXIoeyBwcnY6IHRlc3REYXRhLnBydktleXMucHJ2S2V5MS5iYXNlNTggfSkuZ2V0S2V5cygpO1xuICBjb25zdCBub25jZUFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5ub25jZUFjY291bnQpLmdldEtleXMoKTtcblxuICBjb25zdCBtaW50QWRkcmVzcyA9IHRlc3REYXRhLmFzc29jaWF0ZWRUb2tlbkFjY291bnRzRm9yU29sMjAyMi5taW50SWQ7XG4gIGNvbnN0IHRva2VuQWRkcmVzcyA9IHRlc3REYXRhLmFzc29jaWF0ZWRUb2tlbkFjY291bnRzRm9yU29sMjAyMi5hY2NvdW50c1swXS5hdGE7XG4gIGNvbnN0IGRlc3RpbmF0aW9uVG9rZW5BZGRyZXNzID0gJ0VObjhhMnRHTVM5YlI1WFY3c21HSEp2Tmd6a3l4Sm1uRDJlVXZReFk1alNQJztcbiAgY29uc3QgYXV0aG9yaXR5QWRkcmVzcyA9IGFjY291bnQucHViO1xuXG4gIGNvbnN0IHplcm9CeXRlczM2ID0gJzAwJy5yZXBlYXQoMzYpO1xuICBjb25zdCB6ZXJvQnl0ZXM2NCA9ICcwMCcucmVwZWF0KDY0KTtcbiAgY29uc3QgcHJvb2ZEYXRhSGV4ID0gJzAwJy5yZXBlYXQoMzIwKTtcblxuICBjb25zdCB2MUNvbmZpZyA9IHtcbiAgICBjb21wdXRlVW5pdExpbWl0OiAyMDBfMDAwLFxuICAgIGhlYXBTaXplOiAzMl83NjgsXG4gICAgbG9hZGVkQWNjb3VudHNEYXRhU2l6ZUxpbWl0OiA2NV81MzYsXG4gICAgcHJpb3JpdHlGZWU6IDVfMDAwLFxuICB9O1xuXG4gIGNvbnN0IGN0QnVpbGRlciA9ICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldENvbmZpZGVudGlhbFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIoYWNjb3VudC5wdWIpO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50LnBydiB9KTtcbiAgICByZXR1cm4gdHhCdWlsZGVyO1xuICB9O1xuXG4gIGNvbnN0IGFkZFRyYW5zZmVyID0gKGJ1aWxkZXI6IFJldHVyblR5cGU8dHlwZW9mIGN0QnVpbGRlcj4pID0+IHtcbiAgICBidWlsZGVyXG4gICAgICAuYXBwbHlQZW5kaW5nQmFsYW5jZSh7XG4gICAgICAgIHRva2VuQWRkcmVzcyxcbiAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgZXhwZWN0ZWRQZW5kaW5nQmFsYW5jZUNyZWRpdENvdW50ZXI6ICcyJyxcbiAgICAgICAgbmV3RGVjcnlwdGFibGVBdmFpbGFibGVCYWxhbmNlOiB6ZXJvQnl0ZXMzNixcbiAgICAgIH0pXG4gICAgICAudmVyaWZ5RXF1YWxpdHlQcm9vZih7IHByb29mRGF0YTogcHJvb2ZEYXRhSGV4IH0pXG4gICAgICAudmVyaWZ5VmFsaWRpdHlQcm9vZih7IHByb29mRGF0YTogcHJvb2ZEYXRhSGV4IH0pXG4gICAgICAudmVyaWZ5UmFuZ2VQcm9vZih7IHByb29mRGF0YTogJzAwJy5yZXBlYXQoMTAwMCkgfSlcbiAgICAgIC5jb25maWRlbnRpYWxUcmFuc2Zlcih7XG4gICAgICAgIHNvdXJjZVRva2VuQWRkcmVzczogdG9rZW5BZGRyZXNzLFxuICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgZGVzdGluYXRpb25Ub2tlbkFkZHJlc3MsXG4gICAgICAgIGF1dGhvcml0eUFkZHJlc3MsXG4gICAgICAgIG5ld1NvdXJjZURlY3J5cHRhYmxlQXZhaWxhYmxlQmFsYW5jZTogemVyb0J5dGVzMzYsXG4gICAgICAgIHRyYW5zZmVyQW1vdW50QXVkaXRvckNpcGhlcnRleHRMbzogemVyb0J5dGVzNjQsXG4gICAgICAgIHRyYW5zZmVyQW1vdW50QXVkaXRvckNpcGhlcnRleHRIaTogemVyb0J5dGVzNjQsXG4gICAgICAgIGVxdWFsaXR5UHJvb2ZJbnN0cnVjdGlvbk9mZnNldDogMSxcbiAgICAgICAgY2lwaGVydGV4dFZhbGlkaXR5UHJvb2ZJbnN0cnVjdGlvbk9mZnNldDogMixcbiAgICAgICAgcmFuZ2VQcm9vZkluc3RydWN0aW9uT2Zmc2V0OiAzLFxuICAgICAgfSk7XG4gIH07XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIHYxIGNvbmZpZGVudGlhbCB0cmFuc2ZlciB0cmFuc2FjdGlvbiAoMHg4MSBwcmVmaXgsIHdpdGhpbiA0MDk2IGJ5dGVzKScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gY3RCdWlsZGVyKCk7XG4gICAgYWRkVHJhbnNmZXIoYnVpbGRlcik7XG4gICAgYnVpbGRlci52ZXJzaW9uKDEpLnRyYW5zYWN0aW9uQ29uZmlnKHYxQ29uZmlnKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgKHR4IGFzIFRyYW5zYWN0aW9uKS5pc1ZlcnNpb25lZFRyYW5zYWN0aW9uKCkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICh0eCBhcyBUcmFuc2FjdGlvbikudjFUcmFuc2FjdGlvbkJ5dGVzIS5zaG91bGQuYmUuYW4uaW5zdGFuY2VPZihVaW50OEFycmF5KTtcblxuICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBjb25zdCB3aXJlID0gQnVmZmVyLmZyb20ocmF3VHgsICdiYXNlNjQnKTtcblxuICAgIC8vIHYxIHZlcnNpb24gYnl0ZSBwcmVmaXhcbiAgICB3aXJlWzBdLnNob3VsZC5lcXVhbCgweDgxKTtcbiAgICAvLyB3aXRoaW4gdGhlIHYxIHdpcmUgc2l6ZSBsaW1pdFxuICAgIHdpcmUubGVuZ3RoLnNob3VsZC5iZS5sZXNzVGhhbk9yRXF1YWwoNDA5Nik7XG5cbiAgICAvLyBjb25maWcgcHJlc2VydmVkIGluIHRoZSBkZWNvZGVkIHYxIG1lc3NhZ2VcbiAgfSk7XG5cbiAgaXQoJ2luamVjdHMgdGhlIEFkdmFuY2VOb25jZUFjY291bnQgaW5zdHJ1Y3Rpb24gYW5kIGFzc2VtYmxlcyB1c2VyICsgZ2FzLXRhbmsgc2lnbmF0dXJlcyBpbiBzaWduZXIgb3JkZXIgZm9yIGR1cmFibGUgbm9uY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGN0QnVpbGRlcigpO1xuICAgIGFkZFRyYW5zZmVyKGJ1aWxkZXIpO1xuICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7XG4gICAgICB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWNjb3VudC5wdWIsXG4gICAgICBhdXRoV2FsbGV0QWRkcmVzczogZ2FzVGFuay5wdWIsXG4gICAgfSk7XG4gICAgYnVpbGRlci52ZXJzaW9uKDEpLnRyYW5zYWN0aW9uQ29uZmlnKHYxQ29uZmlnKTtcblxuICAgIGNvbnN0IHVuc2lnbmVkID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgY29uc3QgbWVzc2FnZUJ5dGVzID0gdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhO1xuICAgIHVuc2lnbmVkLmlzVmVyc2lvbmVkVHJhbnNhY3Rpb24oKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgdW5zaWduZWQudjFUcmFuc2FjdGlvbkJ5dGVzIVswXS5zaG91bGQuZXF1YWwoMHg4MSk7XG5cbiAgICAvLyAyIHJlcXVpcmVkIHNpZ25lcnM6IHVzZXIgKGZlZSBwYXllcikgKyBnYXMtdGFuayBub25jZSBhdXRob3JpdHlcbiAgICBtZXNzYWdlQnl0ZXNbMV0uc2hvdWxkLmVxdWFsKDIpO1xuXG4gICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVYxTWVzc2FnZShtZXNzYWdlQnl0ZXMpO1xuICAgIC8vIG5vbmNlIGhhc2ggb2NjdXBpZXMgdGhlIGJsb2NraGFzaCBmaWVsZFxuICAgIGRlY29kZWQuYmxvY2toYXNoLnNob3VsZC5lcXVhbChyZWNlbnRCbG9ja0hhc2gpO1xuICAgIC8vIGZpcnN0IGluc3RydWN0aW9uIGlzIEFkdmFuY2VOb25jZUFjY291bnQgKFN5c3RlbSBQcm9ncmFtLCBkaXNjcmltaW5hdG9yIDQpXG4gICAgZGVjb2RlZC5jb21waWxlZEluc3RydWN0aW9uc1swXS5kYXRhWzBdLnNob3VsZC5lcXVhbCg0KTtcbiAgICBkZWNvZGVkLnN0YXRpY0FjY291bnRzW2RlY29kZWQuY29tcGlsZWRJbnN0cnVjdGlvbnNbMF0ucHJvZ3JhbUFkZHJlc3NJbmRleF0uc2hvdWxkLmVxdWFsKFxuICAgICAgU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQudG9CYXNlNTgoKVxuICAgICk7XG4gICAgLy8gc2lnbmVyIG9yZGVyOiBmZWUgcGF5ZXIgKHVzZXIpIGZpcnN0LCB0aGVuIGdhcyB0YW5rXG4gICAgZGVjb2RlZC5zdGF0aWNBY2NvdW50cy5zbGljZSgwLCAyKS5zaG91bGQuZGVlcEVxdWFsKFthY2NvdW50LnB1YiwgZ2FzVGFuay5wdWJdKTtcblxuICAgIC8vIGF0dGFjaCB0aGUgZ2FzLXRhbmsgSFNNIHNpZ25hdHVyZSBvdmVyIHRoZSBzYW1lIG1lc3NhZ2UgYnl0ZXNcbiAgICBjb25zdCBzaWduV2l0aCA9IChrZXlQYWlyOiBTb2xhbmFLZXlzLCBtc2c6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5ID0+IHtcbiAgICAgIGNvbnN0IHBydiA9IGtleVBhaXIucHJ2O1xuICAgICAgaWYgKHR5cGVvZiBwcnYgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcml2YXRlIGtleSBmb3IgdGVzdCBzaWduZXInKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGtwID0gbmV3IEtleVBhaXIoeyBwcnYgfSk7XG4gICAgICByZXR1cm4gbmFjbC5zaWduLmRldGFjaGVkKG1zZywga3AuZ2V0S2V5cyh0cnVlKS5wcnYgYXMgVWludDhBcnJheSk7XG4gICAgfTtcbiAgICBjb25zdCBnYXNUYW5rU2lnID0gc2lnbldpdGgoZ2FzVGFuaywgbWVzc2FnZUJ5dGVzKTtcbiAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogZ2FzVGFuay5wdWIgfSwgQnVmZmVyLmZyb20oZ2FzVGFua1NpZykpO1xuICAgIGNvbnN0IHNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgLy8gbWVzc2FnZSBieXRlLWlkZW50aXR5IGJldHdlZW4gYnVpbGQgYW5kIHNpZ25cbiAgICBCdWZmZXIuZnJvbShzaWduZWQudjFNZXNzYWdlQnl0ZXMhKS5lcXVhbHMoQnVmZmVyLmZyb20obWVzc2FnZUJ5dGVzKSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBzaWduZWQudjFUcmFuc2FjdGlvbkJ5dGVzIS5sZW5ndGguc2hvdWxkLmVxdWFsKG1lc3NhZ2VCeXRlcy5sZW5ndGggKyAyICogNjQpO1xuXG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VXaXJlVHJhbnNhY3Rpb24oc2lnbmVkLnYxVHJhbnNhY3Rpb25CeXRlcyEpO1xuICAgIHBhcnNlZC5zaWduZXJQdWJsaWNLZXlzLnNob3VsZC5kZWVwRXF1YWwoW2FjY291bnQucHViLCBnYXNUYW5rLnB1Yl0pO1xuICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlcXVpcmUgdHJhbnNhY3Rpb25Db25maWcgd2hlbiB2ZXJzaW9uKDEpIGlzIHNldCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gY3RCdWlsZGVyKCk7XG4gICAgYWRkVHJhbnNmZXIoYnVpbGRlcik7XG4gICAgYnVpbGRlci52ZXJzaW9uKDEpO1xuXG4gICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3RyYW5zYWN0aW9uQ29uZmlnIGlzIHJlcXVpcmVkLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVqZWN0IHYxIHRyYW5zYWN0aW9ucyB0aGF0IGV4Y2VlZCB0aGUgNDA5Ni1ieXRlIHdpcmUgbGltaXQgYXQgYnJvYWRjYXN0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBjdEJ1aWxkZXIoKTtcbiAgICBhZGRUcmFuc2ZlcihidWlsZGVyKTtcbiAgICBidWlsZGVyLnZlcnNpb24oMSkudHJhbnNhY3Rpb25Db25maWcodjFDb25maWcpO1xuXG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgcmF3VHggPSAodHggYXMgVHJhbnNhY3Rpb24pLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAvLyBGb3JjZSBhbiBvdmVyc2l6ZWQgdjEgcGF5bG9hZCBieSBwYWRkaW5nIHRoZSB3aXJlIGJ5dGVzIHBhc3QgdGhlIGxpbWl0LlxuICAgIGNvbnN0IHdpcmUgPSBCdWZmZXIuZnJvbShyYXdUeCwgJ2Jhc2U2NCcpO1xuICAgIGNvbnN0IG92ZXJzaXplZCA9IEJ1ZmZlci5jb25jYXQoW3dpcmUsIEJ1ZmZlci5hbGxvYyg0MDk3KV0pO1xuICAgIG92ZXJzaXplZFswXS5zaG91bGQuZXF1YWwoMHg4MSk7XG5cbiAgICAvLyBCcm9hZGNhc3QgdGhlIG92ZXJzaXplZCB2MSB0eCB0aHJvdWdoIFNvbC5wcm90b3R5cGUuYnJvYWRjYXN0VHJhbnNhY3Rpb24gd2l0aCBhbiBSUENcbiAgICAvLyBzdHViIHRoYXQgbXVzdCBub3QgYmUgcmVhY2hlZCAtIHRoZSBzaXplIGd1YXJkIHNob3J0LWNpcmN1aXRzIGJlZm9yZSB0aGUgUlBDIGNhbGwuXG4gICAgY29uc3QgY29pbiA9IHsgZ2V0RGF0YUZyb21Ob2RlOiAoKSA9PiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ1JQQyBzaG91bGQgbm90IGJlIHJlYWNoZWQnKSkgfSBhcyB1bmtub3duIGFzIFNvbDtcbiAgICBhd2FpdCAoU29sLnByb3RvdHlwZS5icm9hZGNhc3RUcmFuc2FjdGlvbiBhcyAob3B0czogeyBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb246IHN0cmluZyB9KSA9PiBQcm9taXNlPG5ldmVyPilcbiAgICAgIC5jYWxsKGNvaW4sIHsgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uOiBvdmVyc2l6ZWQudG9TdHJpbmcoJ2Jhc2U2NCcpIH0pXG4gICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvZXhjZWVkcyB0aGUgNDA5Ni1ieXRlIHNpemUgbGltaXQvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBsZWF2ZSB0aGUgbm9uLXYxIHBhdGggdW5jaGFuZ2VkICh2MC9sZWdhY3kgZGVmYXVsdCknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGN0QnVpbGRlcigpO1xuICAgIGJ1aWxkZXIuY29uZmlndXJlQWNjb3VudCh7XG4gICAgICB0b2tlbkFkZHJlc3MsXG4gICAgICBtaW50QWRkcmVzcyxcbiAgICAgIGF1dGhvcml0eUFkZHJlc3MsXG4gICAgICBlbGdhbWFsUHVia2V5OiAnMTEnLnJlcGVhdCgzMiksXG4gICAgICBkZWNyeXB0YWJsZVplcm9CYWxhbmNlOiB6ZXJvQnl0ZXMzNixcbiAgICAgIG1heGltdW1QZW5kaW5nQmFsYW5jZUNyZWRpdENvdW50ZXI6ICc2NTUzNicsXG4gICAgICBwcm9vZkluc3RydWN0aW9uT2Zmc2V0OiAxLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgcmF3VHggPSAodHggYXMgVHJhbnNhY3Rpb24pLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgLy8gbGVnYWN5IHRyYW5zYWN0aW9uIGRvZXMgbm90IGNhcnJ5IHRoZSAweDgxIHYxIHByZWZpeFxuICAgIEJ1ZmZlci5mcm9tKHJhd1R4LCAnYmFzZTY0JylbMF0uc2hvdWxkLm5vdC5lcXVhbCgweDgxKTtcbiAgICAodHggYXMgVHJhbnNhY3Rpb24pLmlzVmVyc2lvbmVkVHJhbnNhY3Rpb24oKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIFV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confidentialTransferV1Ops.d.ts","sourceRoot":"","sources":["../../../../../test/unit/transactionBuilder/confidentialTransferV1Ops.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
require("should");
|
|
37
|
+
const src_1 = require("../../../src");
|
|
38
|
+
const testData = __importStar(require("../../resources/sol"));
|
|
39
|
+
const getBuilderFactory_1 = require("../getBuilderFactory");
|
|
40
|
+
describe('Solana Confidential Transfer Builder - v1 per-op', () => {
|
|
41
|
+
const factory = (0, getBuilderFactory_1.getBuilderFactory)('sol');
|
|
42
|
+
const account = new src_1.KeyPair(testData.associatedTokenAccounts.accounts[0]).getKeys();
|
|
43
|
+
const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
|
|
44
|
+
const mintAddress = testData.associatedTokenAccountsForSol2022.mintId;
|
|
45
|
+
const tokenAddress = testData.associatedTokenAccountsForSol2022.accounts[0].ata;
|
|
46
|
+
const destinationTokenAddress = 'ENn8a2tGMS9bR5XV7smGHJvNgzkyxJmnD2eUvQxY5jSP';
|
|
47
|
+
const authorityAddress = account.pub;
|
|
48
|
+
const zeroBytes36 = '00'.repeat(36);
|
|
49
|
+
const zeroBytes64 = '00'.repeat(64);
|
|
50
|
+
const proofDataHex = '00'.repeat(320);
|
|
51
|
+
const v1Config = {
|
|
52
|
+
computeUnitLimit: 200000,
|
|
53
|
+
heapSize: 32768,
|
|
54
|
+
loadedAccountsDataSizeLimit: 65536,
|
|
55
|
+
priorityFee: 5000,
|
|
56
|
+
};
|
|
57
|
+
const ctBuilder = () => {
|
|
58
|
+
const b = factory.getConfidentialTransferBuilder();
|
|
59
|
+
b.nonce(recentBlockHash).sender(account.pub).sign({ key: account.prv });
|
|
60
|
+
return b;
|
|
61
|
+
};
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
+
const toV1 = (b) => b.version(1).transactionConfig(v1Config);
|
|
64
|
+
const assertV1 = (tx) => {
|
|
65
|
+
const wire = Buffer.from(tx.toBroadcastFormat(), 'base64');
|
|
66
|
+
wire[0].should.equal(0x81);
|
|
67
|
+
wire.length.should.be.lessThanOrEqual(4096);
|
|
68
|
+
tx.v1MessageBytes.should.be.an.instanceOf(Uint8Array);
|
|
69
|
+
};
|
|
70
|
+
it('should build a Deposit as a valid v1 transaction', async () => {
|
|
71
|
+
const b = ctBuilder();
|
|
72
|
+
b.confidentialDeposit({ tokenAddress, mintAddress, authorityAddress, amount: '1000000', decimals: 6 });
|
|
73
|
+
const tx = await toV1(b).build();
|
|
74
|
+
assertV1(tx);
|
|
75
|
+
});
|
|
76
|
+
it('should build a Withdraw (with equality + range proofs) as a valid v1 transaction', async () => {
|
|
77
|
+
const b = ctBuilder();
|
|
78
|
+
b.confidentialWithdraw({
|
|
79
|
+
tokenAddress,
|
|
80
|
+
mintAddress,
|
|
81
|
+
authorityAddress,
|
|
82
|
+
amount: '500000',
|
|
83
|
+
decimals: 6,
|
|
84
|
+
newDecryptableAvailableBalance: zeroBytes36,
|
|
85
|
+
equalityProofInstructionOffset: 1,
|
|
86
|
+
rangeProofInstructionOffset: 2,
|
|
87
|
+
})
|
|
88
|
+
.verifyEqualityProof({ proofData: proofDataHex })
|
|
89
|
+
.verifyRangeProof({ proofData: '00'.repeat(1000) });
|
|
90
|
+
const tx = await toV1(b).build();
|
|
91
|
+
assertV1(tx);
|
|
92
|
+
});
|
|
93
|
+
it('should force ApplyPendingBalance to instruction #1 even when added last', async () => {
|
|
94
|
+
const b = ctBuilder();
|
|
95
|
+
// Deliberately add Deposit first, then ApplyPendingBalance out of order.
|
|
96
|
+
b.confidentialDeposit({
|
|
97
|
+
tokenAddress,
|
|
98
|
+
mintAddress,
|
|
99
|
+
authorityAddress,
|
|
100
|
+
amount: '1000000',
|
|
101
|
+
decimals: 6,
|
|
102
|
+
}).applyPendingBalance({
|
|
103
|
+
tokenAddress,
|
|
104
|
+
authorityAddress,
|
|
105
|
+
expectedPendingBalanceCreditCounter: '2',
|
|
106
|
+
newDecryptableAvailableBalance: zeroBytes36,
|
|
107
|
+
});
|
|
108
|
+
const tx = await toV1(b).build();
|
|
109
|
+
assertV1(tx);
|
|
110
|
+
const instructions = tx.toJson().instructionsData;
|
|
111
|
+
instructions.should.have.length(2);
|
|
112
|
+
instructions[0].type.should.equal('ApplyPendingBalance');
|
|
113
|
+
instructions[1].type.should.equal('ConfidentialDeposit');
|
|
114
|
+
});
|
|
115
|
+
it('should build a private Transfer with all proofs as a valid v1 transaction', async () => {
|
|
116
|
+
const b = ctBuilder();
|
|
117
|
+
b.applyPendingBalance({
|
|
118
|
+
tokenAddress,
|
|
119
|
+
authorityAddress,
|
|
120
|
+
expectedPendingBalanceCreditCounter: '2',
|
|
121
|
+
newDecryptableAvailableBalance: zeroBytes36,
|
|
122
|
+
})
|
|
123
|
+
.verifyEqualityProof({ proofData: proofDataHex })
|
|
124
|
+
.verifyValidityProof({ proofData: proofDataHex })
|
|
125
|
+
.verifyRangeProof({ proofData: '00'.repeat(1000) })
|
|
126
|
+
.confidentialTransfer({
|
|
127
|
+
sourceTokenAddress: tokenAddress,
|
|
128
|
+
mintAddress,
|
|
129
|
+
destinationTokenAddress,
|
|
130
|
+
authorityAddress,
|
|
131
|
+
newSourceDecryptableAvailableBalance: zeroBytes36,
|
|
132
|
+
transferAmountAuditorCiphertextLo: zeroBytes64,
|
|
133
|
+
transferAmountAuditorCiphertextHi: zeroBytes64,
|
|
134
|
+
equalityProofInstructionOffset: 1,
|
|
135
|
+
ciphertextValidityProofInstructionOffset: 2,
|
|
136
|
+
rangeProofInstructionOffset: 3,
|
|
137
|
+
});
|
|
138
|
+
const tx = await toV1(b).build();
|
|
139
|
+
assertV1(tx);
|
|
140
|
+
const instructions = tx.toJson().instructionsData;
|
|
141
|
+
instructions[0].type.should.equal('ApplyPendingBalance');
|
|
142
|
+
instructions[4].type.should.equal('ConfidentialTransfer');
|
|
143
|
+
});
|
|
144
|
+
it('should build ConfigureAccount + VerifyPubkeyValidity as a valid v1 transaction', async () => {
|
|
145
|
+
const b = ctBuilder();
|
|
146
|
+
b.configureAccount({
|
|
147
|
+
tokenAddress,
|
|
148
|
+
mintAddress,
|
|
149
|
+
authorityAddress,
|
|
150
|
+
elgamalPubkey: '11'.repeat(32),
|
|
151
|
+
decryptableZeroBalance: zeroBytes36,
|
|
152
|
+
maximumPendingBalanceCreditCounter: '65536',
|
|
153
|
+
proofInstructionOffset: 1,
|
|
154
|
+
}).verifyPubkeyValidity({ proofData: proofDataHex });
|
|
155
|
+
const tx = await toV1(b).build();
|
|
156
|
+
assertV1(tx);
|
|
157
|
+
});
|
|
158
|
+
it('should build each verify-proof instruction through v1', async () => {
|
|
159
|
+
const b = ctBuilder();
|
|
160
|
+
b.verifyEqualityProof({ proofData: proofDataHex })
|
|
161
|
+
.verifyValidityProof({ proofData: proofDataHex })
|
|
162
|
+
.verifyRangeProof({ proofData: '00'.repeat(1000) })
|
|
163
|
+
.verifyPubkeyValidity({ proofData: proofDataHex });
|
|
164
|
+
const tx = await toV1(b).build();
|
|
165
|
+
assertV1(tx);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlkZW50aWFsVHJhbnNmZXJWMU9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvY29uZmlkZW50aWFsVHJhbnNmZXJWMU9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtCQUFnQjtBQUNoQixzQ0FBb0Q7QUFDcEQsOERBQWdEO0FBQ2hELDREQUF5RDtBQUV6RCxRQUFRLENBQUMsa0RBQWtELEVBQUUsR0FBRyxFQUFFO0lBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUEscUNBQWlCLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxhQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BGLE1BQU0sZUFBZSxHQUFHLDhDQUE4QyxDQUFDO0lBRXZFLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxNQUFNLENBQUM7SUFDdEUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDaEYsTUFBTSx1QkFBdUIsR0FBRyw4Q0FBOEMsQ0FBQztJQUMvRSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFFckMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsTUFBTSxRQUFRLEdBQUc7UUFDZixnQkFBZ0Is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QUMsS0FBSyxFQUFFLENBQUM7UUFDakMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckUsTUFBTSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxDQUFDO2FBQy9DLG1CQUFtQixDQUFDLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxDQUFDO2FBQ2hELGdCQUFnQixDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzthQUNsRCxvQkFBb0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBLZXlQYWlyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IGdldEJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vZ2V0QnVpbGRlckZhY3RvcnknO1xuXG5kZXNjcmliZSgnU29sYW5hIENvbmZpZGVudGlhbCBUcmFuc2ZlciBCdWlsZGVyIC0gdjEgcGVyLW9wJywgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gZ2V0QnVpbGRlckZhY3RvcnkoJ3NvbCcpO1xuICBjb25zdCBhY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHMuYWNjb3VudHNbMF0pLmdldEtleXMoKTtcbiAgY29uc3QgcmVjZW50QmxvY2tIYXNoID0gJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJztcblxuICBjb25zdCBtaW50QWRkcmVzcyA9IHRlc3REYXRhLmFzc29jaWF0ZWRUb2tlbkFjY291bnRzRm9yU29sMjAyMi5taW50SWQ7XG4gIGNvbnN0IHRva2VuQWRkcmVzcyA9IHRlc3REYXRhLmFzc29jaWF0ZWRUb2tlbkFjY291bnRzRm9yU29sMjAyMi5hY2NvdW50c1swXS5hdGE7XG4gIGNvbnN0IGRlc3RpbmF0aW9uVG9rZW5BZGRyZXNzID0gJ0VObjhhMnRHTVM5YlI1WFY3c21HSEp2Tmd6a3l4Sm1uRDJlVXZReFk1alNQJztcbiAgY29uc3QgYXV0aG9yaXR5QWRkcmVzcyA9IGFjY291bnQucHViO1xuXG4gIGNvbnN0IHplcm9CeXRlczM2ID0gJzAwJy5yZXBlYXQoMzYpO1xuICBjb25zdCB6ZXJvQnl0ZXM2NCA9ICcwMCcucmVwZWF0KDY0KTtcbiAgY29uc3QgcHJvb2ZEYXRhSGV4ID0gJzAwJy5yZXBlYXQoMzIwKTtcblxuICBjb25zdCB2MUNvbmZpZyA9IHtcbiAgICBjb21wdXRlVW5pdExpbWl0OiAyMDBfMDAwLFxuICAgIGhlYXBTaXplOiAzMl83NjgsXG4gICAgbG9hZGVkQWNjb3VudHNEYXRhU2l6ZUxpbWl0OiA2NV81MzYsXG4gICAgcHJpb3JpdHlGZWU6IDVfMDAwLFxuICB9O1xuXG4gIGNvbnN0IGN0QnVpbGRlciA9ICgpID0+IHtcbiAgICBjb25zdCBiID0gZmFjdG9yeS5nZXRDb25maWRlbnRpYWxUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICBiLm5vbmNlKHJlY2VudEJsb2NrSGFzaCkuc2VuZGVyKGFjY291bnQucHViKS5zaWduKHsga2V5OiBhY2NvdW50LnBydiB9KTtcbiAgICByZXR1cm4gYjtcbiAgfTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdCB0b1YxID0gKGI6IGFueSkgPT4gYi52ZXJzaW9uKDEpLnRyYW5zYWN0aW9uQ29uZmlnKHYxQ29uZmlnKTtcblxuICBjb25zdCBhc3NlcnRWMSA9ICh0eDogVHJhbnNhY3Rpb24pID0+IHtcbiAgICBjb25zdCB3aXJlID0gQnVmZmVyLmZyb20oKHR4IGFzIFRyYW5zYWN0aW9uKS50b0Jyb2FkY2FzdEZvcm1hdCgpLCAnYmFzZTY0Jyk7XG4gICAgd2lyZVswXS5zaG91bGQuZXF1YWwoMHg4MSk7XG4gICAgd2lyZS5sZW5ndGguc2hvdWxkLmJlLmxlc3NUaGFuT3JFcXVhbCg0MDk2KTtcbiAgICAodHggYXMgVHJhbnNhY3Rpb24pLnYxTWVzc2FnZUJ5dGVzIS5zaG91bGQuYmUuYW4uaW5zdGFuY2VPZihVaW50OEFycmF5KTtcbiAgfTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgRGVwb3NpdCBhcyBhIHZhbGlkIHYxIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGIgPSBjdEJ1aWxkZXIoKTtcbiAgICBiLmNvbmZpZGVudGlhbERlcG9zaXQoeyB0b2tlbkFkZHJlc3MsIG1pbnRBZGRyZXNzLCBhdXRob3JpdHlBZGRyZXNzLCBhbW91bnQ6ICcxMDAwMDAwJywgZGVjaW1hbHM6IDYgfSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0b1YxKGIpLmJ1aWxkKCk7XG4gICAgYXNzZXJ0VjEodHgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgV2l0aGRyYXcgKHdpdGggZXF1YWxpdHkgKyByYW5nZSBwcm9vZnMpIGFzIGEgdmFsaWQgdjEgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYiA9IGN0QnVpbGRlcigpO1xuICAgIGIuY29uZmlkZW50aWFsV2l0aGRyYXcoe1xuICAgICAgdG9rZW5BZGRyZXNzLFxuICAgICAgbWludEFkZHJlc3MsXG4gICAgICBhdXRob3JpdHlBZGRyZXNzLFxuICAgICAgYW1vdW50OiAnNTAwMDAwJyxcbiAgICAgIGRlY2ltYWxzOiA2LFxuICAgICAgbmV3RGVjcnlwdGFibGVBdmFpbGFibGVCYWxhbmNlOiB6ZXJvQnl0ZXMzNixcbiAgICAgIGVxdWFsaXR5UHJvb2ZJbnN0cnVjdGlvbk9mZnNldDogMSxcbiAgICAgIHJhbmdlUHJvb2ZJbnN0cnVjdGlvbk9mZnNldDogMixcbiAgICB9KVxuICAgICAgLnZlcmlmeUVxdWFsaXR5UHJvb2YoeyBwcm9vZkRhdGE6IHByb29mRGF0YUhleCB9KVxuICAgICAgLnZlcmlmeVJhbmdlUHJvb2YoeyBwcm9vZkRhdGE6ICcwMCcucmVwZWF0KDEwMDApIH0pO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdG9WMShiKS5idWlsZCgpO1xuICAgIGFzc2VydFYxKHR4KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmb3JjZSBBcHBseVBlbmRpbmdCYWxhbmNlIHRvIGluc3RydWN0aW9uICMxIGV2ZW4gd2hlbiBhZGRlZCBsYXN0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGIgPSBjdEJ1aWxkZXIoKTtcbiAgICAvLyBEZWxpYmVyYXRlbHkgYWRkIERlcG9zaXQgZmlyc3QsIHRoZW4gQXBwbHlQZW5kaW5nQmFsYW5jZSBvdXQgb2Ygb3JkZXIuXG4gICAgYi5jb25maWRlbnRpYWxEZXBvc2l0KHtcbiAgICAgIHRva2VuQWRkcmVzcyxcbiAgICAgIG1pbnRBZGRyZXNzLFxuICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgZGVjaW1hbHM6IDYsXG4gICAgfSkuYXBwbHlQZW5kaW5nQmFsYW5jZSh7XG4gICAgICB0b2tlbkFkZHJlc3MsXG4gICAgICBhdXRob3JpdHlBZGRyZXNzLFxuICAgICAgZXhwZWN0ZWRQZW5kaW5nQmFsYW5jZUNyZWRpdENvdW50ZXI6ICcyJyxcbiAgICAgIG5ld0RlY3J5cHRhYmxlQXZhaWxhYmxlQmFsYW5jZTogemVyb0J5dGVzMzYsXG4gICAgfSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0b1YxKGIpLmJ1aWxkKCk7XG4gICAgYXNzZXJ0VjEodHgpO1xuICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IHR4LnRvSnNvbigpLmluc3RydWN0aW9uc0RhdGE7XG4gICAgaW5zdHJ1Y3Rpb25zLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICBpbnN0cnVjdGlvbnNbMF0udHlwZS5zaG91bGQuZXF1YWwoJ0FwcGx5UGVuZGluZ0JhbGFuY2UnKTtcbiAgICBpbnN0cnVjdGlvbnNbMV0udHlwZS5zaG91bGQuZXF1YWwoJ0NvbmZpZGVudGlhbERlcG9zaXQnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIHByaXZhdGUgVHJhbnNmZXIgd2l0aCBhbGwgcHJvb2ZzIGFzIGEgdmFsaWQgdjEgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYiA9IGN0QnVpbGRlcigpO1xuICAgIGIuYXBwbHlQZW5kaW5nQmFsYW5jZSh7XG4gICAgICB0b2tlbkFkZHJlc3MsXG4gICAgICBhdXRob3JpdHlBZGRyZXNzLFxuICAgICAgZXhwZWN0ZWRQZW5kaW5nQmFsYW5jZUNyZWRpdENvdW50ZXI6ICcyJyxcbiAgICAgIG5ld0RlY3J5cHRhYmxlQXZhaWxhYmxlQmFsYW5jZTogemVyb0J5dGVzMzYsXG4gICAgfSlcbiAgICAgIC52ZXJpZnlFcXVhbGl0eVByb29mKHsgcHJvb2ZEYXRhOiBwcm9vZkRhdGFIZXggfSlcbiAgICAgIC52ZXJpZnlWYWxpZGl0eVByb29mKHsgcHJvb2ZEYXRhOiBwcm9vZkRhdGFIZXggfSlcbiAgICAgIC52ZXJpZnlSYW5nZVByb29mKHsgcHJvb2ZEYXRhOiAnMDAnLnJlcGVhdCgxMDAwKSB9KVxuICAgICAgLmNvbmZpZGVudGlhbFRyYW5zZmVyKHtcbiAgICAgICAgc291cmNlVG9rZW5BZGRyZXNzOiB0b2tlbkFkZHJlc3MsXG4gICAgICAgIG1pbnRBZGRyZXNzLFxuICAgICAgICBkZXN0aW5hdGlvblRva2VuQWRkcmVzcyxcbiAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgbmV3U291cmNlRGVjcnlwdGFibGVBdmFpbGFibGVCYWxhbmNlOiB6ZXJvQnl0ZXMzNixcbiAgICAgICAgdHJhbnNmZXJBbW91bnRBdWRpdG9yQ2lwaGVydGV4dExvOiB6ZXJvQnl0ZXM2NCxcbiAgICAgICAgdHJhbnNmZXJBbW91bnRBdWRpdG9yQ2lwaGVydGV4dEhpOiB6ZXJvQnl0ZXM2NCxcbiAgICAgICAgZXF1YWxpdHlQcm9vZkluc3RydWN0aW9uT2Zmc2V0OiAxLFxuICAgICAgICBjaXBoZXJ0ZXh0VmFsaWRpdHlQcm9vZkluc3RydWN0aW9uT2Zmc2V0OiAyLFxuICAgICAgICByYW5nZVByb29mSW5zdHJ1Y3Rpb25PZmZzZXQ6IDMsXG4gICAgICB9KTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHRvVjEoYikuYnVpbGQoKTtcbiAgICBhc3NlcnRWMSh0eCk7XG4gICAgY29uc3QgaW5zdHJ1Y3Rpb25zID0gdHgudG9Kc29uKCkuaW5zdHJ1Y3Rpb25zRGF0YTtcbiAgICBpbnN0cnVjdGlvbnNbMF0udHlwZS5zaG91bGQuZXF1YWwoJ0FwcGx5UGVuZGluZ0JhbGFuY2UnKTtcbiAgICBpbnN0cnVjdGlvbnNbNF0udHlwZS5zaG91bGQuZXF1YWwoJ0NvbmZpZGVudGlhbFRyYW5zZmVyJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgQ29uZmlndXJlQWNjb3VudCArIFZlcmlmeVB1YmtleVZhbGlkaXR5IGFzIGEgdmFsaWQgdjEgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYiA9IGN0QnVpbGRlcigpO1xuICAgIGIuY29uZmlndXJlQWNjb3VudCh7XG4gICAgICB0b2tlbkFkZHJlc3MsXG4gICAgICBtaW50QWRkcmVzcyxcbiAgICAgIGF1dGhvcml0eUFkZHJlc3MsXG4gICAgICBlbGdhbWFsUHVia2V5OiAnMTEnLnJlcGVhdCgzMiksXG4gICAgICBkZWNyeXB0YWJsZVplcm9CYWxhbmNlOiB6ZXJvQnl0ZXMzNixcbiAgICAgIG1heGltdW1QZW5kaW5nQmFsYW5jZUNyZWRpdENvdW50ZXI6ICc2NTUzNicsXG4gICAgICBwcm9vZkluc3RydWN0aW9uT2Zmc2V0OiAxLFxuICAgIH0pLnZlcmlmeVB1YmtleVZhbGlkaXR5KHsgcHJvb2ZEYXRhOiBwcm9vZkRhdGFIZXggfSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0b1YxKGIpLmJ1aWxkKCk7XG4gICAgYXNzZXJ0VjEodHgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGVhY2ggdmVyaWZ5LXByb29mIGluc3RydWN0aW9uIHRocm91Z2ggdjEnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYiA9IGN0QnVpbGRlcigpO1xuICAgIGIudmVyaWZ5RXF1YWxpdHlQcm9vZih7IHByb29mRGF0YTogcHJvb2ZEYXRhSGV4IH0pXG4gICAgICAudmVyaWZ5VmFsaWRpdHlQcm9vZih7IHByb29mRGF0YTogcHJvb2ZEYXRhSGV4IH0pXG4gICAgICAudmVyaWZ5UmFuZ2VQcm9vZih7IHByb29mRGF0YTogJzAwJy5yZXBlYXQoMTAwMCkgfSlcbiAgICAgIC52ZXJpZnlQdWJrZXlWYWxpZGl0eSh7IHByb29mRGF0YTogcHJvb2ZEYXRhSGV4IH0pO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdG9WMShiKS5idWlsZCgpO1xuICAgIGFzc2VydFYxKHR4KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customInstructionBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/transactionBuilder/customInstructionBuilder.ts"],"names":[],"mappings":""}
|