@bitgo-beta/sdk-coin-sol 7.6.4-beta.71 → 7.6.4-beta.710
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 +128 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.js +311 -0
- package/dist/{src → cjs/src}/lib/constants.d.ts +89 -2
- package/dist/cjs/src/lib/constants.d.ts.map +1 -0
- package/dist/cjs/src/lib/constants.js +269 -0
- package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/customInstructionBuilder.js +289 -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 +526 -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 +5 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/index.js +93 -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 +1220 -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 +30 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +205 -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 +1094 -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 +105 -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 +22 -0
- package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/transaction.js +661 -0
- package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +9 -1
- package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilder.js +388 -0
- package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +14 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.js +222 -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 +5 -0
- package/dist/cjs/src/lib/utils.d.ts.map +1 -0
- package/dist/cjs/src/lib/utils.js +657 -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 +1670 -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/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/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 +5038 -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/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 +58 -0
- package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction.js +1108 -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/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 +909 -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 +144 -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 +167 -0
- package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -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/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 +628 -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 +128 -0
- package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/esm/lib/confidentialTransferBuilder.js +304 -0
- package/dist/esm/lib/constants.d.ts +227 -0
- package/dist/esm/lib/constants.d.ts.map +1 -0
- package/dist/esm/lib/constants.js +266 -0
- package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
- package/dist/esm/lib/customInstructionBuilder.js +282 -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 +526 -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 +27 -0
- package/dist/esm/lib/index.d.ts.map +1 -0
- package/dist/esm/lib/index.js +27 -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 +1212 -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 +30 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.js +202 -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 +1088 -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 +99 -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 +125 -0
- package/dist/esm/lib/transaction.d.ts.map +1 -0
- package/dist/esm/lib/transaction.js +654 -0
- package/dist/esm/lib/transactionBuilder.d.ts +136 -0
- package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/esm/lib/transactionBuilder.js +381 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts +129 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/esm/lib/transactionBuilderFactory.js +218 -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 +205 -0
- package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
- package/dist/esm/lib/utils.js +619 -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 +1629 -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 +36 -16
- 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/customInstructionBuilder.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/customInstructionBuilder.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,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compileTransactionMessage = compileTransactionMessage;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const message_1 = require("./codecs/v1/message");
|
|
6
|
+
const config_1 = require("./codecs/v1/config");
|
|
7
|
+
// AccountRole bit values (mirror @solana/instructions).
|
|
8
|
+
const READONLY = 0;
|
|
9
|
+
const WRITABLE = 1;
|
|
10
|
+
const READONLY_SIGNER = 2;
|
|
11
|
+
const WRITABLE_SIGNER = 3;
|
|
12
|
+
const COMPUTE_BUDGET_PROGRAM_ID = 'ComputeBudget111111111111111111111111111111';
|
|
13
|
+
const SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR = 2;
|
|
14
|
+
const SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR = 3;
|
|
15
|
+
const MICRO_LAMPORTS_PER_LAMPORT = 1000000;
|
|
16
|
+
const MAX_ACCOUNTS = 64;
|
|
17
|
+
const MAX_SIGNERS = 12;
|
|
18
|
+
const MAX_INSTRUCTIONS = 64;
|
|
19
|
+
const MAX_ACCOUNTS_PER_INSTRUCTION = 255;
|
|
20
|
+
const isSigner = (role) => (role & READONLY_SIGNER) !== 0;
|
|
21
|
+
const isWritable = (role) => (role & WRITABLE) !== 0;
|
|
22
|
+
// Address ordering comparator matches @solana/addresses getAddressComparator.
|
|
23
|
+
const addressComparator = new Intl.Collator('en', {
|
|
24
|
+
caseFirst: 'lower',
|
|
25
|
+
ignorePunctuation: false,
|
|
26
|
+
localeMatcher: 'best fit',
|
|
27
|
+
numeric: false,
|
|
28
|
+
sensitivity: 'variant',
|
|
29
|
+
usage: 'sort',
|
|
30
|
+
}).compare;
|
|
31
|
+
function readU32LE(data, offset) {
|
|
32
|
+
return data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] << 24);
|
|
33
|
+
}
|
|
34
|
+
function readU64LE(data, offset) {
|
|
35
|
+
let value = 0;
|
|
36
|
+
for (let i = 0; i < 8; i++) {
|
|
37
|
+
value += Number(data[offset + i]) * Math.pow(2, 8 * i);
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Strip ComputeBudget instructions (SetComputeUnitLimit / SetComputeUnitPrice)
|
|
43
|
+
* and fold their values into the transaction config when still unset.
|
|
44
|
+
*/
|
|
45
|
+
function stripComputeBudgetInstructions(instructions, transactionConfig) {
|
|
46
|
+
const filtered = [];
|
|
47
|
+
const config = { ...transactionConfig };
|
|
48
|
+
for (const instruction of instructions) {
|
|
49
|
+
const isComputeBudget = instruction.programId.toBase58() === COMPUTE_BUDGET_PROGRAM_ID;
|
|
50
|
+
const discriminator = instruction.data?.[0];
|
|
51
|
+
if (isComputeBudget && discriminator === SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR) {
|
|
52
|
+
if (config.computeUnitLimit === null) {
|
|
53
|
+
config.computeUnitLimit = readU32LE(instruction.data, 1);
|
|
54
|
+
}
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (isComputeBudget && discriminator === SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR) {
|
|
58
|
+
if (config.priorityFee === null && config.computeUnitLimit !== null) {
|
|
59
|
+
const microLamports = readU64LE(instruction.data, 1);
|
|
60
|
+
config.priorityFee = Math.ceil((microLamports * config.computeUnitLimit) / MICRO_LAMPORTS_PER_LAMPORT);
|
|
61
|
+
}
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
filtered.push(instruction);
|
|
65
|
+
}
|
|
66
|
+
return { instructions: filtered, config };
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Collect + order accounts exactly as @solana/transaction-messages does:
|
|
70
|
+
* fee payer first (WRITABLE_SIGNER), then static accounts sorted by
|
|
71
|
+
* (isSigner, isWritable, base58 collator). Duplicate addresses merge roles.
|
|
72
|
+
* Enforces the kit's invoked-program rules.
|
|
73
|
+
*/
|
|
74
|
+
function collectOrderedAccounts(feePayer, instructions) {
|
|
75
|
+
const feePayerAddress = feePayer.toBase58();
|
|
76
|
+
const map = new Map();
|
|
77
|
+
const metaByAddress = new Map();
|
|
78
|
+
const invokedPrograms = new Set();
|
|
79
|
+
map.set(feePayerAddress, WRITABLE_SIGNER);
|
|
80
|
+
metaByAddress.set(feePayerAddress, { address: feePayerAddress, role: WRITABLE_SIGNER });
|
|
81
|
+
const upsert = (address, role, isInvokedProgram) => {
|
|
82
|
+
if (address === feePayerAddress) {
|
|
83
|
+
if (isInvokedProgram) {
|
|
84
|
+
throw new sdk_core_1.BuildTransactionError(`Invoked program ${address} cannot pay fees`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (isInvokedProgram && isWritable(role)) {
|
|
88
|
+
throw new sdk_core_1.BuildTransactionError(`Invoked program ${address} must not be writable`);
|
|
89
|
+
}
|
|
90
|
+
const current = map.get(address);
|
|
91
|
+
if (current !== undefined) {
|
|
92
|
+
const merged = (current | role);
|
|
93
|
+
if (isInvokedProgram && isWritable(merged)) {
|
|
94
|
+
throw new sdk_core_1.BuildTransactionError(`Invoked program ${address} must not be writable`);
|
|
95
|
+
}
|
|
96
|
+
map.set(address, merged);
|
|
97
|
+
metaByAddress.set(address, { address, role: merged });
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
map.set(address, role);
|
|
101
|
+
metaByAddress.set(address, { address, role });
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
for (const instruction of instructions) {
|
|
105
|
+
const programAddress = instruction.programId.toBase58();
|
|
106
|
+
invokedPrograms.add(programAddress);
|
|
107
|
+
upsert(programAddress, READONLY, true);
|
|
108
|
+
for (const key of instruction.keys) {
|
|
109
|
+
upsert(key.pubkey.toBase58(), key.isSigner ? (key.isWritable ? WRITABLE_SIGNER : READONLY_SIGNER) : key.isWritable ? WRITABLE : READONLY, invokedPrograms.has(key.pubkey.toBase58()));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const ordered = [...metaByAddress.values()];
|
|
113
|
+
ordered.sort((a, b) => {
|
|
114
|
+
const aFee = a.address === feePayerAddress ? -1 : 0;
|
|
115
|
+
const bFee = b.address === feePayerAddress ? -1 : 0;
|
|
116
|
+
if (aFee !== bFee)
|
|
117
|
+
return aFee - bFee;
|
|
118
|
+
const aSigner = isSigner(a.role) ? -1 : 0;
|
|
119
|
+
const bSigner = isSigner(b.role) ? -1 : 0;
|
|
120
|
+
if (aSigner !== bSigner)
|
|
121
|
+
return aSigner - bSigner;
|
|
122
|
+
const aWritable = isWritable(a.role) ? -1 : 0;
|
|
123
|
+
const bWritable = isWritable(b.role) ? -1 : 0;
|
|
124
|
+
if (aWritable !== bWritable)
|
|
125
|
+
return aWritable - bWritable;
|
|
126
|
+
return addressComparator(a.address, b.address);
|
|
127
|
+
});
|
|
128
|
+
return ordered;
|
|
129
|
+
}
|
|
130
|
+
function computeHeader(orderedAccounts) {
|
|
131
|
+
let numSignerAccounts = 0;
|
|
132
|
+
let numReadonlySignerAccounts = 0;
|
|
133
|
+
let numReadonlyNonSignerAccounts = 0;
|
|
134
|
+
for (const account of orderedAccounts) {
|
|
135
|
+
if (isSigner(account.role)) {
|
|
136
|
+
numSignerAccounts++;
|
|
137
|
+
if (!isWritable(account.role)) {
|
|
138
|
+
numReadonlySignerAccounts++;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else if (!isWritable(account.role)) {
|
|
142
|
+
numReadonlyNonSignerAccounts++;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return { numSignerAccounts, numReadonlySignerAccounts, numReadonlyNonSignerAccounts };
|
|
146
|
+
}
|
|
147
|
+
function compileInstructions(instructions, orderedAccounts) {
|
|
148
|
+
const accountIndex = new Map();
|
|
149
|
+
orderedAccounts.forEach((account, index) => accountIndex.set(account.address, index));
|
|
150
|
+
return instructions.map((instruction) => ({
|
|
151
|
+
programAddressIndex: accountIndex.get(instruction.programId.toBase58()),
|
|
152
|
+
accountIndices: instruction.keys.map((k) => accountIndex.get(k.pubkey.toBase58())),
|
|
153
|
+
data: instruction.data ?? new Uint8Array(),
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Compile a Solana transaction message and return its wire bytes.
|
|
158
|
+
*
|
|
159
|
+
* Version-aware: only `version: 1` (SIMD-0296/0385) is implemented; other
|
|
160
|
+
* versions throw a clear unsupported-version error until they are added.
|
|
161
|
+
*
|
|
162
|
+
* @param args - version, instructions, fee payer, recent blockhash, and config
|
|
163
|
+
* @returns the serialized message bytes (v1 starts with the 0x81 version prefix)
|
|
164
|
+
*/
|
|
165
|
+
function compileTransactionMessage(args) {
|
|
166
|
+
const { version, instructions, feePayer, recentBlockhash, transactionConfig } = args;
|
|
167
|
+
if (version !== 1) {
|
|
168
|
+
throw new sdk_core_1.BuildTransactionError(`Unsupported transaction version: ${version}. Only version 1 is implemented.`);
|
|
169
|
+
}
|
|
170
|
+
if (!instructions || instructions.length === 0) {
|
|
171
|
+
throw new sdk_core_1.BuildTransactionError('At least one instruction is required to compile a v1 transaction');
|
|
172
|
+
}
|
|
173
|
+
if (!transactionConfig) {
|
|
174
|
+
throw new sdk_core_1.BuildTransactionError('transactionConfig is required to compile a v1 transaction');
|
|
175
|
+
}
|
|
176
|
+
const { instructions: filteredInstructions, config } = stripComputeBudgetInstructions(instructions, transactionConfig);
|
|
177
|
+
const orderedAccounts = collectOrderedAccounts(feePayer, filteredInstructions);
|
|
178
|
+
if (orderedAccounts.length > MAX_ACCOUNTS) {
|
|
179
|
+
throw new sdk_core_1.BuildTransactionError(`Too many accounts in v1 transaction: ${orderedAccounts.length} (max ${MAX_ACCOUNTS})`);
|
|
180
|
+
}
|
|
181
|
+
const numSigners = orderedAccounts.filter((a) => isSigner(a.role)).length;
|
|
182
|
+
if (numSigners > MAX_SIGNERS) {
|
|
183
|
+
throw new sdk_core_1.BuildTransactionError(`Too many signers in v1 transaction: ${numSigners} (max ${MAX_SIGNERS})`);
|
|
184
|
+
}
|
|
185
|
+
if (filteredInstructions.length > MAX_INSTRUCTIONS) {
|
|
186
|
+
throw new sdk_core_1.BuildTransactionError(`Too many instructions in v1 transaction: ${filteredInstructions.length} (max ${MAX_INSTRUCTIONS})`);
|
|
187
|
+
}
|
|
188
|
+
for (let i = 0; i < filteredInstructions.length; i++) {
|
|
189
|
+
if (filteredInstructions[i].keys.length > MAX_ACCOUNTS_PER_INSTRUCTION) {
|
|
190
|
+
throw new sdk_core_1.BuildTransactionError(`Too many accounts in instruction ${i}: ${filteredInstructions[i].keys.length} (max ${MAX_ACCOUNTS_PER_INSTRUCTION})`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
const header = computeHeader(orderedAccounts);
|
|
194
|
+
const { mask, values } = (0, config_1.encodeConfigMaskAndValues)(config);
|
|
195
|
+
const compiledInstructions = compileInstructions(filteredInstructions, orderedAccounts);
|
|
196
|
+
return (0, message_1.encodeV1Message)({
|
|
197
|
+
header,
|
|
198
|
+
configMask: mask,
|
|
199
|
+
configValues: values,
|
|
200
|
+
blockhash: recentBlockhash,
|
|
201
|
+
staticAccounts: orderedAccounts.map((account) => account.address),
|
|
202
|
+
compiledInstructions,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZVRyYW5zYWN0aW9uTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi9jb21waWxlVHJhbnNhY3Rpb25NZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBK01BLDhEQTJEQztBQTFRRCxtREFBNkQ7QUFFN0QsaURBQXVFO0FBQ3ZFLCtDQUErRDtBQWlCL0Qsd0RBQXdEO0FBQ3hELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNuQixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDbkIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUUxQixNQUFNLHlCQUF5QixHQUFHLDZDQUE2QyxDQUFDO0FBQ2hGLE1BQU0sb0NBQW9DLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sb0NBQW9DLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sMEJBQTBCLEdBQUcsT0FBUyxDQUFDO0FBRTdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN4QixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsTUFBTSw0QkFBNEIsR0FBRyxHQUFHLENBQUM7QUFFekMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFZLEVBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzRSxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXRFLDhFQUE4RTtBQUM5RSxNQUFNLGlCQUFpQixHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7SUFDaEQsU0FBUyxFQUFFLE9BQU87SUFDbEIsaUJBQWlCLEVBQUUsS0FBSztJQUN4QixhQUFhLEVBQUUsVUFBVTtJQUN6QixPQUFPLEVBQUUsS0FBSztJQUNkLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLEtBQUssRUFBRSxNQUFNO0NBQ2QsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUlYLFNBQVMsU0FBUyxDQUFDLElBQWdCLEVBQUUsTUFBYztJQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN0RyxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBZ0IsRUFBRSxNQUFjO0lBQ2pELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsOEJBQThCLENBQ3JDLFlBQXNDLEVBQ3RDLGlCQUFvQztJQUVwQyxNQUFNLFFBQVEsR0FBNkIsRUFBRSxDQUFDO0lBQzlDLE1BQU0sTUFBTSxHQUFzQixFQUFFLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUUzRCxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUsseUJBQXlCLENBQUM7UUFDdkYsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVDLElBQUksZUFBZSxJQUFJLGFBQWEsS0FBSyxvQ0FBb0MsRUFBRSxDQUFDO1lBQzlFLElBQUksTUFBTSxDQUFDLGdCQUFnQixLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNyQyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUNELFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxlQUFlLElBQUksYUFBYSxLQUFLLG9DQUFvQyxFQUFFLENBQUM7WUFDOUUsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3BFLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsMEJBQTBCLENBQUMsQ0FBQztZQUN6RyxDQUFDO1lBQ0QsU0FBUztRQUNYLENBQUM7UUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUM1QyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLHNCQUFzQixDQUFDLFFBQW1CLEVBQUUsWUFBc0M7SUFDekYsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ3RDLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO0lBQ3JELE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFMUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDMUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBRXhGLE1BQU0sTUFBTSxHQUFHLENBQUMsT0FBZSxFQUFFLElBQVksRUFBRSxnQkFBeUIsRUFBRSxFQUFFO1FBQzFFLElBQUksT0FBTyxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQ2hDLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDckIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1CQUFtQixPQUFPLGtCQUFrQixDQUFDLENBQUM7WUFDaEYsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLGdCQUFnQixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQkFBbUIsT0FBTyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sTUFBTSxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBVyxDQUFDO1lBQzFDLElBQUksZ0JBQWdCLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQkFBbUIsT0FBTyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3JGLENBQUM7WUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN6QixhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4RCxlQUFlLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLE1BQU0sQ0FDSixHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUNyQixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUMxRyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDM0MsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDcEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxJQUFJLEtBQUssSUFBSTtZQUFFLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxPQUFPLEtBQUssT0FBTztZQUFFLE9BQU8sT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUNsRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxTQUFTLEtBQUssU0FBUztZQUFFLE9BQU8sU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMxRCxPQUFPLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLGVBQThCO0lBQ25ELElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLElBQUkseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLElBQUksNEJBQTRCLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLEtBQUssTUFBTSxPQUFPLElBQUksZUFBZSxFQUFFLENBQUM7UUFDdEMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM5Qix5QkFBeUIsRUFBRSxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHlCQUF5QixFQUFFLDRCQUE0QixFQUFFLENBQUM7QUFDeEYsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQzFCLFlBQXNDLEVBQ3RDLGVBQThCO0lBRTlCLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQy9DLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV0RixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFFO1FBQ3hFLGNBQWMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFFLENBQUM7UUFDbkYsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLElBQUksSUFBSSxVQUFVLEVBQUU7S0FDM0MsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQix5QkFBeUIsQ0FBQyxJQU16QztJQUNDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFckYsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG9DQUFvQyxPQUFPLGtDQUFrQyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsa0VBQWtFLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBQ0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELE1BQU0sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsOEJBQThCLENBQ25GLFlBQVksRUFDWixpQkFBaUIsQ0FDbEIsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQy9FLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUMxQyxNQUFNLElBQUksZ0NBQXFCLENBQzdCLHdDQUF3QyxlQUFlLENBQUMsTUFBTSxTQUFTLFlBQVksR0FBRyxDQUN2RixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUUsSUFBSSxVQUFVLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHVDQUF1QyxVQUFVLFNBQVMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBQ0QsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuRCxNQUFNLElBQUksZ0NBQXFCLENBQzdCLDRDQUE0QyxvQkFBb0IsQ0FBQyxNQUFNLFNBQVMsZ0JBQWdCLEdBQUcsQ0FDcEcsQ0FBQztJQUNKLENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckQsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLDRCQUE0QixFQUFFLENBQUM7WUFDdkUsTUFBTSxJQUFJLGdDQUFxQixDQUM3QixvQ0FBb0MsQ0FBQyxLQUFLLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLFNBQVMsNEJBQTRCLEdBQUcsQ0FDdEgsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSxrQ0FBeUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxNQUFNLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLG9CQUFvQixFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBRXhGLE9BQU8sSUFBQSx5QkFBZSxFQUFDO1FBQ3JCLE1BQU07UUFDTixVQUFVLEVBQUUsSUFBSTtRQUNoQixZQUFZLEVBQUUsTUFBTTtRQUNwQixTQUFTLEVBQUUsZUFBZTtRQUMxQixjQUFjLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNqRSxvQkFBb0I7S0FDckIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFB1YmxpY0tleSwgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbiB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgeyBlbmNvZGVWMU1lc3NhZ2UsIFYxTWVzc2FnZUhlYWRlciB9IGZyb20gJy4vY29kZWNzL3YxL21lc3NhZ2UnO1xuaW1wb3J0IHsgZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyB9IGZyb20gJy4vY29kZWNzL3YxL2NvbmZpZyc7XG5pbXBvcnQgeyBDb21waWxlZEluc3RydWN0aW9uIH0gZnJvbSAnLi9jb2RlY3MvdjEvaW5zdHJ1Y3Rpb24nO1xuXG4vKiogU3VwcG9ydGVkIFNvbGFuYSB0cmFuc2FjdGlvbiB2ZXJzaW9ucy4gT25seSAxIChTSU1ELTAyOTYvMDM4NSkgaXMgaW1wbGVtZW50ZWQuICovXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblZlcnNpb24gPSAwIHwgMTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHYxIHRyYW5zYWN0aW9uLCBtaXJyb3JpbmcgdGhlIHNoYXJlZCBzZGstY29yZSB0eXBlLlxuICogQWxsIHZhbHVlcyBhcmUgb3B0aW9uYWwgKG51bGwgPSB1bnNldCk7IHByaW9yaXR5RmVlIGlzIHRvdGFsIGxhbXBvcnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uQ29uZmlnIHtcbiAgY29tcHV0ZVVuaXRMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgaGVhcFNpemU6IG51bWJlciB8IG51bGw7XG4gIGxvYWRlZEFjY291bnRzRGF0YVNpemVMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3JpdHlGZWU6IG51bWJlciB8IG51bGw7IC8vIGxhbXBvcnRzICh0b3RhbClcbn1cblxuLy8gQWNjb3VudFJvbGUgYml0IHZhbHVlcyAobWlycm9yIEBzb2xhbmEvaW5zdHJ1Y3Rpb25zKS5cbmNvbnN0IFJFQURPTkxZID0gMDtcbmNvbnN0IFdSSVRBQkxFID0gMTtcbmNvbnN0IFJFQURPTkxZX1NJR05FUiA9IDI7XG5jb25zdCBXUklUQUJMRV9TSUdORVIgPSAzO1xuXG5jb25zdCBDT01QVVRFX0JVREdFVF9QUk9HUkFNX0lEID0gJ0NvbXB1dGVCdWRnZXQxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnO1xuY29uc3QgU0VUX0NPTVBVVEVfVU5JVF9MSU1JVF9ESVNDUklNSU5BVE9SID0gMjtcbmNvbnN0IFNFVF9DT01QVVRFX1VOSVRfUFJJQ0VfRElTQ1JJTUlOQVRPUiA9IDM7XG5jb25zdCBNSUNST19MQU1QT1JUU19QRVJfTEFNUE9SVCA9IDFfMDAwXzAwMDtcblxuY29uc3QgTUFYX0FDQ09VTlRTID0gNjQ7XG5jb25zdCBNQVhfU0lHTkVSUyA9IDEyO1xuY29uc3QgTUFYX0lOU1RSVUNUSU9OUyA9IDY0O1xuY29uc3QgTUFYX0FDQ09VTlRTX1BFUl9JTlNUUlVDVElPTiA9IDI1NTtcblxuY29uc3QgaXNTaWduZXIgPSAocm9sZTogbnVtYmVyKTogYm9vbGVhbiA9PiAocm9sZSAmIFJFQURPTkxZX1NJR05FUikgIT09IDA7XG5jb25zdCBpc1dyaXRhYmxlID0gKHJvbGU6IG51bWJlcik6IGJvb2xlYW4gPT4gKHJvbGUgJiBXUklUQUJMRSkgIT09IDA7XG5cbi8vIEFkZHJlc3Mgb3JkZXJpbmcgY29tcGFyYXRvciBtYXRjaGVzIEBzb2xhbmEvYWRkcmVzc2VzIGdldEFkZHJlc3NDb21wYXJhdG9yLlxuY29uc3QgYWRkcmVzc0NvbXBhcmF0b3IgPSBuZXcgSW50bC5Db2xsYXRvcignZW4nLCB7XG4gIGNhc2VGaXJzdDogJ2xvd2VyJyxcbiAgaWdub3JlUHVuY3R1YXRpb246IGZhbHNlLFxuICBsb2NhbGVNYXRjaGVyOiAnYmVzdCBmaXQnLFxuICBudW1lcmljOiBmYWxzZSxcbiAgc2Vuc2l0aXZpdHk6ICd2YXJpYW50JyxcbiAgdXNhZ2U6ICdzb3J0Jyxcbn0pLmNvbXBhcmU7XG5cbnR5cGUgQWNjb3VudE1ldGEgPSB7IGFkZHJlc3M6IHN0cmluZzsgcm9sZTogbnVtYmVyIH07XG5cbmZ1bmN0aW9uIHJlYWRVMzJMRShkYXRhOiBVaW50OEFycmF5LCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBkYXRhW29mZnNldF0gfCAoZGF0YVtvZmZzZXQgKyAxXSA8PCA4KSB8IChkYXRhW29mZnNldCArIDJdIDw8IDE2KSB8IChkYXRhW29mZnNldCArIDNdIDw8IDI0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFU2NExFKGRhdGE6IFVpbnQ4QXJyYXksIG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IHZhbHVlID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICB2YWx1ZSArPSBOdW1iZXIoZGF0YVtvZmZzZXQgKyBpXSkgKiBNYXRoLnBvdygyLCA4ICogaSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFN0cmlwIENvbXB1dGVCdWRnZXQgaW5zdHJ1Y3Rpb25zIChTZXRDb21wdXRlVW5pdExpbWl0IC8gU2V0Q29tcHV0ZVVuaXRQcmljZSlcbiAqIGFuZCBmb2xkIHRoZWlyIHZhbHVlcyBpbnRvIHRoZSB0cmFuc2FjdGlvbiBjb25maWcgd2hlbiBzdGlsbCB1bnNldC5cbiAqL1xuZnVuY3Rpb24gc3RyaXBDb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSxcbiAgdHJhbnNhY3Rpb25Db25maWc6IFRyYW5zYWN0aW9uQ29uZmlnXG4pOiB7IGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdOyBjb25maWc6IFRyYW5zYWN0aW9uQ29uZmlnIH0ge1xuICBjb25zdCBmaWx0ZXJlZDogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG4gIGNvbnN0IGNvbmZpZzogVHJhbnNhY3Rpb25Db25maWcgPSB7IC4uLnRyYW5zYWN0aW9uQ29uZmlnIH07XG5cbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBjb25zdCBpc0NvbXB1dGVCdWRnZXQgPSBpbnN0cnVjdGlvbi5wcm9ncmFtSWQudG9CYXNlNTgoKSA9PT0gQ09NUFVURV9CVURHRVRfUFJPR1JBTV9JRDtcbiAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gaW5zdHJ1Y3Rpb24uZGF0YT8uWzBdO1xuXG4gICAgaWYgKGlzQ29tcHV0ZUJ1ZGdldCAmJiBkaXNjcmltaW5hdG9yID09PSBTRVRfQ09NUFVURV9VTklUX0xJTUlUX0RJU0NSSU1JTkFUT1IpIHtcbiAgICAgIGlmIChjb25maWcuY29tcHV0ZVVuaXRMaW1pdCA9PT0gbnVsbCkge1xuICAgICAgICBjb25maWcuY29tcHV0ZVVuaXRMaW1pdCA9IHJlYWRVMzJMRShpbnN0cnVjdGlvbi5kYXRhLCAxKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpc0NvbXB1dGVCdWRnZXQgJiYgZGlzY3JpbWluYXRvciA9PT0gU0VUX0NPTVBVVEVfVU5JVF9QUklDRV9ESVNDUklNSU5BVE9SKSB7XG4gICAgICBpZiAoY29uZmlnLnByaW9yaXR5RmVlID09PSBudWxsICYmIGNvbmZpZy5jb21wdXRlVW5pdExpbWl0ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1pY3JvTGFtcG9ydHMgPSByZWFkVTY0TEUoaW5zdHJ1Y3Rpb24uZGF0YSwgMSk7XG4gICAgICAgIGNvbmZpZy5wcmlvcml0eUZlZSA9IE1hdGguY2VpbCgobWljcm9MYW1wb3J0cyAqIGNvbmZpZy5jb21wdXRlVW5pdExpbWl0KSAvIE1JQ1JPX0xBTVBPUlRTX1BFUl9MQU1QT1JUKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZpbHRlcmVkLnB1c2goaW5zdHJ1Y3Rpb24pO1xuICB9XG5cbiAgcmV0dXJuIHsgaW5zdHJ1Y3Rpb25zOiBmaWx0ZXJlZCwgY29uZmlnIH07XG59XG5cbi8qKlxuICogQ29sbGVjdCArIG9yZGVyIGFjY291bnRzIGV4YWN0bHkgYXMgQHNvbGFuYS90cmFuc2FjdGlvbi1tZXNzYWdlcyBkb2VzOlxuICogZmVlIHBheWVyIGZpcnN0IChXUklUQUJMRV9TSUdORVIpLCB0aGVuIHN0YXRpYyBhY2NvdW50cyBzb3J0ZWQgYnlcbiAqIChpc1NpZ25lciwgaXNXcml0YWJsZSwgYmFzZTU4IGNvbGxhdG9yKS4gRHVwbGljYXRlIGFkZHJlc3NlcyBtZXJnZSByb2xlcy5cbiAqIEVuZm9yY2VzIHRoZSBraXQncyBpbnZva2VkLXByb2dyYW0gcnVsZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RPcmRlcmVkQWNjb3VudHMoZmVlUGF5ZXI6IFB1YmxpY0tleSwgaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10pOiBBY2NvdW50TWV0YVtdIHtcbiAgY29uc3QgZmVlUGF5ZXJBZGRyZXNzID0gZmVlUGF5ZXIudG9CYXNlNTgoKTtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgY29uc3QgbWV0YUJ5QWRkcmVzcyA9IG5ldyBNYXA8c3RyaW5nLCBBY2NvdW50TWV0YT4oKTtcbiAgY29uc3QgaW52b2tlZFByb2dyYW1zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgbWFwLnNldChmZWVQYXllckFkZHJlc3MsIFdSSVRBQkxFX1NJR05FUik7XG4gIG1ldGFCeUFkZHJlc3Muc2V0KGZlZVBheWVyQWRkcmVzcywgeyBhZGRyZXNzOiBmZWVQYXllckFkZHJlc3MsIHJvbGU6IFdSSVRBQkxFX1NJR05FUiB9KTtcblxuICBjb25zdCB1cHNlcnQgPSAoYWRkcmVzczogc3RyaW5nLCByb2xlOiBudW1iZXIsIGlzSW52b2tlZFByb2dyYW06IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoYWRkcmVzcyA9PT0gZmVlUGF5ZXJBZGRyZXNzKSB7XG4gICAgICBpZiAoaXNJbnZva2VkUHJvZ3JhbSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZva2VkIHByb2dyYW0gJHthZGRyZXNzfSBjYW5ub3QgcGF5IGZlZXNgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzSW52b2tlZFByb2dyYW0gJiYgaXNXcml0YWJsZShyb2xlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52b2tlZCBwcm9ncmFtICR7YWRkcmVzc30gbXVzdCBub3QgYmUgd3JpdGFibGVgKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudCA9IG1hcC5nZXQoYWRkcmVzcyk7XG4gICAgaWYgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbWVyZ2VkID0gKGN1cnJlbnQgfCByb2xlKSBhcyBudW1iZXI7XG4gICAgICBpZiAoaXNJbnZva2VkUHJvZ3JhbSAmJiBpc1dyaXRhYmxlKG1lcmdlZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52b2tlZCBwcm9ncmFtICR7YWRkcmVzc30gbXVzdCBub3QgYmUgd3JpdGFibGVgKTtcbiAgICAgIH1cbiAgICAgIG1hcC5zZXQoYWRkcmVzcywgbWVyZ2VkKTtcbiAgICAgIG1ldGFCeUFkZHJlc3Muc2V0KGFkZHJlc3MsIHsgYWRkcmVzcywgcm9sZTogbWVyZ2VkIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXAuc2V0KGFkZHJlc3MsIHJvbGUpO1xuICAgICAgbWV0YUJ5QWRkcmVzcy5zZXQoYWRkcmVzcywgeyBhZGRyZXNzLCByb2xlIH0pO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGNvbnN0IHByb2dyYW1BZGRyZXNzID0gaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkLnRvQmFzZTU4KCk7XG4gICAgaW52b2tlZFByb2dyYW1zLmFkZChwcm9ncmFtQWRkcmVzcyk7XG4gICAgdXBzZXJ0KHByb2dyYW1BZGRyZXNzLCBSRUFET05MWSwgdHJ1ZSk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgaW5zdHJ1Y3Rpb24ua2V5cykge1xuICAgICAgdXBzZXJ0KFxuICAgICAgICBrZXkucHVia2V5LnRvQmFzZTU4KCksXG4gICAgICAgIGtleS5pc1NpZ25lciA/IChrZXkuaXNXcml0YWJsZSA/IFdSSVRBQkxFX1NJR05FUiA6IFJFQURPTkxZX1NJR05FUikgOiBrZXkuaXNXcml0YWJsZSA/IFdSSVRBQkxFIDogUkVBRE9OTFksXG4gICAgICAgIGludm9rZWRQcm9ncmFtcy5oYXMoa2V5LnB1YmtleS50b0Jhc2U1OCgpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmRlcmVkID0gWy4uLm1ldGFCeUFkZHJlc3MudmFsdWVzKCldO1xuICBvcmRlcmVkLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCBhRmVlID0gYS5hZGRyZXNzID09PSBmZWVQYXllckFkZHJlc3MgPyAtMSA6IDA7XG4gICAgY29uc3QgYkZlZSA9IGIuYWRkcmVzcyA9PT0gZmVlUGF5ZXJBZGRyZXNzID8gLTEgOiAwO1xuICAgIGlmIChhRmVlICE9PSBiRmVlKSByZXR1cm4gYUZlZSAtIGJGZWU7XG4gICAgY29uc3QgYVNpZ25lciA9IGlzU2lnbmVyKGEucm9sZSkgPyAtMSA6IDA7XG4gICAgY29uc3QgYlNpZ25lciA9IGlzU2lnbmVyKGIucm9sZSkgPyAtMSA6IDA7XG4gICAgaWYgKGFTaWduZXIgIT09IGJTaWduZXIpIHJldHVybiBhU2lnbmVyIC0gYlNpZ25lcjtcbiAgICBjb25zdCBhV3JpdGFibGUgPSBpc1dyaXRhYmxlKGEucm9sZSkgPyAtMSA6IDA7XG4gICAgY29uc3QgYldyaXRhYmxlID0gaXNXcml0YWJsZShiLnJvbGUpID8gLTEgOiAwO1xuICAgIGlmIChhV3JpdGFibGUgIT09IGJXcml0YWJsZSkgcmV0dXJuIGFXcml0YWJsZSAtIGJXcml0YWJsZTtcbiAgICByZXR1cm4gYWRkcmVzc0NvbXBhcmF0b3IoYS5hZGRyZXNzLCBiLmFkZHJlc3MpO1xuICB9KTtcblxuICByZXR1cm4gb3JkZXJlZDtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUhlYWRlcihvcmRlcmVkQWNjb3VudHM6IEFjY291bnRNZXRhW10pOiBWMU1lc3NhZ2VIZWFkZXIge1xuICBsZXQgbnVtU2lnbmVyQWNjb3VudHMgPSAwO1xuICBsZXQgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cyA9IDA7XG4gIGxldCBudW1SZWFkb25seU5vblNpZ25lckFjY291bnRzID0gMDtcbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIG9yZGVyZWRBY2NvdW50cykge1xuICAgIGlmIChpc1NpZ25lcihhY2NvdW50LnJvbGUpKSB7XG4gICAgICBudW1TaWduZXJBY2NvdW50cysrO1xuICAgICAgaWYgKCFpc1dyaXRhYmxlKGFjY291bnQucm9sZSkpIHtcbiAgICAgICAgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cysrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWlzV3JpdGFibGUoYWNjb3VudC5yb2xlKSkge1xuICAgICAgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cysrO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBudW1TaWduZXJBY2NvdW50cywgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cywgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cyB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlSW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSxcbiAgb3JkZXJlZEFjY291bnRzOiBBY2NvdW50TWV0YVtdXG4pOiBDb21waWxlZEluc3RydWN0aW9uW10ge1xuICBjb25zdCBhY2NvdW50SW5kZXggPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBvcmRlcmVkQWNjb3VudHMuZm9yRWFjaCgoYWNjb3VudCwgaW5kZXgpID0+IGFjY291bnRJbmRleC5zZXQoYWNjb3VudC5hZGRyZXNzLCBpbmRleCkpO1xuXG4gIHJldHVybiBpbnN0cnVjdGlvbnMubWFwKChpbnN0cnVjdGlvbikgPT4gKHtcbiAgICBwcm9ncmFtQWRkcmVzc0luZGV4OiBhY2NvdW50SW5kZXguZ2V0KGluc3RydWN0aW9uLnByb2dyYW1JZC50b0Jhc2U1OCgpKSEsXG4gICAgYWNjb3VudEluZGljZXM6IGluc3RydWN0aW9uLmtleXMubWFwKChrKSA9PiBhY2NvdW50SW5kZXguZ2V0KGsucHVia2V5LnRvQmFzZTU4KCkpISksXG4gICAgZGF0YTogaW5zdHJ1Y3Rpb24uZGF0YSA/PyBuZXcgVWludDhBcnJheSgpLFxuICB9KSk7XG59XG5cbi8qKlxuICogQ29tcGlsZSBhIFNvbGFuYSB0cmFuc2FjdGlvbiBtZXNzYWdlIGFuZCByZXR1cm4gaXRzIHdpcmUgYnl0ZXMuXG4gKlxuICogVmVyc2lvbi1hd2FyZTogb25seSBgdmVyc2lvbjogMWAgKFNJTUQtMDI5Ni8wMzg1KSBpcyBpbXBsZW1lbnRlZDsgb3RoZXJcbiAqIHZlcnNpb25zIHRocm93IGEgY2xlYXIgdW5zdXBwb3J0ZWQtdmVyc2lvbiBlcnJvciB1bnRpbCB0aGV5IGFyZSBhZGRlZC5cbiAqXG4gKiBAcGFyYW0gYXJncyAtIHZlcnNpb24sIGluc3RydWN0aW9ucywgZmVlIHBheWVyLCByZWNlbnQgYmxvY2toYXNoLCBhbmQgY29uZmlnXG4gKiBAcmV0dXJucyB0aGUgc2VyaWFsaXplZCBtZXNzYWdlIGJ5dGVzICh2MSBzdGFydHMgd2l0aCB0aGUgMHg4MSB2ZXJzaW9uIHByZWZpeClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVUcmFuc2FjdGlvbk1lc3NhZ2UoYXJnczoge1xuICB2ZXJzaW9uOiBUcmFuc2FjdGlvblZlcnNpb247XG4gIGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdO1xuICBmZWVQYXllcjogUHVibGljS2V5O1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25Db25maWc6IFRyYW5zYWN0aW9uQ29uZmlnO1xufSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCB7IHZlcnNpb24sIGluc3RydWN0aW9ucywgZmVlUGF5ZXIsIHJlY2VudEJsb2NraGFzaCwgdHJhbnNhY3Rpb25Db25maWcgfSA9IGFyZ3M7XG5cbiAgaWYgKHZlcnNpb24gIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBVbnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB2ZXJzaW9uOiAke3ZlcnNpb259LiBPbmx5IHZlcnNpb24gMSBpcyBpbXBsZW1lbnRlZC5gKTtcbiAgfVxuICBpZiAoIWluc3RydWN0aW9ucyB8fCBpbnN0cnVjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQXQgbGVhc3Qgb25lIGluc3RydWN0aW9uIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgYSB2MSB0cmFuc2FjdGlvbicpO1xuICB9XG4gIGlmICghdHJhbnNhY3Rpb25Db25maWcpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbkNvbmZpZyBpcyByZXF1aXJlZCB0byBjb21waWxlIGEgdjEgdHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIGNvbnN0IHsgaW5zdHJ1Y3Rpb25zOiBmaWx0ZXJlZEluc3RydWN0aW9ucywgY29uZmlnIH0gPSBzdHJpcENvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMoXG4gICAgaW5zdHJ1Y3Rpb25zLFxuICAgIHRyYW5zYWN0aW9uQ29uZmlnXG4gICk7XG5cbiAgY29uc3Qgb3JkZXJlZEFjY291bnRzID0gY29sbGVjdE9yZGVyZWRBY2NvdW50cyhmZWVQYXllciwgZmlsdGVyZWRJbnN0cnVjdGlvbnMpO1xuICBpZiAob3JkZXJlZEFjY291bnRzLmxlbmd0aCA+IE1BWF9BQ0NPVU5UUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgVG9vIG1hbnkgYWNjb3VudHMgaW4gdjEgdHJhbnNhY3Rpb246ICR7b3JkZXJlZEFjY291bnRzLmxlbmd0aH0gKG1heCAke01BWF9BQ0NPVU5UU30pYFxuICAgICk7XG4gIH1cbiAgY29uc3QgbnVtU2lnbmVycyA9IG9yZGVyZWRBY2NvdW50cy5maWx0ZXIoKGEpID0+IGlzU2lnbmVyKGEucm9sZSkpLmxlbmd0aDtcbiAgaWYgKG51bVNpZ25lcnMgPiBNQVhfU0lHTkVSUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYFRvbyBtYW55IHNpZ25lcnMgaW4gdjEgdHJhbnNhY3Rpb246ICR7bnVtU2lnbmVyc30gKG1heCAke01BWF9TSUdORVJTfSlgKTtcbiAgfVxuICBpZiAoZmlsdGVyZWRJbnN0cnVjdGlvbnMubGVuZ3RoID4gTUFYX0lOU1RSVUNUSU9OUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgVG9vIG1hbnkgaW5zdHJ1Y3Rpb25zIGluIHYxIHRyYW5zYWN0aW9uOiAke2ZpbHRlcmVkSW5zdHJ1Y3Rpb25zLmxlbmd0aH0gKG1heCAke01BWF9JTlNUUlVDVElPTlN9KWBcbiAgICApO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyZWRJbnN0cnVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZmlsdGVyZWRJbnN0cnVjdGlvbnNbaV0ua2V5cy5sZW5ndGggPiBNQVhfQUNDT1VOVFNfUEVSX0lOU1RSVUNUSU9OKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgVG9vIG1hbnkgYWNjb3VudHMgaW4gaW5zdHJ1Y3Rpb24gJHtpfTogJHtmaWx0ZXJlZEluc3RydWN0aW9uc1tpXS5rZXlzLmxlbmd0aH0gKG1heCAke01BWF9BQ0NPVU5UU19QRVJfSU5TVFJVQ1RJT059KWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGVhZGVyID0gY29tcHV0ZUhlYWRlcihvcmRlcmVkQWNjb3VudHMpO1xuICBjb25zdCB7IG1hc2ssIHZhbHVlcyB9ID0gZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyhjb25maWcpO1xuICBjb25zdCBjb21waWxlZEluc3RydWN0aW9ucyA9IGNvbXBpbGVJbnN0cnVjdGlvbnMoZmlsdGVyZWRJbnN0cnVjdGlvbnMsIG9yZGVyZWRBY2NvdW50cyk7XG5cbiAgcmV0dXJuIGVuY29kZVYxTWVzc2FnZSh7XG4gICAgaGVhZGVyLFxuICAgIGNvbmZpZ01hc2s6IG1hc2ssXG4gICAgY29uZmlnVmFsdWVzOiB2YWx1ZXMsXG4gICAgYmxvY2toYXNoOiByZWNlbnRCbG9ja2hhc2gsXG4gICAgc3RhdGljQWNjb3VudHM6IG9yZGVyZWRBY2NvdW50cy5tYXAoKGFjY291bnQpID0+IGFjY291bnQuYWRkcmVzcyksXG4gICAgY29tcGlsZWRJbnN0cnVjdGlvbnMsXG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ParsedWireTransaction = {
|
|
2
|
+
messageBytes: Uint8Array;
|
|
3
|
+
signatures: Uint8Array[];
|
|
4
|
+
signerPublicKeys: string[];
|
|
5
|
+
};
|
|
6
|
+
export declare function parseWireTransaction(wireBytes: Uint8Array): ParsedWireTransaction;
|
|
7
|
+
export declare function verifyV1Signatures(messageBytes: Uint8Array, signatures: Uint8Array[], signerPublicKeys: string[]): void;
|
|
8
|
+
export declare function validateRawTransactionV1(wireBytes: Uint8Array): void;
|
|
9
|
+
//# sourceMappingURL=parseWireTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseWireTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/lib/serialization/parseWireTransaction.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,UAAU,CAAC;IACzB,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,qBAAqB,CAwCjF;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,UAAU,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,GACzB,IAAI,CAUN;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAGpE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseWireTransaction = parseWireTransaction;
|
|
7
|
+
exports.verifyV1Signatures = verifyV1Signatures;
|
|
8
|
+
exports.validateRawTransactionV1 = validateRawTransactionV1;
|
|
9
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
10
|
+
const tweetnacl_1 = __importDefault(require("tweetnacl"));
|
|
11
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
12
|
+
const message_1 = require("./codecs/v1/message");
|
|
13
|
+
const SIGNATURE_BYTE_LENGTH = 64;
|
|
14
|
+
const V1_VERSION_PREFIX = 0x81;
|
|
15
|
+
const V1_TRANSACTION_SIZE_LIMIT = 4096;
|
|
16
|
+
function parseWireTransaction(wireBytes) {
|
|
17
|
+
if (!wireBytes || wireBytes.length === 0) {
|
|
18
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 transaction: empty');
|
|
19
|
+
}
|
|
20
|
+
if (wireBytes[0] !== V1_VERSION_PREFIX) {
|
|
21
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid v1 transaction: expected version prefix 0x${V1_VERSION_PREFIX.toString(16)}, got 0x${wireBytes[0].toString(16)}`);
|
|
22
|
+
}
|
|
23
|
+
if (wireBytes.length < 42) {
|
|
24
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 transaction: too short');
|
|
25
|
+
}
|
|
26
|
+
if (wireBytes.length > V1_TRANSACTION_SIZE_LIMIT) {
|
|
27
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid v1 transaction: exceeds the ${V1_TRANSACTION_SIZE_LIMIT}-byte size limit: ${wireBytes.length} bytes`);
|
|
28
|
+
}
|
|
29
|
+
const decoded = (0, message_1.decodeV1Message)(wireBytes);
|
|
30
|
+
const messageLength = decoded.byteLength;
|
|
31
|
+
const numSignatures = decoded.header.numSignerAccounts;
|
|
32
|
+
const expectedSigBytes = numSignatures * SIGNATURE_BYTE_LENGTH;
|
|
33
|
+
if (wireBytes.length - messageLength !== expectedSigBytes) {
|
|
34
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid v1 transaction: expected ${expectedSigBytes} signature bytes after message, got ${wireBytes.length - messageLength}`);
|
|
35
|
+
}
|
|
36
|
+
const messageBytes = wireBytes.slice(0, messageLength);
|
|
37
|
+
const signatures = [];
|
|
38
|
+
for (let i = 0; i < numSignatures; i++) {
|
|
39
|
+
signatures.push(wireBytes.slice(messageLength + i * SIGNATURE_BYTE_LENGTH, messageLength + (i + 1) * SIGNATURE_BYTE_LENGTH));
|
|
40
|
+
}
|
|
41
|
+
return { messageBytes, signatures, signerPublicKeys: decoded.staticAccounts.slice(0, numSignatures) };
|
|
42
|
+
}
|
|
43
|
+
function verifyV1Signatures(messageBytes, signatures, signerPublicKeys) {
|
|
44
|
+
if (signatures.length !== signerPublicKeys.length) {
|
|
45
|
+
throw new sdk_core_1.BuildTransactionError('Signature count does not match signer count');
|
|
46
|
+
}
|
|
47
|
+
for (let i = 0; i < signatures.length; i++) {
|
|
48
|
+
const pubkey = new web3_js_1.PublicKey(signerPublicKeys[i]).toBuffer();
|
|
49
|
+
if (!tweetnacl_1.default.sign.detached.verify(messageBytes, signatures[i], pubkey)) {
|
|
50
|
+
throw new sdk_core_1.BuildTransactionError(`Signature verification failed for signer ${i}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function validateRawTransactionV1(wireBytes) {
|
|
55
|
+
const { messageBytes, signatures, signerPublicKeys } = parseWireTransaction(wireBytes);
|
|
56
|
+
verifyV1Signatures(messageBytes, signatures, signerPublicKeys);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXJlVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcmlhbGl6YXRpb24vcGFyc2VXaXJlVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlQSxvREF3Q0M7QUFFRCxnREFjQztBQUVELDREQUdDO0FBNUVELG1EQUE2RDtBQUM3RCwwREFBNkI7QUFDN0IsNkNBQTRDO0FBQzVDLGlEQUFzRDtBQUV0RCxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUNqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUMvQixNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQztBQVF2QyxTQUFnQixvQkFBb0IsQ0FBQyxTQUFxQjtJQUN4RCxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLGlCQUFpQixFQUFFLENBQUM7UUFDdkMsTUFBTSxJQUFJLGdDQUFxQixDQUM3QixxREFBcUQsaUJBQWlCLENBQUMsUUFBUSxDQUM3RSxFQUFFLENBQ0gsV0FBVyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ3hDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcseUJBQXlCLEVBQUUsQ0FBQztRQUNqRCxNQUFNLElBQUksZ0NBQXFCLENBQzdCLHVDQUF1Qyx5QkFBeUIscUJBQXFCLFNBQVMsQ0FBQyxNQUFNLFFBQVEsQ0FDOUcsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFBLHlCQUFlLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUN6QyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0lBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxHQUFHLHFCQUFxQixDQUFDO0lBRS9ELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxhQUFhLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLElBQUksZ0NBQXFCLENBQzdCLG9DQUFvQyxnQkFBZ0IsdUNBQ2xELFNBQVMsQ0FBQyxNQUFNLEdBQUcsYUFDckIsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkQsTUFBTSxVQUFVLEdBQWlCLEVBQUUsQ0FBQztJQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkMsVUFBVSxDQUFDLElBQUksQ0FDYixTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcscUJBQXFCLEVBQUUsYUFBYSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLENBQzVHLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7QUFDeEcsQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUNoQyxZQUF3QixFQUN4QixVQUF3QixFQUN4QixnQkFBMEI7SUFFMUIsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksbUJBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNwRSxNQUFNLElBQUksZ0NBQXFCLENBQUMsNENBQTRDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsU0FBcUI7SUFDNUQsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RixrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgeyBQdWJsaWNLZXkgfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgZGVjb2RlVjFNZXNzYWdlIH0gZnJvbSAnLi9jb2RlY3MvdjEvbWVzc2FnZSc7XG5cbmNvbnN0IFNJR05BVFVSRV9CWVRFX0xFTkdUSCA9IDY0O1xuY29uc3QgVjFfVkVSU0lPTl9QUkVGSVggPSAweDgxO1xuY29uc3QgVjFfVFJBTlNBQ1RJT05fU0laRV9MSU1JVCA9IDQwOTY7XG5cbmV4cG9ydCB0eXBlIFBhcnNlZFdpcmVUcmFuc2FjdGlvbiA9IHtcbiAgbWVzc2FnZUJ5dGVzOiBVaW50OEFycmF5O1xuICBzaWduYXR1cmVzOiBVaW50OEFycmF5W107XG4gIHNpZ25lclB1YmxpY0tleXM6IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlV2lyZVRyYW5zYWN0aW9uKHdpcmVCeXRlczogVWludDhBcnJheSk6IFBhcnNlZFdpcmVUcmFuc2FjdGlvbiB7XG4gIGlmICghd2lyZUJ5dGVzIHx8IHdpcmVCeXRlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIHRyYW5zYWN0aW9uOiBlbXB0eScpO1xuICB9XG4gIGlmICh3aXJlQnl0ZXNbMF0gIT09IFYxX1ZFUlNJT05fUFJFRklYKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgIGBJbnZhbGlkIHYxIHRyYW5zYWN0aW9uOiBleHBlY3RlZCB2ZXJzaW9uIHByZWZpeCAweCR7VjFfVkVSU0lPTl9QUkVGSVgudG9TdHJpbmcoXG4gICAgICAgIDE2XG4gICAgICApfSwgZ290IDB4JHt3aXJlQnl0ZXNbMF0udG9TdHJpbmcoMTYpfWBcbiAgICApO1xuICB9XG4gIGlmICh3aXJlQnl0ZXMubGVuZ3RoIDwgNDIpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIHRyYW5zYWN0aW9uOiB0b28gc2hvcnQnKTtcbiAgfVxuICBpZiAod2lyZUJ5dGVzLmxlbmd0aCA+IFYxX1RSQU5TQUNUSU9OX1NJWkVfTElNSVQpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgYEludmFsaWQgdjEgdHJhbnNhY3Rpb246IGV4Y2VlZHMgdGhlICR7VjFfVFJBTlNBQ1RJT05fU0laRV9MSU1JVH0tYnl0ZSBzaXplIGxpbWl0OiAke3dpcmVCeXRlcy5sZW5ndGh9IGJ5dGVzYFxuICAgICk7XG4gIH1cbiAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVYxTWVzc2FnZSh3aXJlQnl0ZXMpO1xuICBjb25zdCBtZXNzYWdlTGVuZ3RoID0gZGVjb2RlZC5ieXRlTGVuZ3RoO1xuICBjb25zdCBudW1TaWduYXR1cmVzID0gZGVjb2RlZC5oZWFkZXIubnVtU2lnbmVyQWNjb3VudHM7XG4gIGNvbnN0IGV4cGVjdGVkU2lnQnl0ZXMgPSBudW1TaWduYXR1cmVzICogU0lHTkFUVVJFX0JZVEVfTEVOR1RIO1xuXG4gIGlmICh3aXJlQnl0ZXMubGVuZ3RoIC0gbWVzc2FnZUxlbmd0aCAhPT0gZXhwZWN0ZWRTaWdCeXRlcykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgSW52YWxpZCB2MSB0cmFuc2FjdGlvbjogZXhwZWN0ZWQgJHtleHBlY3RlZFNpZ0J5dGVzfSBzaWduYXR1cmUgYnl0ZXMgYWZ0ZXIgbWVzc2FnZSwgZ290ICR7XG4gICAgICAgIHdpcmVCeXRlcy5sZW5ndGggLSBtZXNzYWdlTGVuZ3RoXG4gICAgICB9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBtZXNzYWdlQnl0ZXMgPSB3aXJlQnl0ZXMuc2xpY2UoMCwgbWVzc2FnZUxlbmd0aCk7XG4gIGNvbnN0IHNpZ25hdHVyZXM6IFVpbnQ4QXJyYXlbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVNpZ25hdHVyZXM7IGkrKykge1xuICAgIHNpZ25hdHVyZXMucHVzaChcbiAgICAgIHdpcmVCeXRlcy5zbGljZShtZXNzYWdlTGVuZ3RoICsgaSAqIFNJR05BVFVSRV9CWVRFX0xFTkdUSCwgbWVzc2FnZUxlbmd0aCArIChpICsgMSkgKiBTSUdOQVRVUkVfQllURV9MRU5HVEgpXG4gICAgKTtcbiAgfVxuICByZXR1cm4geyBtZXNzYWdlQnl0ZXMsIHNpZ25hdHVyZXMsIHNpZ25lclB1YmxpY0tleXM6IGRlY29kZWQuc3RhdGljQWNjb3VudHMuc2xpY2UoMCwgbnVtU2lnbmF0dXJlcykgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVYxU2lnbmF0dXJlcyhcbiAgbWVzc2FnZUJ5dGVzOiBVaW50OEFycmF5LFxuICBzaWduYXR1cmVzOiBVaW50OEFycmF5W10sXG4gIHNpZ25lclB1YmxpY0tleXM6IHN0cmluZ1tdXG4pOiB2b2lkIHtcbiAgaWYgKHNpZ25hdHVyZXMubGVuZ3RoICE9PSBzaWduZXJQdWJsaWNLZXlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1NpZ25hdHVyZSBjb3VudCBkb2VzIG5vdCBtYXRjaCBzaWduZXIgY291bnQnKTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNpZ25hdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwdWJrZXkgPSBuZXcgUHVibGljS2V5KHNpZ25lclB1YmxpY0tleXNbaV0pLnRvQnVmZmVyKCk7XG4gICAgaWYgKCFuYWNsLnNpZ24uZGV0YWNoZWQudmVyaWZ5KG1lc3NhZ2VCeXRlcywgc2lnbmF0dXJlc1tpXSwgcHVia2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgU2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yIHNpZ25lciAke2l9YCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uVjEod2lyZUJ5dGVzOiBVaW50OEFycmF5KTogdm9pZCB7XG4gIGNvbnN0IHsgbWVzc2FnZUJ5dGVzLCBzaWduYXR1cmVzLCBzaWduZXJQdWJsaWNLZXlzIH0gPSBwYXJzZVdpcmVUcmFuc2FjdGlvbih3aXJlQnl0ZXMpO1xuICB2ZXJpZnlWMVNpZ25hdHVyZXMobWVzc2FnZUJ5dGVzLCBzaWduYXR1cmVzLCBzaWduZXJQdWJsaWNLZXlzKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assemble the v1 wire format of a signed transaction.
|
|
3
|
+
*
|
|
4
|
+
* Unlike legacy and v0 transactions, where signatures are prefixed before the
|
|
5
|
+
* message, a v1 transaction places the message first and appends the signatures
|
|
6
|
+
* at the tail with no length prefix; the signature count is derived from the
|
|
7
|
+
* message header's numRequiredSignatures.
|
|
8
|
+
*
|
|
9
|
+
* @param messageBytes - The serialized v1 message bytes (starting with the 0x81 version prefix)
|
|
10
|
+
* @param signatures - The ed25519 signatures over the message bytes, one per required signer
|
|
11
|
+
* @returns The full v1 wire transaction bytes
|
|
12
|
+
*/
|
|
13
|
+
export declare function serializeWireTransaction(messageBytes: Uint8Array, signatures: Uint8Array[]): Uint8Array;
|
|
14
|
+
//# sourceMappingURL=wire-transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire-transaction.d.ts","sourceRoot":"","sources":["../../../../../src/lib/serialization/wire-transaction.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,UAAU,CA+CvG"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeWireTransaction = serializeWireTransaction;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const SIGNATURE_BYTE_LENGTH = 64;
|
|
6
|
+
const V1_VERSION_PREFIX = 0x81;
|
|
7
|
+
const V1_TRANSACTION_SIZE_LIMIT = 4096;
|
|
8
|
+
/**
|
|
9
|
+
* Assemble the v1 wire format of a signed transaction.
|
|
10
|
+
*
|
|
11
|
+
* Unlike legacy and v0 transactions, where signatures are prefixed before the
|
|
12
|
+
* message, a v1 transaction places the message first and appends the signatures
|
|
13
|
+
* at the tail with no length prefix; the signature count is derived from the
|
|
14
|
+
* message header's numRequiredSignatures.
|
|
15
|
+
*
|
|
16
|
+
* @param messageBytes - The serialized v1 message bytes (starting with the 0x81 version prefix)
|
|
17
|
+
* @param signatures - The ed25519 signatures over the message bytes, one per required signer
|
|
18
|
+
* @returns The full v1 wire transaction bytes
|
|
19
|
+
*/
|
|
20
|
+
function serializeWireTransaction(messageBytes, signatures) {
|
|
21
|
+
if (!messageBytes || messageBytes.length === 0) {
|
|
22
|
+
throw new sdk_core_1.BuildTransactionError('messageBytes is required to serialize a v1 transaction');
|
|
23
|
+
}
|
|
24
|
+
if (!signatures || signatures.length === 0) {
|
|
25
|
+
throw new sdk_core_1.BuildTransactionError('At least one signature is required to serialize a v1 transaction');
|
|
26
|
+
}
|
|
27
|
+
for (const signature of signatures) {
|
|
28
|
+
if (signature.length !== SIGNATURE_BYTE_LENGTH) {
|
|
29
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid signature length: expected ${SIGNATURE_BYTE_LENGTH} bytes, got ${signature.length}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (messageBytes[0] !== V1_VERSION_PREFIX) {
|
|
33
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid v1 message: expected version prefix 0x${V1_VERSION_PREFIX.toString(16)}, got 0x${messageBytes[0].toString(16)}`);
|
|
34
|
+
}
|
|
35
|
+
if (messageBytes[1] !== signatures.length) {
|
|
36
|
+
throw new sdk_core_1.BuildTransactionError(`Signature count mismatch: message declares ${messageBytes[1]} required signers but ${signatures.length} were provided`);
|
|
37
|
+
}
|
|
38
|
+
const totalLength = messageBytes.length + signatures.length * SIGNATURE_BYTE_LENGTH;
|
|
39
|
+
if (totalLength > V1_TRANSACTION_SIZE_LIMIT) {
|
|
40
|
+
throw new sdk_core_1.BuildTransactionError(`v1 transaction exceeds the ${V1_TRANSACTION_SIZE_LIMIT}-byte size limit: ${totalLength} bytes`);
|
|
41
|
+
}
|
|
42
|
+
const buffer = new Uint8Array(totalLength);
|
|
43
|
+
buffer.set(messageBytes, 0);
|
|
44
|
+
let offset = messageBytes.length;
|
|
45
|
+
for (const signature of signatures) {
|
|
46
|
+
buffer.set(signature, offset);
|
|
47
|
+
offset += SIGNATURE_BYTE_LENGTH;
|
|
48
|
+
}
|
|
49
|
+
return buffer;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS10cmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi93aXJlLXRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0JBLDREQStDQztBQWpFRCxtREFBNkQ7QUFFN0QsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7QUFDakMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUM7QUFFdkM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxZQUF3QixFQUFFLFVBQXdCO0lBQ3pGLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsd0RBQXdELENBQUMsQ0FBQztJQUM1RixDQUFDO0lBQ0QsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ25DLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0Isc0NBQXNDLHFCQUFxQixlQUFlLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FDN0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUMxQyxNQUFNLElBQUksZ0NBQXFCLENBQzdCLGlEQUFpRCxpQkFBaUIsQ0FBQyxRQUFRLENBQ3pFLEVBQUUsQ0FDSCxXQUFXLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLGdDQUFxQixDQUM3Qiw4Q0FBOEMsWUFBWSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsVUFBVSxDQUFDLE1BQU0sZ0JBQWdCLENBQ3hILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLHFCQUFxQixDQUFDO0lBQ3BGLElBQUksV0FBVyxHQUFHLHlCQUF5QixFQUFFLENBQUM7UUFDNUMsTUFBTSxJQUFJLGdDQUFxQixDQUM3Qiw4QkFBOEIseUJBQXlCLHFCQUFxQixXQUFXLFFBQVEsQ0FDaEcsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU1QixJQUFJLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ2pDLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUIsTUFBTSxJQUFJLHFCQUFxQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5jb25zdCBTSUdOQVRVUkVfQllURV9MRU5HVEggPSA2NDtcbmNvbnN0IFYxX1ZFUlNJT05fUFJFRklYID0gMHg4MTtcbmNvbnN0IFYxX1RSQU5TQUNUSU9OX1NJWkVfTElNSVQgPSA0MDk2O1xuXG4vKipcbiAqIEFzc2VtYmxlIHRoZSB2MSB3aXJlIGZvcm1hdCBvZiBhIHNpZ25lZCB0cmFuc2FjdGlvbi5cbiAqXG4gKiBVbmxpa2UgbGVnYWN5IGFuZCB2MCB0cmFuc2FjdGlvbnMsIHdoZXJlIHNpZ25hdHVyZXMgYXJlIHByZWZpeGVkIGJlZm9yZSB0aGVcbiAqIG1lc3NhZ2UsIGEgdjEgdHJhbnNhY3Rpb24gcGxhY2VzIHRoZSBtZXNzYWdlIGZpcnN0IGFuZCBhcHBlbmRzIHRoZSBzaWduYXR1cmVzXG4gKiBhdCB0aGUgdGFpbCB3aXRoIG5vIGxlbmd0aCBwcmVmaXg7IHRoZSBzaWduYXR1cmUgY291bnQgaXMgZGVyaXZlZCBmcm9tIHRoZVxuICogbWVzc2FnZSBoZWFkZXIncyBudW1SZXF1aXJlZFNpZ25hdHVyZXMuXG4gKlxuICogQHBhcmFtIG1lc3NhZ2VCeXRlcyAtIFRoZSBzZXJpYWxpemVkIHYxIG1lc3NhZ2UgYnl0ZXMgKHN0YXJ0aW5nIHdpdGggdGhlIDB4ODEgdmVyc2lvbiBwcmVmaXgpXG4gKiBAcGFyYW0gc2lnbmF0dXJlcyAtIFRoZSBlZDI1NTE5IHNpZ25hdHVyZXMgb3ZlciB0aGUgbWVzc2FnZSBieXRlcywgb25lIHBlciByZXF1aXJlZCBzaWduZXJcbiAqIEByZXR1cm5zIFRoZSBmdWxsIHYxIHdpcmUgdHJhbnNhY3Rpb24gYnl0ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVdpcmVUcmFuc2FjdGlvbihtZXNzYWdlQnl0ZXM6IFVpbnQ4QXJyYXksIHNpZ25hdHVyZXM6IFVpbnQ4QXJyYXlbXSk6IFVpbnQ4QXJyYXkge1xuICBpZiAoIW1lc3NhZ2VCeXRlcyB8fCBtZXNzYWdlQnl0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignbWVzc2FnZUJ5dGVzIGlzIHJlcXVpcmVkIHRvIHNlcmlhbGl6ZSBhIHYxIHRyYW5zYWN0aW9uJyk7XG4gIH1cbiAgaWYgKCFzaWduYXR1cmVzIHx8IHNpZ25hdHVyZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQXQgbGVhc3Qgb25lIHNpZ25hdHVyZSBpcyByZXF1aXJlZCB0byBzZXJpYWxpemUgYSB2MSB0cmFuc2FjdGlvbicpO1xuICB9XG5cbiAgZm9yIChjb25zdCBzaWduYXR1cmUgb2Ygc2lnbmF0dXJlcykge1xuICAgIGlmIChzaWduYXR1cmUubGVuZ3RoICE9PSBTSUdOQVRVUkVfQllURV9MRU5HVEgpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIHNpZ25hdHVyZSBsZW5ndGg6IGV4cGVjdGVkICR7U0lHTkFUVVJFX0JZVEVfTEVOR1RIfSBieXRlcywgZ290ICR7c2lnbmF0dXJlLmxlbmd0aH1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChtZXNzYWdlQnl0ZXNbMF0gIT09IFYxX1ZFUlNJT05fUFJFRklYKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgIGBJbnZhbGlkIHYxIG1lc3NhZ2U6IGV4cGVjdGVkIHZlcnNpb24gcHJlZml4IDB4JHtWMV9WRVJTSU9OX1BSRUZJWC50b1N0cmluZyhcbiAgICAgICAgMTZcbiAgICAgICl9LCBnb3QgMHgke21lc3NhZ2VCeXRlc1swXS50b1N0cmluZygxNil9YFxuICAgICk7XG4gIH1cblxuICBpZiAobWVzc2FnZUJ5dGVzWzFdICE9PSBzaWduYXR1cmVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgU2lnbmF0dXJlIGNvdW50IG1pc21hdGNoOiBtZXNzYWdlIGRlY2xhcmVzICR7bWVzc2FnZUJ5dGVzWzFdfSByZXF1aXJlZCBzaWduZXJzIGJ1dCAke3NpZ25hdHVyZXMubGVuZ3RofSB3ZXJlIHByb3ZpZGVkYFxuICAgICk7XG4gIH1cblxuICBjb25zdCB0b3RhbExlbmd0aCA9IG1lc3NhZ2VCeXRlcy5sZW5ndGggKyBzaWduYXR1cmVzLmxlbmd0aCAqIFNJR05BVFVSRV9CWVRFX0xFTkdUSDtcbiAgaWYgKHRvdGFsTGVuZ3RoID4gVjFfVFJBTlNBQ1RJT05fU0laRV9MSU1JVCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgdjEgdHJhbnNhY3Rpb24gZXhjZWVkcyB0aGUgJHtWMV9UUkFOU0FDVElPTl9TSVpFX0xJTUlUfS1ieXRlIHNpemUgbGltaXQ6ICR7dG90YWxMZW5ndGh9IGJ5dGVzYFxuICAgICk7XG4gIH1cblxuICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh0b3RhbExlbmd0aCk7XG4gIGJ1ZmZlci5zZXQobWVzc2FnZUJ5dGVzLCAwKTtcblxuICBsZXQgb2Zmc2V0ID0gbWVzc2FnZUJ5dGVzLmxlbmd0aDtcbiAgZm9yIChjb25zdCBzaWduYXR1cmUgb2Ygc2lnbmF0dXJlcykge1xuICAgIGJ1ZmZlci5zZXQoc2lnbmF0dXJlLCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSBTSUdOQVRVUkVfQllURV9MRU5HVEg7XG4gIH1cblxuICByZXR1cm4gYnVmZmVyO1xufVxuIl19
|
|
@@ -6,5 +6,5 @@ import { InstructionParams } from './iface';
|
|
|
6
6
|
* @param {InstructionParams} instructionToBuild - the data containing the instruction params
|
|
7
7
|
* @returns {TransactionInstruction[]} An array containing supported Solana instructions
|
|
8
8
|
*/
|
|
9
|
-
export declare function solInstructionFactory(instructionToBuild: InstructionParams): TransactionInstruction[];
|
|
9
|
+
export declare function solInstructionFactory(instructionToBuild: InstructionParams, zkProofProgramId?: string): TransactionInstruction[];
|
|
10
10
|
//# sourceMappingURL=solInstructionFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solInstructionFactory.d.ts","sourceRoot":"","sources":["../../../../src/lib/solInstructionFactory.ts"],"names":[],"mappings":"AAeA,OAAO,EASL,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EAUL,iBAAiB,EAsBlB,MAAM,SAAS,CAAC;AAIjB;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,kBAAkB,EAAE,iBAAiB,EACrC,gBAAgB,CAAC,EAAE,MAAM,GACxB,sBAAsB,EAAE,CA+D1B"}
|