@bitgo-beta/sdk-coin-sol 7.6.4-beta.37 → 7.6.4-beta.370
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 @@
|
|
|
1
|
+
{"version":3,"file":"bigint-buffer-guard.d.ts","sourceRoot":"","sources":["../../../src/bigint-buffer-guard.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Added a lightweight runtime guard for BigInt<->Buffer conversions in @bitgo-beta/sdk-coin-sol (bigint-buffer-guard.ts) to validate input lengths and reduce misuse risk.
|
|
2
|
+
// It's purpose is to enforce input type/length checks around BigInt buffer operations; imported it so validations run at module load
|
|
3
|
+
try {
|
|
4
|
+
const mod = require('bigint-buffer');
|
|
5
|
+
const le = typeof mod.toBigIntLE === 'function' ? mod.toBigIntLE : undefined;
|
|
6
|
+
const be = typeof mod.toBigIntBE === 'function' ? mod.toBigIntBE : undefined;
|
|
7
|
+
const isBufferLike = (b) => (typeof Buffer !== 'undefined' && Buffer.isBuffer(b)) || b instanceof Uint8Array;
|
|
8
|
+
const byteLen = (b) => typeof Buffer !== 'undefined' && Buffer.isBuffer(b) ? b.length : b.byteLength;
|
|
9
|
+
const assertBuf = (b) => {
|
|
10
|
+
if (!isBufferLike(b))
|
|
11
|
+
throw new TypeError('toBigInt*: input must be Buffer/Uint8Array');
|
|
12
|
+
if (byteLen(b) > 1000000)
|
|
13
|
+
throw new RangeError('toBigInt*: buffer too large');
|
|
14
|
+
};
|
|
15
|
+
if (le)
|
|
16
|
+
mod.toBigIntLE = (buf) => {
|
|
17
|
+
assertBuf(buf);
|
|
18
|
+
return le(buf);
|
|
19
|
+
};
|
|
20
|
+
if (be)
|
|
21
|
+
mod.toBigIntBE = (buf) => {
|
|
22
|
+
assertBuf(buf);
|
|
23
|
+
return be(buf);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
/* noop */
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlnaW50LWJ1ZmZlci1ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaWdpbnQtYnVmZmVyLWd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJLQUEySztBQUMzSyxxSUFBcUk7QUFFckksSUFBSSxDQUFDO0lBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLE9BQU8sR0FBRyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM3RSxNQUFNLEVBQUUsR0FBRyxPQUFPLEdBQUcsQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFN0UsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksVUFBVSxDQUFDO0lBRXRILE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FDekIsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLENBQWdCLENBQUMsVUFBVSxDQUFDO0lBRWhHLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUU7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDeEYsSUFBSSxPQUFPLENBQUMsQ0FBUSxDQUFDLEdBQUcsT0FBUztZQUFFLE1BQU0sSUFBSSxVQUFVLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUN6RixDQUFDLENBQUM7SUFFRixJQUFJLEVBQUU7UUFDSixHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBd0IsRUFBRSxFQUFFO1lBQzVDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQztJQUNKLElBQUksRUFBRTtRQUNKLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUF3QixFQUFFLEVBQUU7WUFDNUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUFDLE1BQU0sQ0FBQztJQUNQLFVBQVU7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQWRkZWQgYSBsaWdodHdlaWdodCBydW50aW1lIGd1YXJkIGZvciBCaWdJbnQ8LT5CdWZmZXIgY29udmVyc2lvbnMgaW4gQGJpdGdvLWJldGEvc2RrLWNvaW4tc29sIChiaWdpbnQtYnVmZmVyLWd1YXJkLnRzKSB0byB2YWxpZGF0ZSBpbnB1dCBsZW5ndGhzIGFuZCByZWR1Y2UgbWlzdXNlIHJpc2suXG4vLyBJdCdzIHB1cnBvc2UgaXMgdG8gZW5mb3JjZSBpbnB1dCB0eXBlL2xlbmd0aCBjaGVja3MgYXJvdW5kIEJpZ0ludCBidWZmZXIgb3BlcmF0aW9uczsgaW1wb3J0ZWQgaXQgc28gdmFsaWRhdGlvbnMgcnVuIGF0IG1vZHVsZSBsb2FkXG5cbnRyeSB7XG4gIGNvbnN0IG1vZCA9IHJlcXVpcmUoJ2JpZ2ludC1idWZmZXInKTtcbiAgY29uc3QgbGUgPSB0eXBlb2YgbW9kLnRvQmlnSW50TEUgPT09ICdmdW5jdGlvbicgPyBtb2QudG9CaWdJbnRMRSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYmUgPSB0eXBlb2YgbW9kLnRvQmlnSW50QkUgPT09ICdmdW5jdGlvbicgPyBtb2QudG9CaWdJbnRCRSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBpc0J1ZmZlckxpa2UgPSAoYjogdW5rbm93bikgPT4gKHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIEJ1ZmZlci5pc0J1ZmZlcihiKSkgfHwgYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk7XG5cbiAgY29uc3QgYnl0ZUxlbiA9IChiOiBhbnkpID0+XG4gICAgdHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgQnVmZmVyLmlzQnVmZmVyKGIpID8gYi5sZW5ndGggOiAoYiBhcyBVaW50OEFycmF5KS5ieXRlTGVuZ3RoO1xuXG4gIGNvbnN0IGFzc2VydEJ1ZiA9IChiOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCFpc0J1ZmZlckxpa2UoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RvQmlnSW50KjogaW5wdXQgbXVzdCBiZSBCdWZmZXIvVWludDhBcnJheScpO1xuICAgIGlmIChieXRlTGVuKGIgYXMgYW55KSA+IDFfMDAwXzAwMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RvQmlnSW50KjogYnVmZmVyIHRvbyBsYXJnZScpO1xuICB9O1xuXG4gIGlmIChsZSlcbiAgICBtb2QudG9CaWdJbnRMRSA9IChidWY6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgIGFzc2VydEJ1ZihidWYpO1xuICAgICAgcmV0dXJuIGxlKGJ1Zik7XG4gICAgfTtcbiAgaWYgKGJlKVxuICAgIG1vZC50b0JpZ0ludEJFID0gKGJ1ZjogQnVmZmVyIHwgVWludDhBcnJheSkgPT4ge1xuICAgICAgYXNzZXJ0QnVmKGJ1Zik7XG4gICAgICByZXR1cm4gYmUoYnVmKTtcbiAgICB9O1xufSBjYXRjaCB7XG4gIC8qIG5vb3AgKi9cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token2022StaticConfig.d.ts","sourceRoot":"","sources":["../../../../src/config/token2022StaticConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,eAAO,MAAM,yBAAyB,EAAE,eAAe,EA6CtD,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TOKEN_2022_STATIC_CONFIGS = void 0;
|
|
4
|
+
exports.TOKEN_2022_STATIC_CONFIGS = [
|
|
5
|
+
{
|
|
6
|
+
mintAddress: '4MmJVdwYN8LwvbGeCowYjSx7KoEi6BJWg8XXnW4fDDp6',
|
|
7
|
+
transferHook: {
|
|
8
|
+
extraAccountMetas: [
|
|
9
|
+
{
|
|
10
|
+
pubkey: '98wFF5MpMjMQbfDF2MPzo8LCGX37unZR1ohRA1mU9GmJ',
|
|
11
|
+
isSigner: false,
|
|
12
|
+
isWritable: true,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
pubkey: '48n7YGEww7fKMfJ5gJ3sQC3rM6RWGjpUsghqVfXVkR5A',
|
|
16
|
+
isSigner: false,
|
|
17
|
+
isWritable: false,
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
pubkey: '9sQhAH7vV3RKTCK13VY4EiNjs3qBq1srSYxdNufdAAXm',
|
|
21
|
+
isSigner: false,
|
|
22
|
+
isWritable: false,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
mintAddress: '3BW95VLH2za2eUQ1PGfjxwMbpsnDFnmkA7m5LDgMKbX7',
|
|
29
|
+
transferHook: {
|
|
30
|
+
extraAccountMetas: [
|
|
31
|
+
{
|
|
32
|
+
pubkey: 'GbQ8ZiEFzGGTeYoXwtZtcoxwPcMyUcmZDduMVNdUPKpX',
|
|
33
|
+
isSigner: false,
|
|
34
|
+
isWritable: true,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
pubkey: '2Te6MFDwstRP2sZi6DLbkhVcSfaQVffmpbudN6pmvAXo',
|
|
38
|
+
isSigner: false,
|
|
39
|
+
isWritable: false,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
pubkey: 'FR5YBEisx8mDe4ruhWKmpH5nirdJopj4uStBAVufqjMo',
|
|
43
|
+
isSigner: false,
|
|
44
|
+
isWritable: false,
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4yMDIyU3RhdGljQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbmZpZy90b2tlbjIwMjJTdGF0aWNDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSx5QkFBeUIsR0FBc0I7SUFDMUQ7UUFDRSxXQUFXLEVBQUUsOENBQThDO1FBQzNELFlBQVksRUFBRTtZQUNaLGlCQUFpQixFQUFFO2dCQUNqQjtvQkFDRSxNQUFNLEVBQUUsOENBQThDO29CQUN0RCxRQUFRLEVBQUUsS0FBSztvQkFDZixVQUFVLEVBQUUsSUFBSTtpQkFDakI7Z0JBQ0Q7b0JBQ0UsTUFBTSxFQUFFLDhDQUE4QztvQkFDdEQsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCO2dCQUNEO29CQUNFLE1BQU0sRUFBRSw4Q0FBOEM7b0JBQ3RELFFBQVEsRUFBRSxLQUFLO29CQUNmLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjthQUNGO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsV0FBVyxFQUFFLDhDQUE4QztRQUMzRCxZQUFZLEVBQUU7WUFDWixpQkFBaUIsRUFBRTtnQkFDakI7b0JBQ0UsTUFBTSxFQUFFLDhDQUE4QztvQkFDdEQsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO2dCQUNEO29CQUNFLE1BQU0sRUFBRSw4Q0FBOEM7b0JBQ3RELFFBQVEsRUFBRSxLQUFLO29CQUNmLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjtnQkFDRDtvQkFDRSxNQUFNLEVBQUUsOENBQThDO29CQUN0RCxRQUFRLEVBQUUsS0FBSztvQkFDZixVQUFVLEVBQUUsS0FBSztpQkFDbEI7YUFDRjtTQUNGO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUb2tlbjIwMjJDb25maWcgfSBmcm9tICcuLi9saWIvdG9rZW4yMDIyQ29uZmlnJztcblxuZXhwb3J0IGNvbnN0IFRPS0VOXzIwMjJfU1RBVElDX0NPTkZJR1M6IFRva2VuMjAyMkNvbmZpZ1tdID0gW1xuICB7XG4gICAgbWludEFkZHJlc3M6ICc0TW1KVmR3WU44THd2YkdlQ293WWpTeDdLb0VpNkJKV2c4WFhuVzRmRERwNicsXG4gICAgdHJhbnNmZXJIb29rOiB7XG4gICAgICBleHRyYUFjY291bnRNZXRhczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHVia2V5OiAnOTh3RkY1TXBNak1RYmZERjJNUHpvOExDR1gzN3VuWlIxb2hSQTFtVTlHbUonLFxuICAgICAgICAgIGlzU2lnbmVyOiBmYWxzZSxcbiAgICAgICAgICBpc1dyaXRhYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHVia2V5OiAnNDhuN1lHRXd3N2ZLTWZKNWdKM3NRQzNyTTZSV0dqcFVzZ2hxVmZYVmtSNUEnLFxuICAgICAgICAgIGlzU2lnbmVyOiBmYWxzZSxcbiAgICAgICAgICBpc1dyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHB1YmtleTogJzlzUWhBSDd2VjNSS1RDSzEzVlk0RWlOanMzcUJxMXNyU1l4ZE51ZmRBQVhtJyxcbiAgICAgICAgICBpc1NpZ25lcjogZmFsc2UsXG4gICAgICAgICAgaXNXcml0YWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBtaW50QWRkcmVzczogJzNCVzk1VkxIMnphMmVVUTFQR2ZqeHdNYnBzbkRGbm1rQTdtNUxEZ01LYlg3JyxcbiAgICB0cmFuc2Zlckhvb2s6IHtcbiAgICAgIGV4dHJhQWNjb3VudE1ldGFzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwdWJrZXk6ICdHYlE4WmlFRnpHR1RlWW9Yd3RadGNveHdQY015VWNtWkRkdU1WTmRVUEtwWCcsXG4gICAgICAgICAgaXNTaWduZXI6IGZhbHNlLFxuICAgICAgICAgIGlzV3JpdGFibGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwdWJrZXk6ICcyVGU2TUZEd3N0UlAyc1ppNkRMYmtoVmNTZmFRVmZmbXBidWRONnBtdkFYbycsXG4gICAgICAgICAgaXNTaWduZXI6IGZhbHNlLFxuICAgICAgICAgIGlzV3JpdGFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHVia2V5OiAnRlI1WUJFaXN4OG1EZTRydWhXS21wSDVuaXJkSm9wajR1U3RCQVZ1ZnFqTW8nLFxuICAgICAgICAgIGlzU2lnbmVyOiBmYWxzZSxcbiAgICAgICAgICBpc1dyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbl07XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
|
|
@@ -20,4 +20,4 @@ __exportStar(require("./sol"), exports);
|
|
|
20
20
|
__exportStar(require("./solToken"), exports);
|
|
21
21
|
__exportStar(require("./tsol"), exports);
|
|
22
22
|
__exportStar(require("./register"), exports);
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUErQjtBQUMvQix3Q0FBc0I7QUFDdEIsd0NBQXNCO0FBQ3RCLDZDQUEyQjtBQUMzQix5Q0FBdUI7QUFDdkIsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2JpZ2ludC1idWZmZXItZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9zb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9zb2xUb2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3Rzb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ataInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/ataInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAA+C,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAW,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAW3D,qBAAa,wBAAyB,SAAQ,kBAAkB;IAE9D,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,yBAAyB,CAA4B;gBAEjD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAgBlC;;;;;OAKG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAc7B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS1B;;;;;OAKG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAIhD;;;;;;OAMG;IAEH,WAAW,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI;IA6BrD,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAkD5D"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.AtaInitializationBuilder = void 0;
|
|
40
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
41
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
42
|
+
const transaction_1 = require("./transaction");
|
|
43
|
+
const constants_1 = require("./constants");
|
|
44
|
+
const utils_1 = require("./utils");
|
|
45
|
+
const assert_1 = __importDefault(require("assert"));
|
|
46
|
+
const _ = __importStar(require("lodash"));
|
|
47
|
+
class AtaInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
48
|
+
constructor(_coinConfig) {
|
|
49
|
+
super(_coinConfig);
|
|
50
|
+
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
51
|
+
this._tokenAssociateRecipients = [];
|
|
52
|
+
}
|
|
53
|
+
get transactionType() {
|
|
54
|
+
return sdk_core_1.TransactionType.AssociatedTokenAccountInitialization;
|
|
55
|
+
}
|
|
56
|
+
/** @inheritDoc */
|
|
57
|
+
initBuilder(tx) {
|
|
58
|
+
super.initBuilder(tx);
|
|
59
|
+
this._tokenAssociateRecipients = [];
|
|
60
|
+
for (const instruction of this._instructionsData) {
|
|
61
|
+
if (instruction.type === constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount) {
|
|
62
|
+
const ataInitInstruction = instruction;
|
|
63
|
+
this._tokenAssociateRecipients.push({
|
|
64
|
+
ownerAddress: ataInitInstruction.params.ownerAddress,
|
|
65
|
+
tokenName: ataInitInstruction.params.tokenName,
|
|
66
|
+
tokenAddress: ataInitInstruction.params.mintAddress,
|
|
67
|
+
programId: ataInitInstruction.params.programId,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @deprecated - Use the enableToken method instead
|
|
74
|
+
* Sets the mint address of the associated token account
|
|
75
|
+
*
|
|
76
|
+
* @param tokenName name of the token
|
|
77
|
+
*/
|
|
78
|
+
mint(tokenName) {
|
|
79
|
+
if (this._tokenAssociateRecipients.length > 0) {
|
|
80
|
+
throw new sdk_core_1.DuplicateMethodError('Invalid method: enableToken already used');
|
|
81
|
+
}
|
|
82
|
+
const token = (0, utils_1.getSolTokenFromTokenName)(tokenName);
|
|
83
|
+
if (!token) {
|
|
84
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid token name, got: ' + tokenName);
|
|
85
|
+
}
|
|
86
|
+
this._mint = token.tokenAddress;
|
|
87
|
+
this._tokenName = token.name;
|
|
88
|
+
(0, utils_1.validateMintAddress)(this._mint);
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* @deprecated - Use the enableToken method instead
|
|
93
|
+
* Sets the owner address of the associated token account
|
|
94
|
+
*
|
|
95
|
+
* @param owner owner address of associated token account
|
|
96
|
+
*/
|
|
97
|
+
owner(owner) {
|
|
98
|
+
if (this._tokenAssociateRecipients.length > 0) {
|
|
99
|
+
throw new sdk_core_1.DuplicateMethodError('Invalid method: enableToken already used');
|
|
100
|
+
}
|
|
101
|
+
this._owner = owner;
|
|
102
|
+
(0, utils_1.validateOwnerAddress)(owner);
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* @deprecated - Use the associatedTokenAccountRent method instead
|
|
107
|
+
* Used to set the minimum rent exempt amount
|
|
108
|
+
*
|
|
109
|
+
* @param rentExemptAmount minimum rent exempt amount in lamports
|
|
110
|
+
*/
|
|
111
|
+
rentExemptAmount(rentExemptAmount) {
|
|
112
|
+
return super.associatedTokenAccountRent(rentExemptAmount);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Used for adding token association recipients consisting
|
|
116
|
+
* 1. ownerAddress: owner of the token address
|
|
117
|
+
* 2. tokenName: the name of token enabled that is supported by BitGo
|
|
118
|
+
*
|
|
119
|
+
* @param TokenAssociateRecipient token associate recipient info
|
|
120
|
+
*/
|
|
121
|
+
enableToken(recipient) {
|
|
122
|
+
if (this._tokenAssociateRecipients.some((tokenAssociate) => _.isEqual(tokenAssociate, recipient))) {
|
|
123
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid duplicate recipients, got: owner ' +
|
|
124
|
+
recipient.ownerAddress +
|
|
125
|
+
' and tokenName ' +
|
|
126
|
+
recipient.tokenName +
|
|
127
|
+
' twice');
|
|
128
|
+
}
|
|
129
|
+
if (this._tokenName || this._mint) {
|
|
130
|
+
throw new sdk_core_1.DuplicateMethodError('Invalid method: single mint already used');
|
|
131
|
+
}
|
|
132
|
+
(0, utils_1.validateOwnerAddress)(recipient.ownerAddress);
|
|
133
|
+
const token = (0, utils_1.getSolTokenFromTokenName)(recipient.tokenName);
|
|
134
|
+
let tokenAddress;
|
|
135
|
+
if (recipient.tokenAddress) {
|
|
136
|
+
tokenAddress = recipient.tokenAddress;
|
|
137
|
+
}
|
|
138
|
+
else if (token) {
|
|
139
|
+
tokenAddress = token.tokenAddress;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid token name, got: ' + recipient.tokenName);
|
|
143
|
+
}
|
|
144
|
+
(0, utils_1.validateMintAddress)(tokenAddress);
|
|
145
|
+
this._tokenAssociateRecipients.push(recipient);
|
|
146
|
+
return this;
|
|
147
|
+
}
|
|
148
|
+
/** @inheritdoc */
|
|
149
|
+
async buildImplementation() {
|
|
150
|
+
(0, assert_1.default)(this._sender, 'Sender must be set before building the transaction');
|
|
151
|
+
if (this._tokenAssociateRecipients.length === 0) {
|
|
152
|
+
(0, assert_1.default)(this._mint && this._tokenName, 'Mint must be set before building the transaction');
|
|
153
|
+
this._owner = this._owner || this._sender;
|
|
154
|
+
this._tokenAssociateRecipients.push({
|
|
155
|
+
ownerAddress: this._owner,
|
|
156
|
+
tokenName: this._tokenName,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
this._instructionsData = [];
|
|
160
|
+
await Promise.all(this._tokenAssociateRecipients.map(async (recipient) => {
|
|
161
|
+
const token = (0, utils_1.getSolTokenFromTokenName)(recipient.tokenName);
|
|
162
|
+
let tokenAddress;
|
|
163
|
+
let programId;
|
|
164
|
+
if (recipient.tokenAddress && recipient.programId) {
|
|
165
|
+
tokenAddress = recipient.tokenAddress;
|
|
166
|
+
programId = recipient.programId;
|
|
167
|
+
}
|
|
168
|
+
else if (token) {
|
|
169
|
+
tokenAddress = token.tokenAddress;
|
|
170
|
+
programId = token.programId;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid token name, got: ' + recipient.tokenName);
|
|
174
|
+
}
|
|
175
|
+
// Use the provided ataAddress if it exists, otherwise calculate it
|
|
176
|
+
let ataPk = recipient.ataAddress;
|
|
177
|
+
if (!ataPk) {
|
|
178
|
+
ataPk = await (0, utils_1.getAssociatedTokenAccountAddress)(tokenAddress, recipient.ownerAddress, false, programId);
|
|
179
|
+
}
|
|
180
|
+
this._instructionsData.push({
|
|
181
|
+
type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
|
|
182
|
+
params: {
|
|
183
|
+
mintAddress: tokenAddress,
|
|
184
|
+
ataAddress: ataPk,
|
|
185
|
+
ownerAddress: recipient.ownerAddress,
|
|
186
|
+
payerAddress: this._sender,
|
|
187
|
+
tokenName: recipient.tokenName,
|
|
188
|
+
programId: programId,
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
}));
|
|
192
|
+
return await super.buildImplementation();
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.AtaInitializationBuilder = AtaInitializationBuilder;
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQTBEO0FBQzFELG1EQUFvRztBQUVwRywrQ0FBNEM7QUFFNUMsMkNBQXNEO0FBQ3RELG1DQUtpQjtBQUNqQixvREFBNEI7QUFDNUIsMENBQTRCO0FBRTVCLE1BQWEsd0JBQXlCLFNBQVEsdUNBQWtCO0lBUzlELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsb0NBQW9DLENBQUM7SUFDOUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXLENBQUMsRUFBZTtRQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7UUFDcEMsS0FBSyxNQUFNLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssbUNBQXVCLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztnQkFDOUUsTUFBTSxrQkFBa0IsR0FBWSxXQUFXLENBQUM7Z0JBQ2hELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUM7b0JBQ2xDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsWUFBWTtvQkFDcEQsU0FBUyxFQUFFLGtCQUFrQixDQUFDLE1BQU0s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QyxZQUFZLENBQUM7Z0JBQ2xDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzlCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksZ0NBQXFCLENBQUMsZ0RBQWdELEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFHLENBQUM7WUFFRCxtRUFBbUU7WUFDbkUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxHQUFHLE1BQU0sSUFBQSx3Q0FBZ0MsRUFBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDekcsQ0FBQztZQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLElBQUksRUFBRSxtQ0FBdUIsQ0FBQyw0QkFBNEI7Z0JBQzFELE1BQU0sRUFBRTtvQkFDTixXQUFXLEVBQUUsWUFBWTtvQkFDekIsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtvQkFDcEMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUMxQixTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7b0JBQzlCLFNBQVMsRUFBRSxTQUFTO2lCQUNyQjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPLE1BQU0sS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDM0MsQ0FBQztDQUNGO0FBektELDREQXlLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgRHVwbGljYXRlTWV0aG9kRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBBdGFJbml0LCBUb2tlbkFzc29jaWF0ZVJlY2lwaWVudCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyxcbiAgZ2V0U29sVG9rZW5Gcm9tVG9rZW5OYW1lLFxuICB2YWxpZGF0ZU1pbnRBZGRyZXNzLFxuICB2YWxpZGF0ZU93bmVyQWRkcmVzcyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjbGFzcyBBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAvLyBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgX3Rva2VuQXNzb2NpYXRlUmVjaXBpZW50cyBmaWVsZCBpbnN0ZWFkXG4gIHByaXZhdGUgX3Rva2VuTmFtZTogc3RyaW5nO1xuICAvLyBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgX3Rva2VuQXNzb2NpYXRlUmVjaXBpZW50cyBmaWVsZCBpbnN0ZWFkXG4gIHByaXZhdGUgX21pbnQ6IHN0cmluZztcbiAgLy8gQGRlcHJlY2F0ZWQgLSBVc2UgdGhlIF90b2tlbkFzc29jaWF0ZVJlY2lwaWVudHMgZmllbGQgaW5zdGVhZFxuICBwcml2YXRlIF9vd25lcjogc3RyaW5nO1xuICBwcml2YXRlIF90b2tlbkFzc29jaWF0ZVJlY2lwaWVudHM6IFRva2VuQXNzb2NpYXRlUmVjaXBpZW50W107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90b2tlbkFzc29jaWF0ZVJlY2lwaWVudHMgPSBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5Bc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb247XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMuX3Rva2VuQXNzb2NpYXRlUmVjaXBpZW50cyA9IFtdO1xuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSkge1xuICAgICAgaWYgKGluc3RydWN0aW9uLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQpIHtcbiAgICAgICAgY29uc3QgYXRhSW5pdEluc3RydWN0aW9uOiBBdGFJbml0ID0gaW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMuX3Rva2VuQXNzb2NpYXRlUmVjaXBpZW50cy5wdXNoKHtcbiAgICAgICAgICBvd25lckFkZHJlc3M6IGF0YUluaXRJbnN0cnVjdGlvbi5wYXJhbXMub3duZXJBZGRyZXNzLFxuICAgICAgICAgIHRva2VuTmFtZTogYXRhSW5pdEluc3RydWN0aW9uLnBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgICAgdG9rZW5BZGRyZXNzOiBhdGFJbml0SW5zdHJ1Y3Rpb24ucGFyYW1zLm1pbnRBZGRyZXNzLFxuICAgICAgICAgIHByb2dyYW1JZDogYXRhSW5pdEluc3RydWN0aW9uLnBhcmFtcy5wcm9ncmFtSWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgZW5hYmxlVG9rZW4gbWV0aG9kIGluc3RlYWRcbiAgICogU2V0cyB0aGUgbWludCBhZGRyZXNzIG9mIHRoZSBhc3NvY2lhdGVkIHRva2VuIGFjY291bnRcbiAgICpcbiAgICogQHBhcmFtIHRva2VuTmFtZSBuYW1lIG9mIHRoZSB0b2tlblxuICAgKi9cbiAgbWludCh0b2tlbk5hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICh0aGlzLl90b2tlbkFzc29jaWF0ZVJlY2lwaWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZU1ldGhvZEVycm9yKCdJbnZhbGlkIG1ldGhvZDogZW5hYmxlVG9rZW4gYWxyZWFkeSB1c2VkJyk7XG4gICAgfVxuICAgIGNvbnN0IHRva2VuID0gZ2V0U29sVG9rZW5Gcm9tVG9rZW5OYW1lKHRva2VuTmFtZSk7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogaW52YWxpZCB0b2tlbiBuYW1lLCBnb3Q6ICcgKyB0b2tlbk5hbWUpO1xuICAgIH1cbiAgICB0aGlzLl9taW50ID0gdG9rZW4udG9rZW5BZGRyZXNzO1xuICAgIHRoaXMuX3Rva2VuTmFtZSA9IHRva2VuLm5hbWU7XG4gICAgdmFsaWRhdGVNaW50QWRkcmVzcyh0aGlzLl9taW50KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgZW5hYmxlVG9rZW4gbWV0aG9kIGluc3RlYWRcbiAgICogU2V0cyB0aGUgb3duZXIgYWRkcmVzcyBvZiB0aGUgYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50XG4gICAqXG4gICAqIEBwYXJhbSBvd25lciBvd25lciBhZGRyZXNzIG9mIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudFxuICAgKi9cbiAgb3duZXIob3duZXI6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICh0aGlzLl90b2tlbkFzc29jaWF0ZVJlY2lwaWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZU1ldGhvZEVycm9yKCdJbnZhbGlkIG1ldGhvZDogZW5hYmxlVG9rZW4gYWxyZWFkeSB1c2VkJyk7XG4gICAgfVxuICAgIHRoaXMuX293bmVyID0gb3duZXI7XG4gICAgdmFsaWRhdGVPd25lckFkZHJlc3Mob3duZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIC0gVXNlIHRoZSBhc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCBtZXRob2QgaW5zdGVhZFxuICAgKiBVc2VkIHRvIHNldCB0aGUgbWluaW11bSByZW50IGV4ZW1wdCBhbW91bnRcbiAgICpcbiAgICogQHBhcmFtIHJlbnRFeGVtcHRBbW91bnQgbWluaW11bSByZW50IGV4ZW1wdCBhbW91bnQgaW4gbGFtcG9ydHNcbiAgICovXG4gIHJlbnRFeGVtcHRBbW91bnQocmVudEV4ZW1wdEFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgcmV0dXJuIHN1cGVyLmFzc29jaWF0ZWRUb2tlbkFjY291bnRSZW50KHJlbnRFeGVtcHRBbW91bnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgZm9yIGFkZGluZyB0b2tlbiBhc3NvY2lhdGlvbiByZWNpcGllbnRzIGNvbnNpc3RpbmdcbiAgICogIDEuIG93bmVyQWRkcmVzczogb3duZXIgb2YgdGhlIHRva2VuIGFkZHJlc3NcbiAgICogIDIuIHRva2VuTmFtZTogdGhlIG5hbWUgb2YgdG9rZW4gZW5hYmxlZCB0aGF0IGlzIHN1cHBvcnRlZCBieSBCaXRHb1xuICAgKlxuICAgKiAgQHBhcmFtIFRva2VuQXNzb2NpYXRlUmVjaXBpZW50IHRva2VuIGFzc29jaWF0ZSByZWNpcGllbnQgaW5mb1xuICAgKi9cblxuICBlbmFibGVUb2tlbihyZWNpcGllbnQ6IFRva2VuQXNzb2NpYXRlUmVjaXBpZW50KTogdGhpcyB7XG4gICAgaWYgKHRoaXMuX3Rva2VuQXNzb2NpYXRlUmVjaXBpZW50cy5zb21lKCh0b2tlbkFzc29jaWF0ZSkgPT4gXy5pc0VxdWFsKHRva2VuQXNzb2NpYXRlLCByZWNpcGllbnQpKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgZHVwbGljYXRlIHJlY2lwaWVudHMsIGdvdDogb3duZXIgJyArXG4gICAgICAgICAgcmVjaXBpZW50Lm93bmVyQWRkcmVzcyArXG4gICAgICAgICAgJyBhbmQgdG9rZW5OYW1lICcgK1xuICAgICAgICAgIHJlY2lwaWVudC50b2tlbk5hbWUgK1xuICAgICAgICAgICcgdHdpY2UnXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdG9rZW5OYW1lIHx8IHRoaXMuX21pbnQpIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVNZXRob2RFcnJvcignSW52YWxpZCBtZXRob2Q6IHNpbmdsZSBtaW50IGFscmVhZHkgdXNlZCcpO1xuICAgIH1cbiAgICB2YWxpZGF0ZU93bmVyQWRkcmVzcyhyZWNpcGllbnQub3duZXJBZGRyZXNzKTtcbiAgICBjb25zdCB0b2tlbiA9IGdldFNvbFRva2VuRnJvbVRva2VuTmFtZShyZWNpcGllbnQudG9rZW5OYW1lKTtcbiAgICBsZXQgdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG4gICAgaWYgKHJlY2lwaWVudC50b2tlbkFkZHJlc3MpIHtcbiAgICAgIHRva2VuQWRkcmVzcyA9IHJlY2lwaWVudC50b2tlbkFkZHJlc3M7XG4gICAgfSBlbHNlIGlmICh0b2tlbikge1xuICAgICAgdG9rZW5BZGRyZXNzID0gdG9rZW4udG9rZW5BZGRyZXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBpbnZhbGlkIHRva2VuIG5hbWUsIGdvdDogJyArIHJlY2lwaWVudC50b2tlbk5hbWUpO1xuICAgIH1cbiAgICB2YWxpZGF0ZU1pbnRBZGRyZXNzKHRva2VuQWRkcmVzcyk7XG5cbiAgICB0aGlzLl90b2tlbkFzc29jaWF0ZVJlY2lwaWVudHMucHVzaChyZWNpcGllbnQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCAnU2VuZGVyIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICBpZiAodGhpcy5fdG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYXNzZXJ0KHRoaXMuX21pbnQgJiYgdGhpcy5fdG9rZW5OYW1lLCAnTWludCBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgICB0aGlzLl9vd25lciA9IHRoaXMuX293bmVyIHx8IHRoaXMuX3NlbmRlcjtcblxuICAgICAgdGhpcy5fdG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRzLnB1c2goe1xuICAgICAgICBvd25lckFkZHJlc3M6IHRoaXMuX293bmVyLFxuICAgICAgICB0b2tlbk5hbWU6IHRoaXMuX3Rva2VuTmFtZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEgPSBbXTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMuX3Rva2VuQXNzb2NpYXRlUmVjaXBpZW50cy5tYXAoYXN5bmMgKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICBjb25zdCB0b2tlbiA9IGdldFNvbFRva2VuRnJvbVRva2VuTmFtZShyZWNpcGllbnQudG9rZW5OYW1lKTtcbiAgICAgICAgbGV0IHRva2VuQWRkcmVzczogc3RyaW5nO1xuICAgICAgICBsZXQgcHJvZ3JhbUlkOiBzdHJpbmc7XG4gICAgICAgIGlmIChyZWNpcGllbnQudG9rZW5BZGRyZXNzICYmIHJlY2lwaWVudC5wcm9ncmFtSWQpIHtcbiAgICAgICAgICB0b2tlbkFkZHJlc3MgPSByZWNpcGllbnQudG9rZW5BZGRyZXNzO1xuICAgICAgICAgIHByb2dyYW1JZCA9IHJlY2lwaWVudC5wcm9ncmFtSWQ7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW4pIHtcbiAgICAgICAgICB0b2tlbkFkZHJlc3MgPSB0b2tlbi50b2tlbkFkZHJlc3M7XG4gICAgICAgICAgcHJvZ3JhbUlkID0gdG9rZW4ucHJvZ3JhbUlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgdG9rZW4gbmFtZSwgZ290OiAnICsgcmVjaXBpZW50LnRva2VuTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgdGhlIHByb3ZpZGVkIGF0YUFkZHJlc3MgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgY2FsY3VsYXRlIGl0XG4gICAgICAgIGxldCBhdGFQayA9IHJlY2lwaWVudC5hdGFBZGRyZXNzO1xuICAgICAgICBpZiAoIWF0YVBrKSB7XG4gICAgICAgICAgYXRhUGsgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyh0b2tlbkFkZHJlc3MsIHJlY2lwaWVudC5vd25lckFkZHJlc3MsIGZhbHNlLCBwcm9ncmFtSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YS5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50LFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgbWludEFkZHJlc3M6IHRva2VuQWRkcmVzcyxcbiAgICAgICAgICAgIGF0YUFkZHJlc3M6IGF0YVBrLFxuICAgICAgICAgICAgb3duZXJBZGRyZXNzOiByZWNpcGllbnQub3duZXJBZGRyZXNzLFxuICAgICAgICAgICAgcGF5ZXJBZGRyZXNzOiB0aGlzLl9zZW5kZXIsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHJlY2lwaWVudC50b2tlbk5hbWUsXG4gICAgICAgICAgICBwcm9ncmFtSWQ6IHByb2dyYW1JZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
+
export declare class CloseAtaBuilder extends TransactionBuilder {
|
|
6
|
+
protected _closeAtaEntries: {
|
|
7
|
+
accountAddress: string;
|
|
8
|
+
destinationAddress: string;
|
|
9
|
+
authorityAddress: string;
|
|
10
|
+
}[];
|
|
11
|
+
private _apiMode;
|
|
12
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
13
|
+
protected get transactionType(): TransactionType;
|
|
14
|
+
/**
|
|
15
|
+
* Sets the ATA account address to close (single-ATA API, backward compatible).
|
|
16
|
+
* Cannot be mixed with addCloseAtaInstruction().
|
|
17
|
+
*/
|
|
18
|
+
accountAddress(accountAddress: string): this;
|
|
19
|
+
/**
|
|
20
|
+
* Sets the destination address for rent SOL (single-ATA API, backward compatible).
|
|
21
|
+
* Cannot be mixed with addCloseAtaInstruction().
|
|
22
|
+
*/
|
|
23
|
+
destinationAddress(destinationAddress: string): this;
|
|
24
|
+
/**
|
|
25
|
+
* Sets the authority address / ATA owner (single-ATA API, backward compatible).
|
|
26
|
+
* Cannot be mixed with addCloseAtaInstruction().
|
|
27
|
+
*/
|
|
28
|
+
authorityAddress(authorityAddress: string): this;
|
|
29
|
+
/**
|
|
30
|
+
* Throws if the bulk-ATA API has already been used on this builder.
|
|
31
|
+
*/
|
|
32
|
+
private _assertSingleAtaApiUsable;
|
|
33
|
+
/**
|
|
34
|
+
* Ensures a single entry exists in _closeAtaEntries for the legacy API.
|
|
35
|
+
*/
|
|
36
|
+
private _ensureSingleEntry;
|
|
37
|
+
/**
|
|
38
|
+
* Add an ATA to close in this transaction (for bulk closure).
|
|
39
|
+
* Cannot be mixed with the single-ATA API (accountAddress/destinationAddress/authorityAddress).
|
|
40
|
+
*
|
|
41
|
+
* @param {string} accountAddress - the ATA address to close
|
|
42
|
+
* @param {string} destinationAddress - where rent SOL goes (root wallet address)
|
|
43
|
+
* @param {string} authorityAddress - ATA owner who must sign
|
|
44
|
+
*/
|
|
45
|
+
addCloseAtaInstruction(accountAddress: string, destinationAddress: string, authorityAddress: string): this;
|
|
46
|
+
/** @inheritDoc */
|
|
47
|
+
initBuilder(tx: Transaction): void;
|
|
48
|
+
/** @inheritdoc */
|
|
49
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=closeAtaBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"closeAtaBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/closeAtaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAI7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,qBAAa,eAAgB,SAAQ,kBAAkB;IAErD,SAAS,CAAC,gBAAgB,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAM;IAOpH,OAAO,CAAC,QAAQ,CAA0C;gBAE9C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAS5C;;;OAGG;IACH,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI;IASpD;;;OAGG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAShD;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAMjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;;;;OAOG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAsB1G,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAiBlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CA0B5D"}
|
|
@@ -0,0 +1,147 @@
|
|
|
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.CloseAtaBuilder = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const assert_1 = __importDefault(require("assert"));
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const transaction_1 = require("./transaction");
|
|
11
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
12
|
+
const utils_1 = require("./utils");
|
|
13
|
+
const MIX_API_ERROR_MESSAGE = 'Cannot mix single-ATA API (accountAddress/destinationAddress/authorityAddress) with bulk-ATA API (addCloseAtaInstruction)';
|
|
14
|
+
class CloseAtaBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
15
|
+
constructor(_coinConfig) {
|
|
16
|
+
super(_coinConfig);
|
|
17
|
+
// Unified storage for all close entries (single or bulk)
|
|
18
|
+
this._closeAtaEntries = [];
|
|
19
|
+
// Which API has been used on this builder instance. Locks in on first call so we can
|
|
20
|
+
// reject attempts to mix the legacy single-ATA setters with the bulk addCloseAtaInstruction().
|
|
21
|
+
// After initBuilder(): remains undefined for a single parsed close (either API may extend/edit);
|
|
22
|
+
// set to 'bulk' when the parsed tx had multiple closes so legacy setters cannot partially
|
|
23
|
+
// overwrite entry[0] while leaving other parsed entries in place.
|
|
24
|
+
this._apiMode = undefined;
|
|
25
|
+
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
26
|
+
}
|
|
27
|
+
get transactionType() {
|
|
28
|
+
return sdk_core_1.TransactionType.CloseAssociatedTokenAccount;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Sets the ATA account address to close (single-ATA API, backward compatible).
|
|
32
|
+
* Cannot be mixed with addCloseAtaInstruction().
|
|
33
|
+
*/
|
|
34
|
+
accountAddress(accountAddress) {
|
|
35
|
+
this._assertSingleAtaApiUsable();
|
|
36
|
+
(0, utils_1.validateAddress)(accountAddress, 'accountAddress');
|
|
37
|
+
this._apiMode = 'single';
|
|
38
|
+
this._ensureSingleEntry();
|
|
39
|
+
this._closeAtaEntries[0].accountAddress = accountAddress;
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Sets the destination address for rent SOL (single-ATA API, backward compatible).
|
|
44
|
+
* Cannot be mixed with addCloseAtaInstruction().
|
|
45
|
+
*/
|
|
46
|
+
destinationAddress(destinationAddress) {
|
|
47
|
+
this._assertSingleAtaApiUsable();
|
|
48
|
+
(0, utils_1.validateAddress)(destinationAddress, 'destinationAddress');
|
|
49
|
+
this._apiMode = 'single';
|
|
50
|
+
this._ensureSingleEntry();
|
|
51
|
+
this._closeAtaEntries[0].destinationAddress = destinationAddress;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Sets the authority address / ATA owner (single-ATA API, backward compatible).
|
|
56
|
+
* Cannot be mixed with addCloseAtaInstruction().
|
|
57
|
+
*/
|
|
58
|
+
authorityAddress(authorityAddress) {
|
|
59
|
+
this._assertSingleAtaApiUsable();
|
|
60
|
+
(0, utils_1.validateAddress)(authorityAddress, 'authorityAddress');
|
|
61
|
+
this._apiMode = 'single';
|
|
62
|
+
this._ensureSingleEntry();
|
|
63
|
+
this._closeAtaEntries[0].authorityAddress = authorityAddress;
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Throws if the bulk-ATA API has already been used on this builder.
|
|
68
|
+
*/
|
|
69
|
+
_assertSingleAtaApiUsable() {
|
|
70
|
+
if (this._apiMode === 'bulk') {
|
|
71
|
+
throw new sdk_core_1.BuildTransactionError(MIX_API_ERROR_MESSAGE);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Ensures a single entry exists in _closeAtaEntries for the legacy API.
|
|
76
|
+
*/
|
|
77
|
+
_ensureSingleEntry() {
|
|
78
|
+
if (this._closeAtaEntries.length === 0) {
|
|
79
|
+
this._closeAtaEntries.push({ accountAddress: '', destinationAddress: '', authorityAddress: '' });
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Add an ATA to close in this transaction (for bulk closure).
|
|
84
|
+
* Cannot be mixed with the single-ATA API (accountAddress/destinationAddress/authorityAddress).
|
|
85
|
+
*
|
|
86
|
+
* @param {string} accountAddress - the ATA address to close
|
|
87
|
+
* @param {string} destinationAddress - where rent SOL goes (root wallet address)
|
|
88
|
+
* @param {string} authorityAddress - ATA owner who must sign
|
|
89
|
+
*/
|
|
90
|
+
addCloseAtaInstruction(accountAddress, destinationAddress, authorityAddress) {
|
|
91
|
+
if (this._apiMode === 'single') {
|
|
92
|
+
throw new sdk_core_1.BuildTransactionError(MIX_API_ERROR_MESSAGE);
|
|
93
|
+
}
|
|
94
|
+
(0, utils_1.validateAddress)(accountAddress, 'accountAddress');
|
|
95
|
+
(0, utils_1.validateAddress)(destinationAddress, 'destinationAddress');
|
|
96
|
+
(0, utils_1.validateAddress)(authorityAddress, 'authorityAddress');
|
|
97
|
+
if (accountAddress === destinationAddress) {
|
|
98
|
+
throw new sdk_core_1.BuildTransactionError('Account address to close cannot be the same as the destination address');
|
|
99
|
+
}
|
|
100
|
+
if (this._closeAtaEntries.some((entry) => entry.accountAddress === accountAddress)) {
|
|
101
|
+
throw new sdk_core_1.BuildTransactionError('Duplicate ATA address: ' + accountAddress);
|
|
102
|
+
}
|
|
103
|
+
this._apiMode = 'bulk';
|
|
104
|
+
this._closeAtaEntries.push({ accountAddress, destinationAddress, authorityAddress });
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
/** @inheritDoc */
|
|
108
|
+
initBuilder(tx) {
|
|
109
|
+
super.initBuilder(tx);
|
|
110
|
+
for (const instruction of this._instructionsData) {
|
|
111
|
+
if (instruction.type === constants_1.InstructionBuilderTypes.CloseAssociatedTokenAccount) {
|
|
112
|
+
const ataCloseInstruction = instruction;
|
|
113
|
+
this._closeAtaEntries.push({
|
|
114
|
+
accountAddress: ataCloseInstruction.params.accountAddress,
|
|
115
|
+
destinationAddress: ataCloseInstruction.params.destinationAddress,
|
|
116
|
+
authorityAddress: ataCloseInstruction.params.authorityAddress,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (this._closeAtaEntries.length > 1) {
|
|
121
|
+
this._apiMode = 'bulk';
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** @inheritdoc */
|
|
125
|
+
async buildImplementation() {
|
|
126
|
+
(0, assert_1.default)(this._closeAtaEntries.length > 0, 'At least one ATA must be specified before building the transaction');
|
|
127
|
+
for (const entry of this._closeAtaEntries) {
|
|
128
|
+
(0, assert_1.default)(entry.accountAddress, 'Account Address must be set before building the transaction');
|
|
129
|
+
(0, assert_1.default)(entry.destinationAddress, 'Destination Address must be set before building the transaction');
|
|
130
|
+
(0, assert_1.default)(entry.authorityAddress, 'Authority Address must be set before building the transaction');
|
|
131
|
+
if (entry.accountAddress === entry.destinationAddress) {
|
|
132
|
+
throw new sdk_core_1.BuildTransactionError('Account address to close cannot be the same as the destination address');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
this._instructionsData = this._closeAtaEntries.map((entry) => ({
|
|
136
|
+
type: constants_1.InstructionBuilderTypes.CloseAssociatedTokenAccount,
|
|
137
|
+
params: {
|
|
138
|
+
accountAddress: entry.accountAddress,
|
|
139
|
+
destinationAddress: entry.destinationAddress,
|
|
140
|
+
authorityAddress: entry.authorityAddress,
|
|
141
|
+
},
|
|
142
|
+
}));
|
|
143
|
+
return await super.buildImplementation();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.CloseAtaBuilder = CloseAtaBuilder;
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2VBdGFCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jbG9zZUF0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQThFO0FBRTlFLG9EQUE0QjtBQUM1QiwyQ0FBc0Q7QUFFdEQsK0NBQTRDO0FBQzVDLDZEQUEwRDtBQUMxRCxtQ0FBMEM7QUFJMUMsTUFBTSxxQkFBcUIsR0FDekIsMkhBQTJILENBQUM7QUFFOUgsTUFBYSxlQUFnQixTQUFRLHVDQUFrQjtJQVdyRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVhyQix5REFBeUQ7UUFDL0MscUJBQWdCLEdBQXVGLEVBQUUsQ0FBQztRQUVwSCxxRkFBcUY7UUFDckYsK0ZBQStGO1FBQy9GLGlHQUFpRztRQUNqRywwRkFBMEY7UUFDMUYsa0VBQWtFO1FBQzFELGFBQVEsR0FBZ0MsU0FBUyxDQUFDO1FBSXhELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLDJCQUEyQixDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsY0FBc0I7UUFDbkMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBQSx1QkFBZSxFQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQixDQUFDLGtCQUEwQjtRQUMzQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqQyxJQUFBLHVCQUFlLEVBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsZ0JBQXdCO1FBQ3ZDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUEsdUJBQWUsRUFBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNLLHlCQUF5QjtRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkcsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsc0JBQXNCLENBQUMsY0FBc0IsRUFBRSxrQkFBMEIsRUFBRSxnQkFBd0I7UUFDakcsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxJQUFBLHVCQUFlLEVBQUMsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDbEQsSUFBQSx1QkFBZSxFQUFDLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDMUQsSUFBQSx1QkFBZSxFQUFDLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFdEQsSUFBSSxjQUFjLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsd0VBQXdFLENBQUMsQ0FBQztRQUM1RyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxLQUFLLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDbkYsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHlCQUF5QixHQUFHLGNBQWMsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUNyRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxtQ0FBdUIsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO2dCQUM3RSxNQUFNLG1CQUFtQixHQUFhLFdBQVcsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDekIsY0FBYyxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxjQUFjO29CQUN6RCxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsa0JBQWtCO29CQUNqRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO2lCQUM5RCxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBQSxnQkFBTSxFQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLG9FQUFvRSxDQUFDLENBQUM7UUFFL0csS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQyxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSw2REFBNkQsQ0FBQyxDQUFDO1lBQzVGLElBQUEsZ0JBQU0sRUFBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsaUVBQWlFLENBQUMsQ0FBQztZQUNwRyxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLCtEQUErRCxDQUFDLENBQUM7WUFFaEcsSUFBSSxLQUFLLENBQUMsY0FBYyxLQUFLLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUN0RCxNQUFNLElBQUksZ0NBQXFCLENBQUMsd0VBQXdFLENBQUMsQ0FBQztZQUM1RyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUNoRCxDQUFDLEtBQUssRUFBWSxFQUFFLENBQUMsQ0FBQztZQUNwQixJQUFJLEVBQUUsbUNBQXVCLENBQUMsMkJBQTJCO1lBQ3pELE1BQU0sRUFBRTtnQkFDTixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7Z0JBQ3BDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7Z0JBQzVDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7YUFDekM7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUVGLE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUF4SkQsMENBd0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEF0YUNsb3NlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgdmFsaWRhdGVBZGRyZXNzIH0gZnJvbSAnLi91dGlscyc7XG5cbnR5cGUgQ2xvc2VBdGFBcGlNb2RlID0gJ3NpbmdsZScgfCAnYnVsayc7XG5cbmNvbnN0IE1JWF9BUElfRVJST1JfTUVTU0FHRSA9XG4gICdDYW5ub3QgbWl4IHNpbmdsZS1BVEEgQVBJIChhY2NvdW50QWRkcmVzcy9kZXN0aW5hdGlvbkFkZHJlc3MvYXV0aG9yaXR5QWRkcmVzcykgd2l0aCBidWxrLUFUQSBBUEkgKGFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24pJztcblxuZXhwb3J0IGNsYXNzIENsb3NlQXRhQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8vIFVuaWZpZWQgc3RvcmFnZSBmb3IgYWxsIGNsb3NlIGVudHJpZXMgKHNpbmdsZSBvciBidWxrKVxuICBwcm90ZWN0ZWQgX2Nsb3NlQXRhRW50cmllczogeyBhY2NvdW50QWRkcmVzczogc3RyaW5nOyBkZXN0aW5hdGlvbkFkZHJlc3M6IHN0cmluZzsgYXV0aG9yaXR5QWRkcmVzczogc3RyaW5nIH1bXSA9IFtdO1xuXG4gIC8vIFdoaWNoIEFQSSBoYXMgYmVlbiB1c2VkIG9uIHRoaXMgYnVpbGRlciBpbnN0YW5jZS4gTG9ja3MgaW4gb24gZmlyc3QgY2FsbCBzbyB3ZSBjYW5cbiAgLy8gcmVqZWN0IGF0dGVtcHRzIHRvIG1peCB0aGUgbGVnYWN5IHNpbmdsZS1BVEEgc2V0dGVycyB3aXRoIHRoZSBidWxrIGFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oKS5cbiAgLy8gQWZ0ZXIgaW5pdEJ1aWxkZXIoKTogcmVtYWlucyB1bmRlZmluZWQgZm9yIGEgc2luZ2xlIHBhcnNlZCBjbG9zZSAoZWl0aGVyIEFQSSBtYXkgZXh0ZW5kL2VkaXQpO1xuICAvLyBzZXQgdG8gJ2J1bGsnIHdoZW4gdGhlIHBhcnNlZCB0eCBoYWQgbXVsdGlwbGUgY2xvc2VzIHNvIGxlZ2FjeSBzZXR0ZXJzIGNhbm5vdCBwYXJ0aWFsbHlcbiAgLy8gb3ZlcndyaXRlIGVudHJ5WzBdIHdoaWxlIGxlYXZpbmcgb3RoZXIgcGFyc2VkIGVudHJpZXMgaW4gcGxhY2UuXG4gIHByaXZhdGUgX2FwaU1vZGU6IENsb3NlQXRhQXBpTW9kZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBBVEEgYWNjb3VudCBhZGRyZXNzIHRvIGNsb3NlIChzaW5nbGUtQVRBIEFQSSwgYmFja3dhcmQgY29tcGF0aWJsZSkuXG4gICAqIENhbm5vdCBiZSBtaXhlZCB3aXRoIGFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oKS5cbiAgICovXG4gIGFjY291bnRBZGRyZXNzKGFjY291bnRBZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9hc3NlcnRTaW5nbGVBdGFBcGlVc2FibGUoKTtcbiAgICB2YWxpZGF0ZUFkZHJlc3MoYWNjb3VudEFkZHJlc3MsICdhY2NvdW50QWRkcmVzcycpO1xuICAgIHRoaXMuX2FwaU1vZGUgPSAnc2luZ2xlJztcbiAgICB0aGlzLl9lbnN1cmVTaW5nbGVFbnRyeSgpO1xuICAgIHRoaXMuX2Nsb3NlQXRhRW50cmllc1swXS5hY2NvdW50QWRkcmVzcyA9IGFjY291bnRBZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIHJlbnQgU09MIChzaW5nbGUtQVRBIEFQSSwgYmFja3dhcmQgY29tcGF0aWJsZSkuXG4gICAqIENhbm5vdCBiZSBtaXhlZCB3aXRoIGFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oKS5cbiAgICovXG4gIGRlc3RpbmF0aW9uQWRkcmVzcyhkZXN0aW5hdGlvbkFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX2Fzc2VydFNpbmdsZUF0YUFwaVVzYWJsZSgpO1xuICAgIHZhbGlkYXRlQWRkcmVzcyhkZXN0aW5hdGlvbkFkZHJlc3MsICdkZXN0aW5hdGlvbkFkZHJlc3MnKTtcbiAgICB0aGlzLl9hcGlNb2RlID0gJ3NpbmdsZSc7XG4gICAgdGhpcy5fZW5zdXJlU2luZ2xlRW50cnkoKTtcbiAgICB0aGlzLl9jbG9zZUF0YUVudHJpZXNbMF0uZGVzdGluYXRpb25BZGRyZXNzID0gZGVzdGluYXRpb25BZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGF1dGhvcml0eSBhZGRyZXNzIC8gQVRBIG93bmVyIChzaW5nbGUtQVRBIEFQSSwgYmFja3dhcmQgY29tcGF0aWJsZSkuXG4gICAqIENhbm5vdCBiZSBtaXhlZCB3aXRoIGFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oKS5cbiAgICovXG4gIGF1dGhvcml0eUFkZHJlc3MoYXV0aG9yaXR5QWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fYXNzZXJ0U2luZ2xlQXRhQXBpVXNhYmxlKCk7XG4gICAgdmFsaWRhdGVBZGRyZXNzKGF1dGhvcml0eUFkZHJlc3MsICdhdXRob3JpdHlBZGRyZXNzJyk7XG4gICAgdGhpcy5fYXBpTW9kZSA9ICdzaW5nbGUnO1xuICAgIHRoaXMuX2Vuc3VyZVNpbmdsZUVudHJ5KCk7XG4gICAgdGhpcy5fY2xvc2VBdGFFbnRyaWVzWzBdLmF1dGhvcml0eUFkZHJlc3MgPSBhdXRob3JpdHlBZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93cyBpZiB0aGUgYnVsay1BVEEgQVBJIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBvbiB0aGlzIGJ1aWxkZXIuXG4gICAqL1xuICBwcml2YXRlIF9hc3NlcnRTaW5nbGVBdGFBcGlVc2FibGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2FwaU1vZGUgPT09ICdidWxrJykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihNSVhfQVBJX0VSUk9SX01FU1NBR0UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIGEgc2luZ2xlIGVudHJ5IGV4aXN0cyBpbiBfY2xvc2VBdGFFbnRyaWVzIGZvciB0aGUgbGVnYWN5IEFQSS5cbiAgICovXG4gIHByaXZhdGUgX2Vuc3VyZVNpbmdsZUVudHJ5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jbG9zZUF0YUVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9jbG9zZUF0YUVudHJpZXMucHVzaCh7IGFjY291bnRBZGRyZXNzOiAnJywgZGVzdGluYXRpb25BZGRyZXNzOiAnJywgYXV0aG9yaXR5QWRkcmVzczogJycgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBBVEEgdG8gY2xvc2UgaW4gdGhpcyB0cmFuc2FjdGlvbiAoZm9yIGJ1bGsgY2xvc3VyZSkuXG4gICAqIENhbm5vdCBiZSBtaXhlZCB3aXRoIHRoZSBzaW5nbGUtQVRBIEFQSSAoYWNjb3VudEFkZHJlc3MvZGVzdGluYXRpb25BZGRyZXNzL2F1dGhvcml0eUFkZHJlc3MpLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWNjb3VudEFkZHJlc3MgLSB0aGUgQVRBIGFkZHJlc3MgdG8gY2xvc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRlc3RpbmF0aW9uQWRkcmVzcyAtIHdoZXJlIHJlbnQgU09MIGdvZXMgKHJvb3Qgd2FsbGV0IGFkZHJlc3MpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhdXRob3JpdHlBZGRyZXNzIC0gQVRBIG93bmVyIHdobyBtdXN0IHNpZ25cbiAgICovXG4gIGFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYWNjb3VudEFkZHJlc3M6IHN0cmluZywgZGVzdGluYXRpb25BZGRyZXNzOiBzdHJpbmcsIGF1dGhvcml0eUFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICh0aGlzLl9hcGlNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihNSVhfQVBJX0VSUk9SX01FU1NBR0UpO1xuICAgIH1cblxuICAgIHZhbGlkYXRlQWRkcmVzcyhhY2NvdW50QWRkcmVzcywgJ2FjY291bnRBZGRyZXNzJyk7XG4gICAgdmFsaWRhdGVBZGRyZXNzKGRlc3RpbmF0aW9uQWRkcmVzcywgJ2Rlc3RpbmF0aW9uQWRkcmVzcycpO1xuICAgIHZhbGlkYXRlQWRkcmVzcyhhdXRob3JpdHlBZGRyZXNzLCAnYXV0aG9yaXR5QWRkcmVzcycpO1xuXG4gICAgaWYgKGFjY291bnRBZGRyZXNzID09PSBkZXN0aW5hdGlvbkFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0FjY291bnQgYWRkcmVzcyB0byBjbG9zZSBjYW5ub3QgYmUgdGhlIHNhbWUgYXMgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY2xvc2VBdGFFbnRyaWVzLnNvbWUoKGVudHJ5KSA9PiBlbnRyeS5hY2NvdW50QWRkcmVzcyA9PT0gYWNjb3VudEFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdEdXBsaWNhdGUgQVRBIGFkZHJlc3M6ICcgKyBhY2NvdW50QWRkcmVzcyk7XG4gICAgfVxuXG4gICAgdGhpcy5fYXBpTW9kZSA9ICdidWxrJztcbiAgICB0aGlzLl9jbG9zZUF0YUVudHJpZXMucHVzaCh7IGFjY291bnRBZGRyZXNzLCBkZXN0aW5hdGlvbkFkZHJlc3MsIGF1dGhvcml0eUFkZHJlc3MgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSkge1xuICAgICAgaWYgKGluc3RydWN0aW9uLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCkge1xuICAgICAgICBjb25zdCBhdGFDbG9zZUluc3RydWN0aW9uOiBBdGFDbG9zZSA9IGluc3RydWN0aW9uO1xuICAgICAgICB0aGlzLl9jbG9zZUF0YUVudHJpZXMucHVzaCh7XG4gICAgICAgICAgYWNjb3VudEFkZHJlc3M6IGF0YUNsb3NlSW5zdHJ1Y3Rpb24ucGFyYW1zLmFjY291bnRBZGRyZXNzLFxuICAgICAgICAgIGRlc3RpbmF0aW9uQWRkcmVzczogYXRhQ2xvc2VJbnN0cnVjdGlvbi5wYXJhbXMuZGVzdGluYXRpb25BZGRyZXNzLFxuICAgICAgICAgIGF1dGhvcml0eUFkZHJlc3M6IGF0YUNsb3NlSW5zdHJ1Y3Rpb24ucGFyYW1zLmF1dGhvcml0eUFkZHJlc3MsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5fY2xvc2VBdGFFbnRyaWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuX2FwaU1vZGUgPSAnYnVsayc7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fY2xvc2VBdGFFbnRyaWVzLmxlbmd0aCA+IDAsICdBdCBsZWFzdCBvbmUgQVRBIG11c3QgYmUgc3BlY2lmaWVkIGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcy5fY2xvc2VBdGFFbnRyaWVzKSB7XG4gICAgICBhc3NlcnQoZW50cnkuYWNjb3VudEFkZHJlc3MsICdBY2NvdW50IEFkZHJlc3MgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgICAgYXNzZXJ0KGVudHJ5LmRlc3RpbmF0aW9uQWRkcmVzcywgJ0Rlc3RpbmF0aW9uIEFkZHJlc3MgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgICAgYXNzZXJ0KGVudHJ5LmF1dGhvcml0eUFkZHJlc3MsICdBdXRob3JpdHkgQWRkcmVzcyBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG5cbiAgICAgIGlmIChlbnRyeS5hY2NvdW50QWRkcmVzcyA9PT0gZW50cnkuZGVzdGluYXRpb25BZGRyZXNzKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0FjY291bnQgYWRkcmVzcyB0byBjbG9zZSBjYW5ub3QgYmUgdGhlIHNhbWUgYXMgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhID0gdGhpcy5fY2xvc2VBdGFFbnRyaWVzLm1hcChcbiAgICAgIChlbnRyeSk6IEF0YUNsb3NlID0+ICh7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgYWNjb3VudEFkZHJlc3M6IGVudHJ5LmFjY291bnRBZGRyZXNzLFxuICAgICAgICAgIGRlc3RpbmF0aW9uQWRkcmVzczogZW50cnkuZGVzdGluYXRpb25BZGRyZXNzLFxuICAgICAgICAgIGF1dGhvcml0eUFkZHJlc3M6IGVudHJ5LmF1dGhvcml0eUFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG59XG4iXX0=
|
|
@@ -4,6 +4,24 @@ export declare const SEED_LENGTH = 32;
|
|
|
4
4
|
export declare const MAX_MEMO_LENGTH = 130;
|
|
5
5
|
export declare const STAKE_ACCOUNT_RENT_EXEMPT_AMOUNT = 2282880;
|
|
6
6
|
export declare const UNAVAILABLE_TEXT = "UNAVAILABLE";
|
|
7
|
+
/**
|
|
8
|
+
* Maximum over-the-wire size of a Solana transaction (in bytes)
|
|
9
|
+
*
|
|
10
|
+
* Source: https://github.com/anza-xyz/agave/blob/v2.1.13/sdk/packet/src/lib.rs#L27-L29
|
|
11
|
+
*
|
|
12
|
+
* Calculation:
|
|
13
|
+
* - IPv6 minimum MTU: 1280 bytes
|
|
14
|
+
* - IPv6 header: 40 bytes
|
|
15
|
+
* - Fragment/UDP header: 8 bytes
|
|
16
|
+
* - Result: 1280 - 40 - 8 = 1232 bytes
|
|
17
|
+
*
|
|
18
|
+
* This limit is designed to avoid packet fragmentation on typical internet infrastructure.
|
|
19
|
+
* Transactions exceeding this limit will fail to serialize with a RangeError during
|
|
20
|
+
* the encoding of the transaction message.
|
|
21
|
+
*
|
|
22
|
+
* Reference: https://solana.com/docs/core/transactions#transaction-size
|
|
23
|
+
*/
|
|
24
|
+
export declare const SOLANA_TRANSACTION_MAX_SIZE = 1232;
|
|
7
25
|
export declare const JITO_STAKE_POOL_ADDRESS = "Jito4APyf642JPZPx3hGc6WWJ8zPKtRbRs4P815Awbb";
|
|
8
26
|
export declare const JITOSOL_MINT_ADDRESS = "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn";
|
|
9
27
|
export declare const JITO_STAKE_POOL_RESERVE_ACCOUNT = "BgKUXdS29YcHCFrPm5M8oLHiTzZaMDjsebggjoaQ6KFL";
|
|
@@ -23,6 +41,7 @@ export declare enum ValidInstructionTypesEnum {
|
|
|
23
41
|
Memo = "Memo",
|
|
24
42
|
InitializeAssociatedTokenAccount = "InitializeAssociatedTokenAccount",
|
|
25
43
|
CloseAssociatedTokenAccount = "CloseAssociatedTokenAccount",
|
|
44
|
+
RecoverNestedAssociatedTokenAccount = "RecoverNestedAssociatedTokenAccount",
|
|
26
45
|
Allocate = "Allocate",
|
|
27
46
|
Assign = "Assign",
|
|
28
47
|
Split = "Split",
|
|
@@ -46,6 +65,7 @@ export declare enum InstructionBuilderTypes {
|
|
|
46
65
|
NonceAdvance = "NonceAdvance",
|
|
47
66
|
CreateAssociatedTokenAccount = "CreateAssociatedTokenAccount",
|
|
48
67
|
CloseAssociatedTokenAccount = "CloseAssociatedTokenAccount",
|
|
68
|
+
RecoverNestedAssociatedTokenAccount = "RecoverNestedAssociatedTokenAccount",
|
|
49
69
|
TokenTransfer = "TokenTransfer",
|
|
50
70
|
StakingAuthorize = "Authorize",
|
|
51
71
|
StakingDelegate = "Delegate",
|
|
@@ -134,6 +154,10 @@ export declare const ataInitInstructionIndexes: {
|
|
|
134
154
|
export declare const ataCloseInstructionIndexes: {
|
|
135
155
|
readonly CloseAssociatedTokenAccount: 0;
|
|
136
156
|
};
|
|
157
|
+
/** Const to check the order of the recover nested ATA instructions when decode */
|
|
158
|
+
export declare const ataRecoverNestedInstructionIndexes: {
|
|
159
|
+
readonly RecoverNestedAssociatedTokenAccount: 0;
|
|
160
|
+
};
|
|
137
161
|
export declare const nonceAdvanceInstruction = "AdvanceNonceAccount";
|
|
138
162
|
export declare const validInstructionData = "0a00000001000000";
|
|
139
163
|
export declare const validInstructionData2 = "0a00000000000000";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/lib/constants.ts"],"names":[],"mappings":"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"}
|