@bitgo-beta/sdk-coin-sol 7.6.4-beta.40 → 7.6.4-beta.401
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/config/token2022StaticConfig.d.ts.map +1 -0
- package/dist/cjs/src/config/token2022StaticConfig.js +50 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/index.js +1 -1
- package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/ataInitializationBuilder.js +196 -0
- package/dist/cjs/src/lib/closeAtaBuilder.d.ts +51 -0
- package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/closeAtaBuilder.js +147 -0
- package/dist/{src → cjs/src}/lib/constants.d.ts +24 -0
- package/dist/cjs/src/lib/constants.d.ts.map +1 -0
- package/dist/cjs/src/lib/constants.js +196 -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 +264 -0
- package/dist/{src → cjs/src}/lib/iface.d.ts +20 -2
- 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 +1 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/lib/index.js +4 -2
- package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +1 -0
- package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/instructionParamsFactory.js +1059 -0
- package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
- package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
- package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
- package/dist/cjs/src/lib/keyPair.js +63 -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/solInstructionFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/solInstructionFactory.js +595 -0
- package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingActivateBuilder.js +120 -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 +208 -0
- package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingDelegateBuilder.js +120 -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 +78 -0
- package/dist/cjs/src/lib/token2022Config.d.ts.map +1 -0
- package/dist/cjs/src/lib/token2022Config.js +27 -0
- package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenTransferBuilder.js +188 -0
- package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/transaction.js +612 -0
- package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilder.js +380 -0
- package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +5 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.js +209 -0
- package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transferBuilder.js +70 -0
- package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
- package/dist/cjs/src/lib/transferBuilderV2.js +210 -0
- package/dist/cjs/src/lib/utils.d.ts.map +1 -0
- package/dist/cjs/src/lib/utils.js +604 -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.map +1 -0
- package/dist/cjs/src/register.js +15 -0
- package/dist/{src → cjs/src}/sol.d.ts +53 -0
- package/dist/cjs/src/sol.d.ts.map +1 -0
- package/dist/cjs/src/sol.js +1464 -0
- package/dist/cjs/src/solToken.d.ts.map +1 -0
- package/dist/cjs/src/solToken.js +69 -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 +27 -27
- 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 +26 -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 +412 -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/{test → cjs/test}/unit/sol.d.ts.map +1 -1
- package/dist/cjs/test/unit/sol.js +3504 -0
- package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/solInstructionFactory.js +454 -0
- package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
- package/dist/cjs/test/unit/solToken.js +31 -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 +471 -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 +333 -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 +787 -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 +286 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +862 -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 +517 -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/config/token2022StaticConfig.d.ts +3 -0
- package/dist/esm/config/token2022StaticConfig.js +47 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/lib/ataInitializationBuilder.d.ts +47 -0
- package/dist/esm/lib/ataInitializationBuilder.js +156 -0
- package/dist/esm/lib/closeAtaBuilder.d.ts +51 -0
- package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
- package/dist/esm/lib/closeAtaBuilder.js +140 -0
- package/dist/esm/lib/constants.d.ts +164 -0
- package/dist/esm/lib/constants.d.ts.map +1 -0
- package/dist/esm/lib/constants.js +193 -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 +261 -0
- package/dist/esm/lib/iface.d.ts +262 -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 +23 -0
- package/dist/{src → esm}/lib/index.d.ts.map +1 -1
- package/dist/esm/lib/index.js +23 -0
- package/dist/esm/lib/instructionParamsFactory.d.ts +13 -0
- package/dist/{src → esm}/lib/instructionParamsFactory.d.ts.map +1 -1
- package/dist/esm/lib/instructionParamsFactory.js +1052 -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 +26 -0
- package/dist/esm/lib/keyPair.js +59 -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/solInstructionFactory.d.ts +10 -0
- package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
- package/dist/esm/lib/solInstructionFactory.js +589 -0
- package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
- package/dist/esm/lib/stakingActivateBuilder.js +113 -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.js +31 -38
- package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
- package/dist/esm/lib/stakingDelegateBuilder.js +113 -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/esm/lib/stakingWithdrawBuilder.js +71 -0
- package/dist/esm/lib/token2022Config.d.ts +44 -0
- package/dist/esm/lib/token2022Config.js +23 -0
- package/dist/esm/lib/tokenTransferBuilder.d.ts +41 -0
- package/dist/esm/lib/tokenTransferBuilder.js +181 -0
- package/dist/esm/lib/transaction.d.ts +103 -0
- package/dist/esm/lib/transaction.d.ts.map +1 -0
- package/dist/esm/lib/transaction.js +605 -0
- package/dist/esm/lib/transactionBuilder.d.ts +128 -0
- package/dist/esm/lib/transactionBuilder.js +373 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts +120 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/esm/lib/transactionBuilderFactory.js +205 -0
- package/dist/esm/lib/transferBuilder.d.ts +26 -0
- package/dist/esm/lib/transferBuilder.js +63 -0
- package/dist/esm/lib/transferBuilderV2.d.ts +43 -0
- package/dist/esm/lib/transferBuilderV2.js +203 -0
- package/dist/esm/lib/utils.d.ts +200 -0
- package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
- package/dist/esm/lib/utils.js +567 -0
- package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
- package/dist/esm/lib/walletInitializationBuilder.js +64 -0
- package/dist/esm/register.d.ts +3 -0
- package/dist/esm/register.js +11 -0
- package/dist/esm/sol.d.ts +280 -0
- package/dist/esm/sol.d.ts.map +1 -0
- package/dist/esm/sol.js +1423 -0
- package/dist/esm/solToken.d.ts +37 -0
- package/dist/esm/solToken.js +65 -0
- package/dist/esm/tsol.d.ts +11 -0
- package/dist/esm/tsol.js +20 -0
- package/package.json +35 -16
- package/dist/src/config/token2022StaticConfig.js +0 -50
- 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.map +0 -1
- package/dist/src/lib/iface.js +0 -7
- package/dist/src/lib/instructionParamsFactory.js +0 -1036
- package/dist/src/lib/jitoStakePoolOperations.js +0 -200
- 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/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.js +0 -27
- 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.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.js +0 -210
- package/dist/src/lib/utils.js +0 -589
- package/dist/src/lib/walletInitializationBuilder.js +0 -71
- package/dist/src/register.js +0 -15
- package/dist/src/sol.d.ts.map +0 -1
- package/dist/src/sol.js +0 -1285
- 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 -3108
- 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}/config/token2022StaticConfig.d.ts +0 -0
- /package/dist/{src → cjs/src}/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/ataInitializationBuilder.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/keyPair.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/solInstructionFactory.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/token2022Config.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transferBuilderV2.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/register.d.ts +0 -0
- /package/dist/{src → cjs/src}/solToken.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}/config/token2022StaticConfig.d.ts.map +0 -0
- /package/dist/{src → esm}/index.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/ataInitializationBuilder.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/keyPair.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/stakingActivateBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/token2022Config.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/tokenTransferBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/transactionBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/transferBuilderV2.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/register.d.ts.map +0 -0
- /package/dist/{src → esm}/solToken.d.ts.map +0 -0
- /package/dist/{src → esm}/tsol.d.ts.map +0 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { BuildTransactionError, TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { PublicKey, SystemProgram, SYSVAR_RECENT_BLOCKHASHES_PUBKEY } from '@solana/web3.js';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
+
import { InstructionBuilderTypes } from './constants';
|
|
6
|
+
import { isSolLegacyInstruction } from './utils';
|
|
7
|
+
import assert from 'assert';
|
|
8
|
+
/**
|
|
9
|
+
* Transaction builder for custom Solana instructions.
|
|
10
|
+
* Allows building transactions with any set of raw Solana instructions.
|
|
11
|
+
*/
|
|
12
|
+
export class CustomInstructionBuilder extends TransactionBuilder {
|
|
13
|
+
constructor(_coinConfig) {
|
|
14
|
+
super(_coinConfig);
|
|
15
|
+
this._customInstructions = [];
|
|
16
|
+
}
|
|
17
|
+
get transactionType() {
|
|
18
|
+
return TransactionType.CustomTx;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Initialize the builder from an existing transaction
|
|
22
|
+
*/
|
|
23
|
+
initBuilder(tx) {
|
|
24
|
+
super.initBuilder(tx);
|
|
25
|
+
for (const instruction of this._instructionsData) {
|
|
26
|
+
if (instruction.type === InstructionBuilderTypes.CustomInstruction) {
|
|
27
|
+
const customInstruction = instruction;
|
|
28
|
+
this.addCustomInstruction(customInstruction.params);
|
|
29
|
+
}
|
|
30
|
+
else if (instruction.type === InstructionBuilderTypes.VersionedCustomInstruction) {
|
|
31
|
+
const versionedCustomInstruction = instruction;
|
|
32
|
+
this.addCustomInstruction(versionedCustomInstruction.params);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Add a custom instruction to the transaction
|
|
38
|
+
* @param instruction - The custom instruction to add
|
|
39
|
+
* @returns This builder instance
|
|
40
|
+
*/
|
|
41
|
+
addCustomInstruction(instruction) {
|
|
42
|
+
this.validateInstruction(instruction);
|
|
43
|
+
if (isSolLegacyInstruction(instruction)) {
|
|
44
|
+
const customInstruction = {
|
|
45
|
+
type: InstructionBuilderTypes.CustomInstruction,
|
|
46
|
+
params: instruction,
|
|
47
|
+
};
|
|
48
|
+
this._customInstructions.push(customInstruction);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const versionedCustomInstruction = {
|
|
52
|
+
type: InstructionBuilderTypes.VersionedCustomInstruction,
|
|
53
|
+
params: instruction,
|
|
54
|
+
};
|
|
55
|
+
this._customInstructions.push(versionedCustomInstruction);
|
|
56
|
+
}
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Add multiple custom instructions to the transaction
|
|
61
|
+
* @param instructions - Array of custom instructions to add
|
|
62
|
+
* @returns This builder instance
|
|
63
|
+
*/
|
|
64
|
+
addCustomInstructions(instructions) {
|
|
65
|
+
if (!Array.isArray(instructions)) {
|
|
66
|
+
throw new BuildTransactionError('Instructions must be an array');
|
|
67
|
+
}
|
|
68
|
+
for (const instruction of instructions) {
|
|
69
|
+
this.addCustomInstruction(instruction);
|
|
70
|
+
}
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Build transaction from deconstructed VersionedTransaction data
|
|
75
|
+
* @param data - VersionedTransactionData containing instructions, ALTs, and account keys
|
|
76
|
+
* @returns This builder instance
|
|
77
|
+
*/
|
|
78
|
+
fromVersionedTransactionData(data) {
|
|
79
|
+
try {
|
|
80
|
+
if (!data || typeof data !== 'object') {
|
|
81
|
+
throw new BuildTransactionError('VersionedTransactionData must be a valid object');
|
|
82
|
+
}
|
|
83
|
+
if (!Array.isArray(data.versionedInstructions) || data.versionedInstructions.length === 0) {
|
|
84
|
+
throw new BuildTransactionError('versionedInstructions must be a non-empty array');
|
|
85
|
+
}
|
|
86
|
+
if (!Array.isArray(data.addressLookupTables)) {
|
|
87
|
+
throw new BuildTransactionError('addressLookupTables must be an array');
|
|
88
|
+
}
|
|
89
|
+
if (!Array.isArray(data.staticAccountKeys) || data.staticAccountKeys.length === 0) {
|
|
90
|
+
throw new BuildTransactionError('staticAccountKeys must be a non-empty array');
|
|
91
|
+
}
|
|
92
|
+
if (!data.messageHeader || typeof data.messageHeader !== 'object') {
|
|
93
|
+
throw new BuildTransactionError('messageHeader must be a valid object');
|
|
94
|
+
}
|
|
95
|
+
if (typeof data.messageHeader.numRequiredSignatures !== 'number' ||
|
|
96
|
+
data.messageHeader.numRequiredSignatures < 0) {
|
|
97
|
+
throw new BuildTransactionError('messageHeader.numRequiredSignatures must be a non-negative number');
|
|
98
|
+
}
|
|
99
|
+
if (typeof data.messageHeader.numReadonlySignedAccounts !== 'number' ||
|
|
100
|
+
data.messageHeader.numReadonlySignedAccounts < 0) {
|
|
101
|
+
throw new BuildTransactionError('messageHeader.numReadonlySignedAccounts must be a non-negative number');
|
|
102
|
+
}
|
|
103
|
+
if (typeof data.messageHeader.numReadonlyUnsignedAccounts !== 'number' ||
|
|
104
|
+
data.messageHeader.numReadonlyUnsignedAccounts < 0) {
|
|
105
|
+
throw new BuildTransactionError('messageHeader.numReadonlyUnsignedAccounts must be a non-negative number');
|
|
106
|
+
}
|
|
107
|
+
let processedData = data;
|
|
108
|
+
if (this._nonceInfo && this._nonceInfo.params) {
|
|
109
|
+
processedData = this.injectNonceAdvanceInstruction(data);
|
|
110
|
+
}
|
|
111
|
+
this.addCustomInstructions(processedData.versionedInstructions);
|
|
112
|
+
if (!this._transaction) {
|
|
113
|
+
this._transaction = new Transaction(this._coinConfig);
|
|
114
|
+
}
|
|
115
|
+
this._transaction.setVersionedTransactionData(processedData);
|
|
116
|
+
this._transaction.setTransactionType(TransactionType.CustomTx);
|
|
117
|
+
if (!this._sender && processedData.staticAccountKeys.length > 0) {
|
|
118
|
+
this._sender = processedData.staticAccountKeys[0];
|
|
119
|
+
}
|
|
120
|
+
return this;
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (error instanceof BuildTransactionError) {
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
throw new BuildTransactionError(`Failed to process versioned transaction data: ${error.message}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Inject nonce advance instruction into versioned transaction data for durable nonce support.
|
|
131
|
+
* Reorders accounts so signers appear first (required by Solana MessageV0 format).
|
|
132
|
+
* @param data - Original versioned transaction data
|
|
133
|
+
* @returns Modified versioned transaction data with nonce advance instruction
|
|
134
|
+
* @private
|
|
135
|
+
*/
|
|
136
|
+
injectNonceAdvanceInstruction(data) {
|
|
137
|
+
const { walletNonceAddress, authWalletAddress } = this._nonceInfo.params;
|
|
138
|
+
const SYSTEM_PROGRAM = SystemProgram.programId.toBase58();
|
|
139
|
+
const SYSVAR_RECENT_BLOCKHASHES = SYSVAR_RECENT_BLOCKHASHES_PUBKEY.toBase58();
|
|
140
|
+
const numSigners = data.messageHeader.numRequiredSignatures;
|
|
141
|
+
const originalSigners = data.staticAccountKeys.slice(0, numSigners);
|
|
142
|
+
const originalNonSigners = data.staticAccountKeys.slice(numSigners);
|
|
143
|
+
if (!originalSigners.includes(authWalletAddress)) {
|
|
144
|
+
originalSigners.push(authWalletAddress);
|
|
145
|
+
}
|
|
146
|
+
const nonSigners = [...originalNonSigners];
|
|
147
|
+
const allKeys = [...originalSigners, ...originalNonSigners];
|
|
148
|
+
if (!allKeys.includes(SYSTEM_PROGRAM))
|
|
149
|
+
nonSigners.push(SYSTEM_PROGRAM);
|
|
150
|
+
if (!allKeys.includes(walletNonceAddress))
|
|
151
|
+
nonSigners.push(walletNonceAddress);
|
|
152
|
+
if (!allKeys.includes(SYSVAR_RECENT_BLOCKHASHES))
|
|
153
|
+
nonSigners.push(SYSVAR_RECENT_BLOCKHASHES);
|
|
154
|
+
const newStaticAccountKeys = [...originalSigners, ...nonSigners];
|
|
155
|
+
const nonceAdvanceInstruction = {
|
|
156
|
+
programIdIndex: newStaticAccountKeys.indexOf(SYSTEM_PROGRAM),
|
|
157
|
+
accountKeyIndexes: [
|
|
158
|
+
newStaticAccountKeys.indexOf(walletNonceAddress),
|
|
159
|
+
newStaticAccountKeys.indexOf(SYSVAR_RECENT_BLOCKHASHES),
|
|
160
|
+
newStaticAccountKeys.indexOf(authWalletAddress),
|
|
161
|
+
],
|
|
162
|
+
data: '6vx8P', // SystemProgram AdvanceNonceAccount (0x04000000) in base58
|
|
163
|
+
};
|
|
164
|
+
const indexMap = new Map(data.staticAccountKeys.map((key, oldIdx) => [oldIdx, newStaticAccountKeys.indexOf(key)]));
|
|
165
|
+
const remappedInstructions = data.versionedInstructions.map((inst) => ({
|
|
166
|
+
programIdIndex: indexMap.get(inst.programIdIndex) ?? inst.programIdIndex,
|
|
167
|
+
accountKeyIndexes: inst.accountKeyIndexes.map((idx) => indexMap.get(idx) ?? idx),
|
|
168
|
+
data: inst.data,
|
|
169
|
+
}));
|
|
170
|
+
return {
|
|
171
|
+
...data,
|
|
172
|
+
versionedInstructions: [nonceAdvanceInstruction, ...remappedInstructions],
|
|
173
|
+
staticAccountKeys: newStaticAccountKeys,
|
|
174
|
+
messageHeader: {
|
|
175
|
+
...data.messageHeader,
|
|
176
|
+
numRequiredSignatures: originalSigners.length,
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Clear all custom instructions and versioned transaction data
|
|
182
|
+
* @returns This builder instance
|
|
183
|
+
*/
|
|
184
|
+
clearInstructions() {
|
|
185
|
+
this._customInstructions = [];
|
|
186
|
+
if (this._transaction) {
|
|
187
|
+
this._transaction.setVersionedTransactionData(undefined);
|
|
188
|
+
}
|
|
189
|
+
return this;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get the current custom instructions
|
|
193
|
+
* @returns Array of custom instructions
|
|
194
|
+
*/
|
|
195
|
+
getInstructions() {
|
|
196
|
+
return [...this._customInstructions];
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Validate custom instruction format
|
|
200
|
+
* @param instruction - The instruction to validate
|
|
201
|
+
*/
|
|
202
|
+
validateInstruction(instruction) {
|
|
203
|
+
if (!instruction) {
|
|
204
|
+
throw new BuildTransactionError('Instruction cannot be null or undefined');
|
|
205
|
+
}
|
|
206
|
+
if (isSolLegacyInstruction(instruction)) {
|
|
207
|
+
this.validateSolInstruction(instruction);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
this.validateVersionedInstruction(instruction);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Validate traditional SolInstruction format
|
|
215
|
+
* @param instruction - The traditional instruction to validate
|
|
216
|
+
*/
|
|
217
|
+
validateSolInstruction(instruction) {
|
|
218
|
+
if (!instruction.programId || typeof instruction.programId !== 'string') {
|
|
219
|
+
throw new BuildTransactionError('Instruction must have a valid programId string');
|
|
220
|
+
}
|
|
221
|
+
// Validate that programId is a valid Solana public key
|
|
222
|
+
try {
|
|
223
|
+
new PublicKey(instruction.programId);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
throw new BuildTransactionError('Invalid programId format');
|
|
227
|
+
}
|
|
228
|
+
if (!instruction.keys || !Array.isArray(instruction.keys)) {
|
|
229
|
+
throw new BuildTransactionError('Instruction must have valid keys array');
|
|
230
|
+
}
|
|
231
|
+
// Validate each key
|
|
232
|
+
for (const key of instruction.keys) {
|
|
233
|
+
if (!key.pubkey || typeof key.pubkey !== 'string') {
|
|
234
|
+
throw new BuildTransactionError('Each key must have a valid pubkey string');
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
new PublicKey(key.pubkey);
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
throw new BuildTransactionError('Invalid pubkey format in keys');
|
|
241
|
+
}
|
|
242
|
+
if (typeof key.isSigner !== 'boolean') {
|
|
243
|
+
throw new BuildTransactionError('Each key must have a boolean isSigner field');
|
|
244
|
+
}
|
|
245
|
+
if (typeof key.isWritable !== 'boolean') {
|
|
246
|
+
throw new BuildTransactionError('Each key must have a boolean isWritable field');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (instruction.data === undefined || typeof instruction.data !== 'string') {
|
|
250
|
+
throw new BuildTransactionError('Instruction must have valid data string');
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Validate versioned instruction format
|
|
255
|
+
* @param instruction - The versioned instruction to validate
|
|
256
|
+
*/
|
|
257
|
+
validateVersionedInstruction(instruction) {
|
|
258
|
+
if (typeof instruction.programIdIndex !== 'number' || instruction.programIdIndex < 0) {
|
|
259
|
+
throw new BuildTransactionError('Versioned instruction must have a valid programIdIndex number');
|
|
260
|
+
}
|
|
261
|
+
if (!instruction.accountKeyIndexes || !Array.isArray(instruction.accountKeyIndexes)) {
|
|
262
|
+
throw new BuildTransactionError('Versioned instruction must have valid accountKeyIndexes array');
|
|
263
|
+
}
|
|
264
|
+
// Validate each account key index
|
|
265
|
+
for (const index of instruction.accountKeyIndexes) {
|
|
266
|
+
if (typeof index !== 'number' || index < 0) {
|
|
267
|
+
throw new BuildTransactionError('Each accountKeyIndex must be a non-negative number');
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (instruction.data === undefined || typeof instruction.data !== 'string') {
|
|
271
|
+
throw new BuildTransactionError('Versioned instruction must have valid data string');
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/** @inheritdoc */
|
|
275
|
+
async buildImplementation() {
|
|
276
|
+
assert(this._customInstructions.length > 0, 'At least one custom instruction must be specified');
|
|
277
|
+
// Set the instructions data to our custom instructions
|
|
278
|
+
this._instructionsData = [...this._customInstructions];
|
|
279
|
+
return await super.buildImplementation();
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHFCQUFxQixFQUEyQyxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2SCxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUI7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtCQUFrQjtJQUc5RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhiLHdCQUFtQixHQUF1RCxFQUFFLENBQUM7SUFJckYsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV0QixLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyx1QkFBdUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNuRSxNQUFNLGlCQUFpQixHQUFHLFdBQWdDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxv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QUFxQixDQUFDLG9EQUFvRCxDQUFDLENBQUM7WUFDeEYsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLE9BQU8sV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzRSxNQUFNLElBQUkscUJBQXFCLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLG1EQUFtRCxDQUFDLENBQUM7UUFFakcsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFdkQsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgU29sSW5zdHJ1Y3Rpb24sIFNvbFZlcnNpb25lZEluc3RydWN0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBQdWJsaWNLZXksIFN5c3RlbVByb2dyYW0sIFNZU1ZBUl9SRUNFTlRfQkxPQ0tIQVNIRVNfUFVCS0VZIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEN1c3RvbUluc3RydWN0aW9uLCBWZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbiwgVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBpc1NvbExlZ2FjeUluc3RydWN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbi8qKlxuICogVHJhbnNhY3Rpb24gYnVpbGRlciBmb3IgY3VzdG9tIFNvbGFuYSBpbnN0cnVjdGlvbnMuXG4gKiBBbGxvd3MgYnVpbGRpbmcgdHJhbnNhY3Rpb25zIHdpdGggYW55IHNldCBvZiByYXcgU29sYW5hIGluc3RydWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbUluc3RydWN0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2N1c3RvbUluc3RydWN0aW9uczogKEN1c3RvbUluc3RydWN0aW9uIHwgVmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24pW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciBmcm9tIGFuIGV4aXN0aW5nIHRyYW5zYWN0aW9uXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG5cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIHRoaXMuX2luc3RydWN0aW9uc0RhdGEpIHtcbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DdXN0b21JbnN0cnVjdGlvbikge1xuICAgICAgICBjb25zdCBjdXN0b21JbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uIGFzIEN1c3RvbUluc3RydWN0aW9uO1xuICAgICAgICB0aGlzLmFkZEN1c3RvbUluc3RydWN0aW9uKGN1c3RvbUluc3RydWN0aW9uLnBhcmFtcyk7XG4gICAgICB9IGVsc2UgaWYgKGluc3RydWN0aW9uLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb24gYXMgVmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb24odmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24ucGFyYW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY3VzdG9tIGluc3RydWN0aW9uIHRvIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gaW5zdHJ1Y3Rpb24gLSBUaGUgY3VzdG9tIGluc3RydWN0aW9uIHRvIGFkZFxuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgaW5zdGFuY2VcbiAgICovXG4gIGFkZEN1c3RvbUluc3RydWN0aW9uKGluc3RydWN0aW9uOiBTb2xJbnN0cnVjdGlvbiB8IFNvbFZlcnNpb25lZEluc3RydWN0aW9uKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcblxuICAgIGlmIChpc1NvbExlZ2FjeUluc3RydWN0aW9uKGluc3RydWN0aW9uKSkge1xuICAgICAgY29uc3QgY3VzdG9tSW5zdHJ1Y3Rpb246IEN1c3RvbUluc3RydWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DdXN0b21JbnN0cnVjdGlvbixcbiAgICAgICAgcGFyYW1zOiBpbnN0cnVjdGlvbixcbiAgICAgIH07XG4gICAgICB0aGlzLl9jdXN0b21JbnN0cnVjdGlvbnMucHVzaChjdXN0b21JbnN0cnVjdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uOiBWZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24sXG4gICAgICAgIHBhcmFtczogaW5zdHJ1Y3Rpb24sXG4gICAgICB9O1xuICAgICAgdGhpcy5fY3VzdG9tSW5zdHJ1Y3Rpb25zLnB1c2godmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBtdWx0aXBsZSBjdXN0b20gaW5zdHJ1Y3Rpb25zIHRvIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gaW5zdHJ1Y3Rpb25zIC0gQXJyYXkgb2YgY3VzdG9tIGluc3RydWN0aW9ucyB0byBhZGRcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGluc3RhbmNlXG4gICAqL1xuICBhZGRDdXN0b21JbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zOiAoU29sSW5zdHJ1Y3Rpb24gfCBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbilbXSk6IHRoaXMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShpbnN0cnVjdGlvbnMpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnN0cnVjdGlvbnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgICAgdGhpcy5hZGRDdXN0b21JbnN0cnVjdGlvbihpbnN0cnVjdGlvbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRyYW5zYWN0aW9uIGZyb20gZGVjb25zdHJ1Y3RlZCBWZXJzaW9uZWRUcmFuc2FjdGlvbiBkYXRhXG4gICAqIEBwYXJhbSBkYXRhIC0gVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb25zLCBBTFRzLCBhbmQgYWNjb3VudCBrZXlzXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBpbnN0YW5jZVxuICAgKi9cbiAgZnJvbVZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YShkYXRhOiBWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEpOiB0aGlzIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEgbXVzdCBiZSBhIHZhbGlkIG9iamVjdCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMpIHx8IGRhdGEudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCd2ZXJzaW9uZWRJbnN0cnVjdGlvbnMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheScpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YS5hZGRyZXNzTG9va3VwVGFibGVzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdhZGRyZXNzTG9va3VwVGFibGVzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEuc3RhdGljQWNjb3VudEtleXMpIHx8IGRhdGEuc3RhdGljQWNjb3VudEtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3N0YXRpY0FjY291bnRLZXlzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkYXRhLm1lc3NhZ2VIZWFkZXIgfHwgdHlwZW9mIGRhdGEubWVzc2FnZUhlYWRlciAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignbWVzc2FnZUhlYWRlciBtdXN0IGJlIGEgdmFsaWQgb2JqZWN0Jyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVxdWlyZWRTaWduYXR1cmVzICE9PSAnbnVtYmVyJyB8fFxuICAgICAgICBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVxdWlyZWRTaWduYXR1cmVzIDwgMFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ21lc3NhZ2VIZWFkZXIubnVtUmVxdWlyZWRTaWduYXR1cmVzIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlTaWduZWRBY2NvdW50cyAhPT0gJ251bWJlcicgfHxcbiAgICAgICAgZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlYWRvbmx5U2lnbmVkQWNjb3VudHMgPCAwXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignbWVzc2FnZUhlYWRlci5udW1SZWFkb25seVNpZ25lZEFjY291bnRzIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzICE9PSAnbnVtYmVyJyB8fFxuICAgICAgICBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzIDwgMFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ21lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwcm9jZXNzZWREYXRhID0gZGF0YTtcbiAgICAgIGlmICh0aGlzLl9ub25jZUluZm8gJiYgdGhpcy5fbm9uY2VJbmZvLnBhcmFtcykge1xuICAgICAgICBwcm9jZXNzZWREYXRhID0gdGhpcy5pbmplY3ROb25jZUFkdmFuY2VJbnN0cnVjdGlvbihkYXRhKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hZGRDdXN0b21JbnN0cnVjdGlvbnMocHJvY2Vzc2VkRGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMpO1xuXG4gICAgICBpZiAoIXRoaXMuX3RyYW5zYWN0aW9uKSB7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgfVxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24uc2V0VmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKHByb2Nlc3NlZERhdGEpO1xuXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4KTtcblxuICAgICAgaWYgKCF0aGlzLl9zZW5kZXIgJiYgcHJvY2Vzc2VkRGF0YS5zdGF0aWNBY2NvdW50S2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX3NlbmRlciA9IHByb2Nlc3NlZERhdGEuc3RhdGljQWNjb3VudEtleXNbMF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBCdWlsZFRyYW5zYWN0aW9uRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBGYWlsZWQgdG8gcHJvY2VzcyB2ZXJzaW9uZWQgdHJhbnNhY3Rpb24gZGF0YTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmplY3Qgbm9uY2UgYWR2YW5jZSBpbnN0cnVjdGlvbiBpbnRvIHZlcnNpb25lZCB0cmFuc2FjdGlvbiBkYXRhIGZvciBkdXJhYmxlIG5vbmNlIHN1cHBvcnQuXG4gICAqIFJlb3JkZXJzIGFjY291bnRzIHNvIHNpZ25lcnMgYXBwZWFyIGZpcnN0IChyZXF1aXJlZCBieSBTb2xhbmEgTWVzc2FnZVYwIGZvcm1hdCkuXG4gICAqIEBwYXJhbSBkYXRhIC0gT3JpZ2luYWwgdmVyc2lvbmVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMgTW9kaWZpZWQgdmVyc2lvbmVkIHRyYW5zYWN0aW9uIGRhdGEgd2l0aCBub25jZSBhZHZhbmNlIGluc3RydWN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGluamVjdE5vbmNlQWR2YW5jZUluc3RydWN0aW9uKGRhdGE6IFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSk6IFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSB7XG4gICAgY29uc3QgeyB3YWxsZXROb25jZUFkZHJlc3MsIGF1dGhXYWxsZXRBZGRyZXNzIH0gPSB0aGlzLl9ub25jZUluZm8hLnBhcmFtcztcbiAgICBjb25zdCBTWVNURU1fUFJPR1JBTSA9IFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KCk7XG4gICAgY29uc3QgU1lTVkFSX1JFQ0VOVF9CTE9DS0hBU0hFUyA9IFNZU1ZBUl9SRUNFTlRfQkxPQ0tIQVNIRVNfUFVCS0VZLnRvQmFzZTU4KCk7XG5cbiAgICBjb25zdCBudW1TaWduZXJzID0gZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlcXVpcmVkU2lnbmF0dXJlcztcbiAgICBjb25zdCBvcmlnaW5hbFNpZ25lcnMgPSBkYXRhLnN0YXRpY0FjY291bnRLZXlzLnNsaWNlKDAsIG51bVNpZ25lcnMpO1xuICAgIGNvbnN0IG9yaWdpbmFsTm9uU2lnbmVycyA9IGRhdGEuc3RhdGljQWNjb3VudEtleXMuc2xpY2UobnVtU2lnbmVycyk7XG5cbiAgICBpZiAoIW9yaWdpbmFsU2lnbmVycy5pbmNsdWRlcyhhdXRoV2FsbGV0QWRkcmVzcykpIHtcbiAgICAgIG9yaWdpbmFsU2lnbmVycy5wdXNoKGF1dGhXYWxsZXRBZGRyZXNzKTtcbiAgICB9XG5cbiAgICBjb25zdCBub25TaWduZXJzID0gWy4uLm9yaWdpbmFsTm9uU2lnbmVyc107XG4gICAgY29uc3QgYWxsS2V5cyA9IFsuLi5vcmlnaW5hbFNpZ25lcnMsIC4uLm9yaWdpbmFsTm9uU2lnbmVyc107XG5cbiAgICBpZiAoIWFsbEtleXMuaW5jbHVkZXMoU1lTVEVNX1BST0dSQU0pKSBub25TaWduZXJzLnB1c2goU1lTVEVNX1BST0dSQU0pO1xuICAgIGlmICghYWxsS2V5cy5pbmNsdWRlcyh3YWxsZXROb25jZUFkZHJlc3MpKSBub25TaWduZXJzLnB1c2god2FsbGV0Tm9uY2VBZGRyZXNzKTtcbiAgICBpZiAoIWFsbEtleXMuaW5jbHVkZXMoU1lTVkFSX1JFQ0VOVF9CTE9DS0hBU0hFUykpIG5vblNpZ25lcnMucHVzaChTWVNWQVJfUkVDRU5UX0JMT0NLSEFTSEVTKTtcblxuICAgIGNvbnN0IG5ld1N0YXRpY0FjY291bnRLZXlzID0gWy4uLm9yaWdpbmFsU2lnbmVycywgLi4ubm9uU2lnbmVyc107XG5cbiAgICBjb25zdCBub25jZUFkdmFuY2VJbnN0cnVjdGlvbjogU29sVmVyc2lvbmVkSW5zdHJ1Y3Rpb24gPSB7XG4gICAgICBwcm9ncmFtSWRJbmRleDogbmV3U3RhdGljQWNjb3VudEtleXMuaW5kZXhPZihTWVNURU1fUFJPR1JBTSksXG4gICAgICBhY2NvdW50S2V5SW5kZXhlczogW1xuICAgICAgICBuZXdTdGF0aWNBY2NvdW50S2V5cy5pbmRleE9mKHdhbGxldE5vbmNlQWRkcmVzcyksXG4gICAgICAgIG5ld1N0YXRpY0FjY291bnRLZXlzLmluZGV4T2YoU1lTVkFSX1JFQ0VOVF9CTE9DS0hBU0hFUyksXG4gICAgICAgIG5ld1N0YXRpY0FjY291bnRLZXlzLmluZGV4T2YoYXV0aFdhbGxldEFkZHJlc3MpLFxuICAgICAgXSxcbiAgICAgIGRhdGE6ICc2dng4UCcsIC8vIFN5c3RlbVByb2dyYW0gQWR2YW5jZU5vbmNlQWNjb3VudCAoMHgwNDAwMDAwMCkgaW4gYmFzZTU4XG4gICAgfTtcblxuICAgIGNvbnN0IGluZGV4TWFwID0gbmV3IE1hcChkYXRhLnN0YXRpY0FjY291bnRLZXlzLm1hcCgoa2V5LCBvbGRJZHgpID0+IFtvbGRJZHgsIG5ld1N0YXRpY0FjY291bnRLZXlzLmluZGV4T2Yoa2V5KV0pKTtcbiAgICBjb25zdCByZW1hcHBlZEluc3RydWN0aW9ucyA9IGRhdGEudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zLm1hcCgoaW5zdCkgPT4gKHtcbiAgICAgIHByb2dyYW1JZEluZGV4OiBpbmRleE1hcC5nZXQoaW5zdC5wcm9ncmFtSWRJbmRleCkgPz8gaW5zdC5wcm9ncmFtSWRJbmRleCxcbiAgICAgIGFjY291bnRLZXlJbmRleGVzOiBpbnN0LmFjY291bnRLZXlJbmRleGVzLm1hcCgoaWR4KSA9PiBpbmRleE1hcC5nZXQoaWR4KSA/PyBpZHgpLFxuICAgICAgZGF0YTogaW5zdC5kYXRhLFxuICAgIH0pKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgdmVyc2lvbmVkSW5zdHJ1Y3Rpb25zOiBbbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24sIC4uLnJlbWFwcGVkSW5zdHJ1Y3Rpb25zXSxcbiAgICAgIHN0YXRpY0FjY291bnRLZXlzOiBuZXdTdGF0aWNBY2NvdW50S2V5cyxcbiAgICAgIG1lc3NhZ2VIZWFkZXI6IHtcbiAgICAgICAgLi4uZGF0YS5tZXNzYWdlSGVhZGVyLFxuICAgICAgICBudW1SZXF1aXJlZFNpZ25hdHVyZXM6IG9yaWdpbmFsU2lnbmVycy5sZW5ndGgsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGN1c3RvbSBpbnN0cnVjdGlvbnMgYW5kIHZlcnNpb25lZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBpbnN0YW5jZVxuICAgKi9cbiAgY2xlYXJJbnN0cnVjdGlvbnMoKTogdGhpcyB7XG4gICAgdGhpcy5fY3VzdG9tSW5zdHJ1Y3Rpb25zID0gW107XG4gICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uKSB7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IGN1c3RvbSBpbnN0cnVjdGlvbnNcbiAgICogQHJldHVybnMgQXJyYXkgb2YgY3VzdG9tIGluc3RydWN0aW9uc1xuICAgKi9cbiAgZ2V0SW5zdHJ1Y3Rpb25zKCk6IChDdXN0b21JbnN0cnVjdGlvbiB8IFZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uKVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2N1c3RvbUluc3RydWN0aW9uc107XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgY3VzdG9tIGluc3RydWN0aW9uIGZvcm1hdFxuICAgKiBAcGFyYW0gaW5zdHJ1Y3Rpb24gLSBUaGUgaW5zdHJ1Y3Rpb24gdG8gdmFsaWRhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbjogU29sSW5zdHJ1Y3Rpb24gfCBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbik6IHZvaWQge1xuICAgIGlmICghaW5zdHJ1Y3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0luc3RydWN0aW9uIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGlmIChpc1NvbExlZ2FjeUluc3RydWN0aW9uKGluc3RydWN0aW9uKSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVNvbEluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWxpZGF0ZVZlcnNpb25lZEluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdHJhZGl0aW9uYWwgU29sSW5zdHJ1Y3Rpb24gZm9ybWF0XG4gICAqIEBwYXJhbSBpbnN0cnVjdGlvbiAtIFRoZSB0cmFkaXRpb25hbCBpbnN0cnVjdGlvbiB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNvbEluc3RydWN0aW9uKGluc3RydWN0aW9uOiBTb2xJbnN0cnVjdGlvbik6IHZvaWQge1xuICAgIGlmICghaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkIHx8IHR5cGVvZiBpbnN0cnVjdGlvbi5wcm9ncmFtSWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnN0cnVjdGlvbiBtdXN0IGhhdmUgYSB2YWxpZCBwcm9ncmFtSWQgc3RyaW5nJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgdGhhdCBwcm9ncmFtSWQgaXMgYSB2YWxpZCBTb2xhbmEgcHVibGljIGtleVxuICAgIHRyeSB7XG4gICAgICBuZXcgUHVibGljS2V5KGluc3RydWN0aW9uLnByb2dyYW1JZCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcHJvZ3JhbUlkIGZvcm1hdCcpO1xuICAgIH1cblxuICAgIGlmICghaW5zdHJ1Y3Rpb24ua2V5cyB8fCAhQXJyYXkuaXNBcnJheShpbnN0cnVjdGlvbi5rZXlzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGtleXMgYXJyYXknKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBlYWNoIGtleVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGluc3RydWN0aW9uLmtleXMpIHtcbiAgICAgIGlmICgha2V5LnB1YmtleSB8fCB0eXBlb2Yga2V5LnB1YmtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRWFjaCBrZXkgbXVzdCBoYXZlIGEgdmFsaWQgcHVia2V5IHN0cmluZycpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBuZXcgUHVibGljS2V5KGtleS5wdWJrZXkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBwdWJrZXkgZm9ybWF0IGluIGtleXMnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBrZXkuaXNTaWduZXIgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFYWNoIGtleSBtdXN0IGhhdmUgYSBib29sZWFuIGlzU2lnbmVyIGZpZWxkJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Yga2V5LmlzV3JpdGFibGUgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFYWNoIGtleSBtdXN0IGhhdmUgYSBib29sZWFuIGlzV3JpdGFibGUgZmllbGQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5zdHJ1Y3Rpb24uZGF0YSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBpbnN0cnVjdGlvbi5kYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGRhdGEgc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHZlcnNpb25lZCBpbnN0cnVjdGlvbiBmb3JtYXRcbiAgICogQHBhcmFtIGluc3RydWN0aW9uIC0gVGhlIHZlcnNpb25lZCBpbnN0cnVjdGlvbiB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVZlcnNpb25lZEluc3RydWN0aW9uKGluc3RydWN0aW9uOiBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkSW5kZXggIT09ICdudW1iZXInIHx8IGluc3RydWN0aW9uLnByb2dyYW1JZEluZGV4IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmVyc2lvbmVkIGluc3RydWN0aW9uIG11c3QgaGF2ZSBhIHZhbGlkIHByb2dyYW1JZEluZGV4IG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmICghaW5zdHJ1Y3Rpb24uYWNjb3VudEtleUluZGV4ZXMgfHwgIUFycmF5LmlzQXJyYXkoaW5zdHJ1Y3Rpb24uYWNjb3VudEtleUluZGV4ZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWZXJzaW9uZWQgaW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGFjY291bnRLZXlJbmRleGVzIGFycmF5Jyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZWFjaCBhY2NvdW50IGtleSBpbmRleFxuICAgIGZvciAoY29uc3QgaW5kZXggb2YgaW5zdHJ1Y3Rpb24uYWNjb3VudEtleUluZGV4ZXMpIHtcbiAgICAgIGlmICh0eXBlb2YgaW5kZXggIT09ICdudW1iZXInIHx8IGluZGV4IDwgMCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFYWNoIGFjY291bnRLZXlJbmRleCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlcicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbnN0cnVjdGlvbi5kYXRhID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGluc3RydWN0aW9uLmRhdGEgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWZXJzaW9uZWQgaW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGRhdGEgc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fY3VzdG9tSW5zdHJ1Y3Rpb25zLmxlbmd0aCA+IDAsICdBdCBsZWFzdCBvbmUgY3VzdG9tIGluc3RydWN0aW9uIG11c3QgYmUgc3BlY2lmaWVkJyk7XG5cbiAgICAvLyBTZXQgdGhlIGluc3RydWN0aW9ucyBkYXRhIHRvIG91ciBjdXN0b20gaW5zdHJ1Y3Rpb25zXG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IFsuLi50aGlzLl9jdXN0b21JbnN0cnVjdGlvbnNdO1xuXG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TransactionExplanation as SolLibTransactionExplanation } from './iface';
|
|
2
|
+
export interface ExplainTransactionWasmOptions {
|
|
3
|
+
txBase64: string;
|
|
4
|
+
feeInfo?: {
|
|
5
|
+
fee: string;
|
|
6
|
+
};
|
|
7
|
+
tokenAccountRentExemptAmount?: string;
|
|
8
|
+
coinName: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Standalone WASM-based transaction explanation.
|
|
12
|
+
*
|
|
13
|
+
* Parses the transaction via `parseTransaction(tx)` from @bitgo/wasm-solana,
|
|
14
|
+
* then derives the transaction type, extracts outputs/inputs, computes fees,
|
|
15
|
+
* and maps to BitGoJS TransactionExplanation format.
|
|
16
|
+
*
|
|
17
|
+
* The explain logic was ported from wasm-solana per the convention that
|
|
18
|
+
* `explainTransaction` belongs in BitGoJS, not in wasm-* packages.
|
|
19
|
+
*/
|
|
20
|
+
export declare function explainSolTransaction(params: ExplainTransactionWasmOptions): SolLibTransactionExplanation;
|
|
21
|
+
//# sourceMappingURL=explainTransactionWasm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainTransactionWasm.d.ts","sourceRoot":"","sources":["../../../src/lib/explainTransactionWasm.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,sBAAsB,IAAI,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAGzG,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgKD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,6BAA6B,GAAG,4BAA4B,CAoJzG"}
|