@bitgo-beta/sdk-coin-sol 7.6.4-beta.62 → 7.6.4-beta.621
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/bigint-buffer-guard.d.ts.map +1 -0
- package/dist/cjs/src/bigint-buffer-guard.js +29 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/index.js +1 -1
- package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/ataInitializationBuilder.js +201 -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 +45 -2
- package/dist/cjs/src/lib/constants.d.ts.map +1 -0
- package/dist/cjs/src/lib/constants.js +216 -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 +79 -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 +3 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/index.js +89 -0
- package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +3 -1
- package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/instructionParamsFactory.js +1122 -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 +649 -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/token2022Resolve.d.ts +106 -0
- package/dist/cjs/src/lib/token2022Resolve.d.ts.map +1 -0
- package/dist/cjs/src/lib/token2022Resolve.js +199 -0
- package/dist/cjs/src/lib/tokenExtensions.d.ts +31 -0
- package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenExtensions.js +112 -0
- package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +27 -1
- package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenTransferBuilder.js +237 -0
- package/dist/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 +69 -0
- package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
- package/dist/cjs/src/lib/transferBuilderV2.js +254 -0
- package/dist/{src → cjs/src}/lib/utils.d.ts +5 -0
- package/dist/cjs/src/lib/utils.d.ts.map +1 -0
- package/dist/cjs/src/lib/utils.js +635 -0
- package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
- package/dist/cjs/src/register.d.ts +5 -0
- package/dist/cjs/src/register.d.ts.map +1 -0
- package/dist/cjs/src/register.js +29 -0
- package/dist/{src → cjs/src}/sol.d.ts +112 -3
- package/dist/cjs/src/sol.d.ts.map +1 -0
- package/dist/cjs/src/sol.js +1617 -0
- package/dist/{src → cjs/src}/solToken.d.ts +7 -0
- package/dist/cjs/src/solToken.d.ts.map +1 -0
- package/dist/cjs/src/solToken.js +79 -0
- package/dist/cjs/src/tsol.d.ts.map +1 -0
- package/dist/cjs/src/tsol.js +24 -0
- package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
- package/dist/cjs/test/fixtures/sol.js +1433 -0
- package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
- package/dist/cjs/test/resources/sol.d.ts.map +1 -0
- package/dist/cjs/test/resources/sol.js +320 -0
- package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
- package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
- package/dist/cjs/test/unit/explainTransactionWasm.js +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 +425 -0
- package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
- package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
- package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
- package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
- package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
- package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
- package/dist/cjs/test/unit/keyPair.js +177 -0
- package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
- package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
- package/dist/cjs/test/unit/register.d.ts +2 -0
- package/dist/cjs/test/unit/register.d.ts.map +1 -0
- package/dist/cjs/test/unit/register.js +65 -0
- package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
- package/dist/cjs/test/unit/sol.js +4790 -0
- package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/solInstructionFactory.js +611 -0
- package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
- package/dist/cjs/test/unit/solToken.js +37 -0
- package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
- package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
- package/dist/cjs/test/unit/token2022Resolve.js +252 -0
- package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
- package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
- package/dist/cjs/test/unit/tokenExtensions.js +32 -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 +926 -0
- package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +286 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
- package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
- package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
- package/dist/cjs/test/unit/utils.js +557 -0
- package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/versionedTransaction.js +207 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/bigint-buffer-guard.d.ts +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/lib/ataInitializationBuilder.d.ts +47 -0
- package/dist/{src → esm}/lib/ataInitializationBuilder.d.ts.map +1 -1
- package/dist/esm/lib/ataInitializationBuilder.js +161 -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 +183 -0
- package/dist/esm/lib/constants.d.ts.map +1 -0
- package/dist/esm/lib/constants.js +213 -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 +321 -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 +25 -0
- package/dist/{src → esm}/lib/index.d.ts.map +1 -1
- package/dist/esm/lib/index.js +25 -0
- package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
- package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
- package/dist/esm/lib/instructionParamsFactory.js +1114 -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 +643 -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/token2022Resolve.d.ts +106 -0
- package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
- package/dist/esm/lib/token2022Resolve.js +194 -0
- package/dist/esm/lib/tokenExtensions.d.ts +31 -0
- package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
- package/dist/esm/lib/tokenExtensions.js +105 -0
- package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
- package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/esm/lib/tokenTransferBuilder.js +230 -0
- package/dist/esm/lib/transaction.d.ts +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 +69 -0
- package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
- package/dist/esm/lib/transferBuilderV2.js +247 -0
- package/dist/esm/lib/utils.d.ts +205 -0
- package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
- package/dist/esm/lib/utils.js +597 -0
- package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
- package/dist/esm/lib/walletInitializationBuilder.js +64 -0
- package/dist/esm/register.d.ts +5 -0
- package/dist/esm/register.d.ts.map +1 -0
- package/dist/esm/register.js +24 -0
- package/dist/esm/sol.d.ts +349 -0
- package/dist/esm/sol.d.ts.map +1 -0
- package/dist/esm/sol.js +1576 -0
- package/dist/esm/solToken.d.ts +44 -0
- package/dist/esm/solToken.d.ts.map +1 -0
- package/dist/esm/solToken.js +75 -0
- package/dist/esm/tsol.d.ts +11 -0
- package/dist/esm/tsol.js +20 -0
- package/package.json +35 -16
- package/dist/src/config/token2022StaticConfig.d.ts +0 -3
- package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
- package/dist/src/config/token2022StaticConfig.js +0 -50
- package/dist/src/lib/ataInitializationBuilder.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/index.js +0 -77
- package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
- package/dist/src/lib/instructionParamsFactory.js +0 -1036
- package/dist/src/lib/jitoStakePoolOperations.js +0 -200
- package/dist/src/lib/keyPair.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.d.ts +0 -44
- package/dist/src/lib/token2022Config.d.ts.map +0 -1
- package/dist/src/lib/token2022Config.js +0 -27
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
- package/dist/src/lib/tokenTransferBuilder.js +0 -188
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -595
- package/dist/src/lib/transactionBuilder.js +0 -380
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilderFactory.js +0 -202
- package/dist/src/lib/transferBuilder.js +0 -70
- package/dist/src/lib/transferBuilderV2.d.ts +0 -43
- package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
- package/dist/src/lib/transferBuilderV2.js +0 -210
- package/dist/src/lib/utils.js +0 -589
- package/dist/src/lib/walletInitializationBuilder.js +0 -71
- package/dist/src/register.d.ts +0 -3
- package/dist/src/register.d.ts.map +0 -1
- package/dist/src/register.js +0 -15
- package/dist/src/sol.d.ts.map +0 -1
- package/dist/src/sol.js +0 -1324
- package/dist/src/solToken.d.ts.map +0 -1
- package/dist/src/solToken.js +0 -69
- package/dist/src/tsol.js +0 -24
- package/dist/test/fixtures/sol.js +0 -1433
- package/dist/test/resources/sol.d.ts.map +0 -1
- package/dist/test/resources/sol.js +0 -320
- package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
- package/dist/test/unit/fixtures/solBackupKey.js +0 -8
- package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
- package/dist/test/unit/getBuilderFactory.js +0 -10
- package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
- package/dist/test/unit/instructionParamsFactory.js +0 -412
- package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
- package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
- package/dist/test/unit/keyPair.js +0 -177
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
- package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
- package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
- package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
- package/dist/test/unit/sol.js +0 -3180
- package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
- package/dist/test/unit/solInstructionFactory.js +0 -454
- package/dist/test/unit/solToken.d.ts.map +0 -1
- package/dist/test/unit/solToken.js +0 -31
- package/dist/test/unit/transaction.d.ts.map +0 -1
- package/dist/test/unit/transaction.js +0 -983
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
- package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
- package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
- package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
- package/dist/test/unit/utils.js +0 -517
- package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
- package/dist/test/unit/versionedTransaction.js +0 -207
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
- /package/dist/{src → cjs/src}/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/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/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/walletInitializationBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
- /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
- /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
- /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
- /package/dist/{src → esm}/index.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/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/transactionBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/tsol.d.ts.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakingRawMsgAuthorizeBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/stakingRawMsgAuthorizeBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,WAAW,EACX,OAAO,EACP,eAAe,EACf,sBAAsB,EAEtB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAU5C,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,qBAAa,6BAA8B,SAAQ,sBAAsB;IACvE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC;gBAC1B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAMlC;;;;;;OAMG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMrC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAgB3D,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO;IAIvC,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAInC,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IA6B/C,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAOjE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe;IAI3D,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAInE,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI/B,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAMpD,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAGtC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
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.StakingRawMsgAuthorizeBuilder = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const transaction_1 = require("./transaction");
|
|
9
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
10
|
+
const assert_1 = __importDefault(require("assert"));
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
class StakingRawMsgAuthorizeBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
13
|
+
constructor(_coinConfig) {
|
|
14
|
+
super(_coinConfig);
|
|
15
|
+
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
16
|
+
}
|
|
17
|
+
get transactionType() {
|
|
18
|
+
return sdk_core_1.TransactionType.StakingAuthorizeRaw;
|
|
19
|
+
}
|
|
20
|
+
/** @inheritdoc */
|
|
21
|
+
initBuilder(tx) {
|
|
22
|
+
if (this.validateTransaction(tx)) {
|
|
23
|
+
this.transactionMessage(tx.solTransaction.serializeMessage().toString('base64'));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The raw message generated by Solana CLI.
|
|
28
|
+
*
|
|
29
|
+
* @param {string} msg msg generated by 'solana stake-authorize-check.
|
|
30
|
+
* @returns {StakeBuilder} This staking builder.
|
|
31
|
+
*
|
|
32
|
+
*/
|
|
33
|
+
transactionMessage(msg) {
|
|
34
|
+
this.validateMessage(msg);
|
|
35
|
+
this._transactionMessage = msg;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
/** @inheritdoc */
|
|
39
|
+
async buildImplementation() {
|
|
40
|
+
(0, assert_1.default)(this._transactionMessage, 'missing transaction message');
|
|
41
|
+
this.validateMessage(this._transactionMessage);
|
|
42
|
+
const solTransaction = web3_js_1.Transaction.populate(web3_js_1.Message.from(Buffer.from(this._transactionMessage, 'base64')), []);
|
|
43
|
+
// this is workaround for solana web3.js generate wrong signing message
|
|
44
|
+
const serialized = solTransaction.serialize({ requireAllSignatures: false }).toString('base64');
|
|
45
|
+
this.transaction.fromRawTransaction(serialized);
|
|
46
|
+
this.transaction.setTransactionType(this.transactionType);
|
|
47
|
+
(0, assert_1.default)(this._transactionMessage === this.transaction.signablePayload.toString('base64'), 'wrong signing message');
|
|
48
|
+
return this.transaction;
|
|
49
|
+
}
|
|
50
|
+
validateTransaction(tx) {
|
|
51
|
+
return this.validateMessage(tx.solTransaction.serializeMessage().toString('base64'));
|
|
52
|
+
}
|
|
53
|
+
async build() {
|
|
54
|
+
return this.buildImplementation();
|
|
55
|
+
}
|
|
56
|
+
validateMessage(msg) {
|
|
57
|
+
const tx = web3_js_1.Transaction.populate(web3_js_1.Message.from(Buffer.from(msg, 'base64')), []);
|
|
58
|
+
const instructions = tx.instructions;
|
|
59
|
+
if (instructions.length !== 2 && instructions.length !== 3) {
|
|
60
|
+
throw new Error(`Invalid transaction, expected 2 instruction, got ${instructions.length}`);
|
|
61
|
+
}
|
|
62
|
+
for (const instruction of instructions) {
|
|
63
|
+
switch (instruction.programId.toString()) {
|
|
64
|
+
case web3_js_1.SystemProgram.programId.toString():
|
|
65
|
+
const instructionName = web3_js_1.SystemInstruction.decodeInstructionType(instruction);
|
|
66
|
+
if (instructionName !== constants_1.nonceAdvanceInstruction) {
|
|
67
|
+
throw new Error(`Invalid system instruction : ${instructionName}`);
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
70
|
+
case web3_js_1.StakeProgram.programId.toString():
|
|
71
|
+
const data = instruction.data.toString('hex');
|
|
72
|
+
if (data !== constants_1.validInstructionData && data !== constants_1.validInstructionData2) {
|
|
73
|
+
throw new Error(`Invalid staking instruction data: ${data}`);
|
|
74
|
+
}
|
|
75
|
+
break;
|
|
76
|
+
default:
|
|
77
|
+
throw new Error(`Invalid transaction, instruction program id not supported: ${instruction.programId.toString()}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
fromImplementation(rawTransaction) {
|
|
83
|
+
const tx = new transaction_1.Transaction(this._coinConfig);
|
|
84
|
+
tx.fromRawTransaction(rawTransaction);
|
|
85
|
+
this.initBuilder(tx);
|
|
86
|
+
return this.transaction;
|
|
87
|
+
}
|
|
88
|
+
signImplementation(key) {
|
|
89
|
+
throw new sdk_core_1.NotSupported('Method not supported on this builder');
|
|
90
|
+
}
|
|
91
|
+
get transaction() {
|
|
92
|
+
return this._transaction;
|
|
93
|
+
}
|
|
94
|
+
validateAddress(address, addressFormat) {
|
|
95
|
+
throw new sdk_core_1.NotSupported('Method not supported on this builder');
|
|
96
|
+
}
|
|
97
|
+
validateKey(key) {
|
|
98
|
+
throw new sdk_core_1.NotSupported('Method not supported on this builder');
|
|
99
|
+
}
|
|
100
|
+
validateRawTransaction(rawTransaction) {
|
|
101
|
+
const tx = new transaction_1.Transaction(this._coinConfig);
|
|
102
|
+
tx.fromRawTransaction(rawTransaction);
|
|
103
|
+
this.validateTransaction(tx);
|
|
104
|
+
}
|
|
105
|
+
validateValue(value) {
|
|
106
|
+
throw new sdk_core_1.NotSupported('Method not supported on this builder');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.StakingRawMsgAuthorizeBuilder = StakingRawMsgAuthorizeBuilder;
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3N0YWtpbmdSYXdNc2dBdXRob3JpemVCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLG1EQU84QjtBQUM5QiwrQ0FBNEM7QUFDNUMsNkNBTXlCO0FBRXpCLG9EQUE0QjtBQUU1QiwyQ0FBbUc7QUFFbkcsTUFBYSw2QkFBOEIsU0FBUSxpQ0FBc0I7SUFHdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsbUJBQW1CLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXLENBQUMsRUFBZTtRQUN6QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUEsZ0JBQU0sRUFBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsZUFB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LGtCQUFrQixDQUFDLGNBQXNCO1FBQ2pELE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLE1BQU0sSUFBSSx1QkFBWSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFvQixFQUFFLGFBQXNCO1FBQzFELE1BQU0sSUFBSSx1QkFBWSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFZO1FBQ3RCLE1BQU0sSUFBSSx1QkFBWSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELHNCQUFzQixDQUFDLGNBQXNCO1FBQzNDLE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWdCO1FBQzVCLE1BQU0sSUFBSSx1QkFBWSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNGO0FBdEhELHNFQXNIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEJhc2VBZGRyZXNzLFxuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIE5vdFN1cHBvcnRlZCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb24gYXMgU09MVHJhbnNhY3Rpb24sXG4gIE1lc3NhZ2UgYXMgU09MTWVzc2FnZSxcbiAgU3lzdGVtUHJvZ3JhbSxcbiAgU3lzdGVtSW5zdHJ1Y3Rpb24sXG4gIFN0YWtlUHJvZ3JhbSxcbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcblxuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24sIHZhbGlkSW5zdHJ1Y3Rpb25EYXRhLCB2YWxpZEluc3RydWN0aW9uRGF0YTIgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBTdGFraW5nUmF3TXNnQXV0aG9yaXplQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbk1lc3NhZ2U6IHN0cmluZztcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQXV0aG9yaXplUmF3O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb24odHgpKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uTWVzc2FnZSh0eC5zb2xUcmFuc2FjdGlvbi5zZXJpYWxpemVNZXNzYWdlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJhdyBtZXNzYWdlIGdlbmVyYXRlZCBieSBTb2xhbmEgQ0xJLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbXNnIG1zZyBnZW5lcmF0ZWQgYnkgJ3NvbGFuYSBzdGFrZS1hdXRob3JpemUtY2hlY2suXG4gICAqIEByZXR1cm5zIHtTdGFrZUJ1aWxkZXJ9IFRoaXMgc3Rha2luZyBidWlsZGVyLlxuICAgKlxuICAgKi9cbiAgdHJhbnNhY3Rpb25NZXNzYWdlKG1zZzogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZU1lc3NhZ2UobXNnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbk1lc3NhZ2UgPSBtc2c7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGFzc2VydCh0aGlzLl90cmFuc2FjdGlvbk1lc3NhZ2UsICdtaXNzaW5nIHRyYW5zYWN0aW9uIG1lc3NhZ2UnKTtcblxuICAgIHRoaXMudmFsaWRhdGVNZXNzYWdlKHRoaXMuX3RyYW5zYWN0aW9uTWVzc2FnZSk7XG4gICAgY29uc3Qgc29sVHJhbnNhY3Rpb24gPSBTT0xUcmFuc2FjdGlvbi5wb3B1bGF0ZShcbiAgICAgIFNPTE1lc3NhZ2UuZnJvbShCdWZmZXIuZnJvbSh0aGlzLl90cmFuc2FjdGlvbk1lc3NhZ2UsICdiYXNlNjQnKSksXG4gICAgICBbXVxuICAgICk7XG4gICAgLy8gdGhpcyBpcyB3b3JrYXJvdW5kIGZvciBzb2xhbmEgd2ViMy5qcyBnZW5lcmF0ZSB3cm9uZyBzaWduaW5nIG1lc3NhZ2VcbiAgICBjb25zdCBzZXJpYWxpemVkID0gc29sVHJhbnNhY3Rpb24uc2VyaWFsaXplKHsgcmVxdWlyZUFsbFNpZ25hdHVyZXM6IGZhbHNlIH0pLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmZyb21SYXdUcmFuc2FjdGlvbihzZXJpYWxpemVkKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG4gICAgYXNzZXJ0KHRoaXMuX3RyYW5zYWN0aW9uTWVzc2FnZSA9PT0gdGhpcy50cmFuc2FjdGlvbi5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2Jhc2U2NCcpLCAnd3Jvbmcgc2lnbmluZyBtZXNzYWdlJyk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHR4OiBUcmFuc2FjdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlTWVzc2FnZSh0eC5zb2xUcmFuc2FjdGlvbi5zZXJpYWxpemVNZXNzYWdlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVNZXNzYWdlKG1zZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHggPSBTT0xUcmFuc2FjdGlvbi5wb3B1bGF0ZShTT0xNZXNzYWdlLmZyb20oQnVmZmVyLmZyb20obXNnLCAnYmFzZTY0JykpLCBbXSk7XG4gICAgY29uc3QgaW5zdHJ1Y3Rpb25zID0gdHguaW5zdHJ1Y3Rpb25zO1xuICAgIGlmIChpbnN0cnVjdGlvbnMubGVuZ3RoICE9PSAyICYmIGluc3RydWN0aW9ucy5sZW5ndGggIT09IDMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0cmFuc2FjdGlvbiwgZXhwZWN0ZWQgMiBpbnN0cnVjdGlvbiwgZ290ICR7aW5zdHJ1Y3Rpb25zLmxlbmd0aH1gKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgY2FzZSBTeXN0ZW1Qcm9ncmFtLnByb2dyYW1JZC50b1N0cmluZygpOlxuICAgICAgICAgIGNvbnN0IGluc3RydWN0aW9uTmFtZSA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZUluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbik7XG4gICAgICAgICAgaWYgKGluc3RydWN0aW9uTmFtZSAhPT0gbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzeXN0ZW0gaW5zdHJ1Y3Rpb24gOiAke2luc3RydWN0aW9uTmFtZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgU3Rha2VQcm9ncmFtLnByb2dyYW1JZC50b1N0cmluZygpOlxuICAgICAgICAgIGNvbnN0IGRhdGEgPSBpbnN0cnVjdGlvbi5kYXRhLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICBpZiAoZGF0YSAhPT0gdmFsaWRJbnN0cnVjdGlvbkRhdGEgJiYgZGF0YSAhPT0gdmFsaWRJbnN0cnVjdGlvbkRhdGEyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc3Rha2luZyBpbnN0cnVjdGlvbiBkYXRhOiAke2RhdGF9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIHRyYW5zYWN0aW9uLCBpbnN0cnVjdGlvbiBwcm9ncmFtIGlkIG5vdCBzdXBwb3J0ZWQ6ICR7aW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkLnRvU3RyaW5nKCl9YFxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIHR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5pbml0QnVpbGRlcih0eCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnTWV0aG9kIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBidWlsZGVyJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdNZXRob2Qgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGJ1aWxkZXInKTtcbiAgfVxuXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ01ldGhvZCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgYnVpbGRlcicpO1xuICB9XG5cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb24odHgpO1xuICB9XG5cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnTWV0aG9kIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBidWlsZGVyJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakingWithdrawBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/stakingWithdrawBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAYlC;;;;;;OAMG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAM5C;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAqB5D"}
|
|
@@ -0,0 +1,78 @@
|
|
|
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.StakingWithdrawBuilder = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const assert_1 = __importDefault(require("assert"));
|
|
11
|
+
const utils_1 = require("./utils");
|
|
12
|
+
class StakingWithdrawBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
13
|
+
constructor(_coinConfig) {
|
|
14
|
+
super(_coinConfig);
|
|
15
|
+
}
|
|
16
|
+
get transactionType() {
|
|
17
|
+
return sdk_core_1.TransactionType.StakingWithdraw;
|
|
18
|
+
}
|
|
19
|
+
/** @inheritdoc */
|
|
20
|
+
initBuilder(tx) {
|
|
21
|
+
super.initBuilder(tx);
|
|
22
|
+
for (const instruction of this._instructionsData) {
|
|
23
|
+
if (instruction.type === constants_1.InstructionBuilderTypes.StakingWithdraw) {
|
|
24
|
+
const withdrawInstruction = instruction;
|
|
25
|
+
this.sender(withdrawInstruction.params.fromAddress);
|
|
26
|
+
this.stakingAddress(withdrawInstruction.params.stakingAddress);
|
|
27
|
+
this.amount(withdrawInstruction.params.amount);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The address of the staking account.
|
|
33
|
+
*
|
|
34
|
+
* @param {string} stakingAddress public address of the staking account
|
|
35
|
+
* @returns {StakeBuilder} This staking builder.
|
|
36
|
+
*
|
|
37
|
+
*/
|
|
38
|
+
stakingAddress(stakingAddress) {
|
|
39
|
+
(0, utils_1.validateAddress)(stakingAddress, 'stakingAddress');
|
|
40
|
+
this._stakingAddress = stakingAddress;
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The amount to withdraw expressed in Lamports, 1 SOL = 1_000_000_000 lamports
|
|
45
|
+
*
|
|
46
|
+
* @param {string} amount expressed in Lamports
|
|
47
|
+
* @returns {StakeBuilder} This staking builder.
|
|
48
|
+
*
|
|
49
|
+
*/
|
|
50
|
+
amount(amount) {
|
|
51
|
+
if (!(0, utils_1.isValidStakingAmount)(amount)) {
|
|
52
|
+
throw new sdk_core_1.BuildTransactionError('Value cannot be zero or less');
|
|
53
|
+
}
|
|
54
|
+
this._amount = amount;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
/** @inheritdoc */
|
|
58
|
+
async buildImplementation() {
|
|
59
|
+
(0, assert_1.default)(this._sender, 'Sender must be set before building the transaction');
|
|
60
|
+
(0, assert_1.default)(this._stakingAddress, 'Staking address must be set before building the transaction');
|
|
61
|
+
(0, assert_1.default)(this._amount, 'Amount must be set before building the transaction');
|
|
62
|
+
if (this._sender === this._stakingAddress) {
|
|
63
|
+
throw new sdk_core_1.BuildTransactionError('Sender address cannot be the same as the Staking address');
|
|
64
|
+
}
|
|
65
|
+
const stakingWithdrawData = {
|
|
66
|
+
type: constants_1.InstructionBuilderTypes.StakingWithdraw,
|
|
67
|
+
params: {
|
|
68
|
+
fromAddress: this._sender,
|
|
69
|
+
stakingAddress: this._stakingAddress,
|
|
70
|
+
amount: this._amount,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
this._instructionsData = [stakingWithdrawData];
|
|
74
|
+
return await super.buildImplementation();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.StakingWithdrawBuilder = StakingWithdrawBuilder;
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1dpdGhkcmF3QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc3Rha2luZ1dpdGhkcmF3QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxtREFBOEU7QUFFOUUsNkRBQTBEO0FBQzFELDJDQUFzRDtBQUV0RCxvREFBNEI7QUFFNUIsbUNBQWdFO0FBRWhFLE1BQWEsc0JBQXVCLFNBQVEsdUNBQWtCO0lBSTVELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsS0FBSyxNQUFNLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssbUNBQXVCLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ2pFLE1BQU0sbUJBQW1CLEdBQW9CLFdBQVcsQ0FBQztnQkFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxjQUFjLENBQUMsY0FBc0I7UUFDbkMsSUFBQSx1QkFBZSxFQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxNQUFjO1FBQ25CLElBQUksQ0FBQyxJQUFBLDRCQUFvQixFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBQSxnQkFBTSxFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsb0RBQW9ELENBQUMsQ0FBQztRQUMzRSxJQUFBLGdCQUFNLEVBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSw2REFBNkQsQ0FBQyxDQUFDO1FBQzVGLElBQUEsZ0JBQU0sRUFBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG9EQUFvRCxDQUFDLENBQUM7UUFFM0UsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUM5RixDQUFDO1FBRUQsTUFBTSxtQkFBbUIsR0FBb0I7WUFDM0MsSUFBSSxFQUFFLG1DQUF1QixDQUFDLGVBQWU7WUFDN0MsTUFBTSxFQUFFO2dCQUNOLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDekIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDckI7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUvQyxPQUFPLE1BQU0sS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDM0MsQ0FBQztDQUNGO0FBM0VELHdEQTJFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBTdGFraW5nV2l0aGRyYXcgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGlzVmFsaWRTdGFraW5nQW1vdW50LCB2YWxpZGF0ZUFkZHJlc3MgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFN0YWtpbmdXaXRoZHJhd0J1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3N0YWtpbmdBZGRyZXNzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfYW1vdW50OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICBpZiAoaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ1dpdGhkcmF3KSB7XG4gICAgICAgIGNvbnN0IHdpdGhkcmF3SW5zdHJ1Y3Rpb246IFN0YWtpbmdXaXRoZHJhdyA9IGluc3RydWN0aW9uO1xuICAgICAgICB0aGlzLnNlbmRlcih3aXRoZHJhd0luc3RydWN0aW9uLnBhcmFtcy5mcm9tQWRkcmVzcyk7XG4gICAgICAgIHRoaXMuc3Rha2luZ0FkZHJlc3Mod2l0aGRyYXdJbnN0cnVjdGlvbi5wYXJhbXMuc3Rha2luZ0FkZHJlc3MpO1xuICAgICAgICB0aGlzLmFtb3VudCh3aXRoZHJhd0luc3RydWN0aW9uLnBhcmFtcy5hbW91bnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYWRkcmVzcyBvZiB0aGUgc3Rha2luZyBhY2NvdW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3Rha2luZ0FkZHJlc3MgcHVibGljIGFkZHJlc3Mgb2YgdGhlIHN0YWtpbmcgYWNjb3VudFxuICAgKiBAcmV0dXJucyB7U3Rha2VCdWlsZGVyfSBUaGlzIHN0YWtpbmcgYnVpbGRlci5cbiAgICpcbiAgICovXG4gIHN0YWtpbmdBZGRyZXNzKHN0YWtpbmdBZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB2YWxpZGF0ZUFkZHJlc3Moc3Rha2luZ0FkZHJlc3MsICdzdGFraW5nQWRkcmVzcycpO1xuICAgIHRoaXMuX3N0YWtpbmdBZGRyZXNzID0gc3Rha2luZ0FkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFtb3VudCB0byB3aXRoZHJhdyBleHByZXNzZWQgaW4gTGFtcG9ydHMsIDEgU09MID0gMV8wMDBfMDAwXzAwMCBsYW1wb3J0c1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IGV4cHJlc3NlZCBpbiBMYW1wb3J0c1xuICAgKiBAcmV0dXJucyB7U3Rha2VCdWlsZGVyfSBUaGlzIHN0YWtpbmcgYnVpbGRlci5cbiAgICpcbiAgICovXG4gIGFtb3VudChhbW91bnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZFN0YWtpbmdBbW91bnQoYW1vdW50KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIHplcm8gb3IgbGVzcycpO1xuICAgIH1cbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGFzc2VydCh0aGlzLl9zZW5kZXIsICdTZW5kZXIgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIGFzc2VydCh0aGlzLl9zdGFraW5nQWRkcmVzcywgJ1N0YWtpbmcgYWRkcmVzcyBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgYXNzZXJ0KHRoaXMuX2Ftb3VudCwgJ0Ftb3VudCBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG5cbiAgICBpZiAodGhpcy5fc2VuZGVyID09PSB0aGlzLl9zdGFraW5nQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU2VuZGVyIGFkZHJlc3MgY2Fubm90IGJlIHRoZSBzYW1lIGFzIHRoZSBTdGFraW5nIGFkZHJlc3MnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFraW5nV2l0aGRyYXdEYXRhOiBTdGFraW5nV2l0aGRyYXcgPSB7XG4gICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nV2l0aGRyYXcsXG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgZnJvbUFkZHJlc3M6IHRoaXMuX3NlbmRlcixcbiAgICAgICAgc3Rha2luZ0FkZHJlc3M6IHRoaXMuX3N0YWtpbmdBZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IHRoaXMuX2Ftb3VudCxcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhID0gW3N0YWtpbmdXaXRoZHJhd0RhdGFdO1xuXG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prettier
|
|
3
|
+
*
|
|
4
|
+
* Reusable Token-2022 resolution logic (Transfer Hook extra accounts and sRFC-37
|
|
5
|
+
* Token ACL permissionless thaw), decoupled from the `Sol` coin class so any caller
|
|
6
|
+
* with its own account-fetcher (e.g. wallet-platform reading chain state via IMS RPC)
|
|
7
|
+
* can resolve these dependencies offline of the SDK's node transport.
|
|
8
|
+
*
|
|
9
|
+
* The resolution functions take a `Connection` (only `getAccountInfo` is required);
|
|
10
|
+
* {@link buildSolAccountConnection} adapts a plain {@link SolAccountFetcher} into the
|
|
11
|
+
* shape `@solana/spl-token`'s transfer-hook helpers expect.
|
|
12
|
+
*/
|
|
13
|
+
import { AccountInfo, Connection } from '@solana/web3.js';
|
|
14
|
+
import { ExtraAccountMeta } from './iface';
|
|
15
|
+
/**
|
|
16
|
+
* A minimal account-fetcher: given a base58 address, return its on-chain
|
|
17
|
+
* {@link AccountInfo} (with `data` already decoded into a `Buffer`) or `null`
|
|
18
|
+
* when the account does not exist. Callers supply their own transport (SDK node
|
|
19
|
+
* request, wallet-platform IMS RPC, a full `Connection`, etc.).
|
|
20
|
+
*/
|
|
21
|
+
export type SolAccountFetcher = (address: string) => Promise<AccountInfo<Buffer> | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Result of resolving the sRFC-37 Token ACL permissionless thaw for a mint / token account.
|
|
24
|
+
*
|
|
25
|
+
* When `applicable` is false (the mint has no Token ACL MintConfig, or permissionless thaw is
|
|
26
|
+
* disabled) all other fields are omitted and the caller should not emit a thaw instruction.
|
|
27
|
+
* When `applicable` is true, the fields are ready to thread into the token-transfer builder via
|
|
28
|
+
* `permissionlessThaw(...)`.
|
|
29
|
+
*/
|
|
30
|
+
export interface ResolvePermissionlessThawResult {
|
|
31
|
+
applicable: boolean;
|
|
32
|
+
gatingProgram?: string;
|
|
33
|
+
flagAccount?: string;
|
|
34
|
+
mintConfig?: string;
|
|
35
|
+
tokenProgram?: string;
|
|
36
|
+
systemProgram?: string;
|
|
37
|
+
extraAccounts?: ExtraAccountMeta[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Build a minimal `Connection`-like shim backed by a {@link SolAccountFetcher}.
|
|
41
|
+
*
|
|
42
|
+
* `@solana/spl-token`'s transfer-hook resolution helpers only require
|
|
43
|
+
* `getAccountInfo(publicKey)` returning an `AccountInfo<Buffer>`. This adapts a
|
|
44
|
+
* plain address-based fetcher to that shape so any transport can drive the
|
|
45
|
+
* resolution below without opening a dedicated RPC connection.
|
|
46
|
+
*
|
|
47
|
+
* @param {SolAccountFetcher} fetch - fetcher returning decoded account info by address
|
|
48
|
+
* @returns {Connection} a shim exposing `getAccountInfo`, cast to `Connection`
|
|
49
|
+
*/
|
|
50
|
+
export declare function buildSolAccountConnection(fetch: SolAccountFetcher): Connection;
|
|
51
|
+
/**
|
|
52
|
+
* Resolve the Token-2022 Transfer Hook extra accounts for a specific transfer.
|
|
53
|
+
*
|
|
54
|
+
* This is generic: it works for any Token-2022 mint by reading the mint's
|
|
55
|
+
* TransferHook extension and the hook program's ExtraAccountMetaList live from
|
|
56
|
+
* the node, then resolving each extra account (including seed-derived PDAs) via
|
|
57
|
+
* the standard `spl-transfer-hook-interface` helpers. The returned metas are in
|
|
58
|
+
* the exact order the hook requires and are suitable for
|
|
59
|
+
* `TokenTransfer.params.transferHookAccounts`.
|
|
60
|
+
*
|
|
61
|
+
* When the mint has no Transfer Hook, this returns an empty array and callers can
|
|
62
|
+
* omit the param.
|
|
63
|
+
*
|
|
64
|
+
* @param {Connection} connection - a `Connection` (or shim) exposing `getAccountInfo`
|
|
65
|
+
* @param params - the transfer parameters
|
|
66
|
+
* @param {string} params.mint - the Token-2022 mint address
|
|
67
|
+
* @param {string} params.source - the source token account (sender ATA)
|
|
68
|
+
* @param {string} params.destination - the destination token account (recipient ATA)
|
|
69
|
+
* @param {string} params.owner - the source account owner / transfer authority
|
|
70
|
+
* @param {string} params.amount - the raw transfer amount in base units
|
|
71
|
+
* @returns {Promise<ExtraAccountMeta[]>} ordered extra account metas, or [] when no hook
|
|
72
|
+
*/
|
|
73
|
+
export declare function resolveTransferHookAccounts(connection: Connection, params: {
|
|
74
|
+
mint: string;
|
|
75
|
+
source: string;
|
|
76
|
+
destination: string;
|
|
77
|
+
owner: string;
|
|
78
|
+
amount: string;
|
|
79
|
+
}): Promise<ExtraAccountMeta[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Resolve the sRFC-37 Token ACL permissionless-thaw dependencies for a token account.
|
|
82
|
+
*
|
|
83
|
+
* This is generic: it works for ANY allowlist/blocklist (DefaultAccountState) Token-2022 mint
|
|
84
|
+
* gated by the Token ACL program — no issuer is hardcoded. It reads the mint's MintConfig PDA
|
|
85
|
+
* live from the node, and only when permissionless thaw is enabled does it derive the flag /
|
|
86
|
+
* mint-config / thaw-extra-metas PDAs and resolve the gating program's extra account metas (in
|
|
87
|
+
* the exact order the gating program requires, mirroring `resolveExtraMetas`).
|
|
88
|
+
*
|
|
89
|
+
* When the mint is not a Token ACL mint, or permissionless thaw is disabled, this returns
|
|
90
|
+
* `{ applicable: false }` and callers skip the thaw.
|
|
91
|
+
*
|
|
92
|
+
* @param {Connection} connection - a `Connection` (or shim) exposing `getAccountInfo`
|
|
93
|
+
* @param params - the thaw parameters
|
|
94
|
+
* @param {string} params.mint - the Token-2022 mint address
|
|
95
|
+
* @param {string} params.tokenAccount - the token account (ATA) to thaw
|
|
96
|
+
* @param {string} params.tokenAccountOwner - the owner of the token account
|
|
97
|
+
* @param {string} params.authority - the signer invoking the thaw (fee payer / authority)
|
|
98
|
+
* @returns {Promise<ResolvePermissionlessThawResult>} the resolved thaw params, or `{ applicable: false }`
|
|
99
|
+
*/
|
|
100
|
+
export declare function resolvePermissionlessThaw(connection: Connection, params: {
|
|
101
|
+
mint: string;
|
|
102
|
+
tokenAccount: string;
|
|
103
|
+
tokenAccountOwner: string;
|
|
104
|
+
authority: string;
|
|
105
|
+
}): Promise<ResolvePermissionlessThawResult>;
|
|
106
|
+
//# sourceMappingURL=token2022Resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token2022Resolve.d.ts","sourceRoot":"","sources":["../../../../src/lib/token2022Resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,OAAO,EACL,WAAW,EAGX,UAAU,EAIX,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAQ9E;AA4DD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3F,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8C7B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC3F,OAAO,CAAC,+BAA+B,CAAC,CAqE1C"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @prettier
|
|
4
|
+
*
|
|
5
|
+
* Reusable Token-2022 resolution logic (Transfer Hook extra accounts and sRFC-37
|
|
6
|
+
* Token ACL permissionless thaw), decoupled from the `Sol` coin class so any caller
|
|
7
|
+
* with its own account-fetcher (e.g. wallet-platform reading chain state via IMS RPC)
|
|
8
|
+
* can resolve these dependencies offline of the SDK's node transport.
|
|
9
|
+
*
|
|
10
|
+
* The resolution functions take a `Connection` (only `getAccountInfo` is required);
|
|
11
|
+
* {@link buildSolAccountConnection} adapts a plain {@link SolAccountFetcher} into the
|
|
12
|
+
* shape `@solana/spl-token`'s transfer-hook helpers expect.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.buildSolAccountConnection = buildSolAccountConnection;
|
|
16
|
+
exports.resolveTransferHookAccounts = resolveTransferHookAccounts;
|
|
17
|
+
exports.resolvePermissionlessThaw = resolvePermissionlessThaw;
|
|
18
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
19
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
20
|
+
const constants_1 = require("./constants");
|
|
21
|
+
/**
|
|
22
|
+
* Build a minimal `Connection`-like shim backed by a {@link SolAccountFetcher}.
|
|
23
|
+
*
|
|
24
|
+
* `@solana/spl-token`'s transfer-hook resolution helpers only require
|
|
25
|
+
* `getAccountInfo(publicKey)` returning an `AccountInfo<Buffer>`. This adapts a
|
|
26
|
+
* plain address-based fetcher to that shape so any transport can drive the
|
|
27
|
+
* resolution below without opening a dedicated RPC connection.
|
|
28
|
+
*
|
|
29
|
+
* @param {SolAccountFetcher} fetch - fetcher returning decoded account info by address
|
|
30
|
+
* @returns {Connection} a shim exposing `getAccountInfo`, cast to `Connection`
|
|
31
|
+
*/
|
|
32
|
+
function buildSolAccountConnection(fetch) {
|
|
33
|
+
const getAccountInfo = async (publicKey, _commitmentOrConfig) => {
|
|
34
|
+
return fetch(publicKey.toBase58());
|
|
35
|
+
};
|
|
36
|
+
return { getAccountInfo };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Map the extra keys appended to a resolved transfer instruction into the
|
|
40
|
+
* serializable {@link ExtraAccountMeta} shape.
|
|
41
|
+
*/
|
|
42
|
+
function toExtraAccountMetas(instruction, baseKeyCount) {
|
|
43
|
+
return instruction.keys.slice(baseKeyCount).map((meta) => ({
|
|
44
|
+
pubkey: meta.pubkey.toBase58(),
|
|
45
|
+
isSigner: meta.isSigner,
|
|
46
|
+
isWritable: meta.isWritable,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Decode the fields of a Token ACL MintConfig account we depend on.
|
|
51
|
+
*
|
|
52
|
+
* Layout: `u8 discriminator, u8 bump, bool enablePermissionlessThaw, bool enablePermissionlessFreeze,
|
|
53
|
+
* pubkey mint(32), pubkey freezeAuthority(32), pubkey gatingProgram(32)`.
|
|
54
|
+
*/
|
|
55
|
+
function decodeTokenAclMintConfig(data) {
|
|
56
|
+
const enablePermissionlessThaw = data[2] === 1;
|
|
57
|
+
const gatingProgram = new web3_js_1.PublicKey(data.subarray(68, 100));
|
|
58
|
+
return { enablePermissionlessThaw, gatingProgram };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve the gating program's thaw ExtraAccountMetaList onto a can-thaw context.
|
|
62
|
+
*
|
|
63
|
+
* Mirrors the reference `resolveExtraMetas`: fetch the extra-metas account, unpack its
|
|
64
|
+
* ExtraAccountMeta entries, then resolve each one (fixed address, PDA, or account-data derived)
|
|
65
|
+
* against the accumulating metas using the spl-token transfer-hook helpers. When the extra-metas
|
|
66
|
+
* account does not exist, there are no extras to append.
|
|
67
|
+
*/
|
|
68
|
+
async function resolveTokenAclExtraMetas(connection, extraMetasAddress, previousMetas, gatingProgram) {
|
|
69
|
+
const instructionData = Buffer.from([constants_1.THAW_PERMISSIONLESS_IDEMPOTENT_DISCRIMINATOR]);
|
|
70
|
+
const resolvedMetas = [...previousMetas];
|
|
71
|
+
const extraMetasAccount = await connection.getAccountInfo(extraMetasAddress);
|
|
72
|
+
if (!extraMetasAccount) {
|
|
73
|
+
return resolvedMetas;
|
|
74
|
+
}
|
|
75
|
+
const extraAccountMetas = (0, spl_token_1.getExtraAccountMetas)(extraMetasAccount);
|
|
76
|
+
for (const extraAccountMeta of extraAccountMetas) {
|
|
77
|
+
const resolvedMeta = await (0, spl_token_1.resolveExtraAccountMeta)(connection, extraAccountMeta, resolvedMetas, instructionData, gatingProgram);
|
|
78
|
+
resolvedMetas.push(resolvedMeta);
|
|
79
|
+
}
|
|
80
|
+
return resolvedMetas;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Resolve the Token-2022 Transfer Hook extra accounts for a specific transfer.
|
|
84
|
+
*
|
|
85
|
+
* This is generic: it works for any Token-2022 mint by reading the mint's
|
|
86
|
+
* TransferHook extension and the hook program's ExtraAccountMetaList live from
|
|
87
|
+
* the node, then resolving each extra account (including seed-derived PDAs) via
|
|
88
|
+
* the standard `spl-transfer-hook-interface` helpers. The returned metas are in
|
|
89
|
+
* the exact order the hook requires and are suitable for
|
|
90
|
+
* `TokenTransfer.params.transferHookAccounts`.
|
|
91
|
+
*
|
|
92
|
+
* When the mint has no Transfer Hook, this returns an empty array and callers can
|
|
93
|
+
* omit the param.
|
|
94
|
+
*
|
|
95
|
+
* @param {Connection} connection - a `Connection` (or shim) exposing `getAccountInfo`
|
|
96
|
+
* @param params - the transfer parameters
|
|
97
|
+
* @param {string} params.mint - the Token-2022 mint address
|
|
98
|
+
* @param {string} params.source - the source token account (sender ATA)
|
|
99
|
+
* @param {string} params.destination - the destination token account (recipient ATA)
|
|
100
|
+
* @param {string} params.owner - the source account owner / transfer authority
|
|
101
|
+
* @param {string} params.amount - the raw transfer amount in base units
|
|
102
|
+
* @returns {Promise<ExtraAccountMeta[]>} ordered extra account metas, or [] when no hook
|
|
103
|
+
*/
|
|
104
|
+
async function resolveTransferHookAccounts(connection, params) {
|
|
105
|
+
const { mint, source, destination, owner, amount } = params;
|
|
106
|
+
const mintPubkey = new web3_js_1.PublicKey(mint);
|
|
107
|
+
// Read the mint and detect whether a Transfer Hook extension is configured.
|
|
108
|
+
const mintAccountInfo = await connection.getAccountInfo(mintPubkey);
|
|
109
|
+
if (!mintAccountInfo) {
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
const mintState = (0, spl_token_1.unpackMint)(mintPubkey, mintAccountInfo, spl_token_1.TOKEN_2022_PROGRAM_ID);
|
|
113
|
+
const transferHook = (0, spl_token_1.getTransferHook)(mintState);
|
|
114
|
+
if (!transferHook || transferHook.programId.equals(web3_js_1.PublicKey.default)) {
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
const sourcePubkey = new web3_js_1.PublicKey(source);
|
|
118
|
+
const destinationPubkey = new web3_js_1.PublicKey(destination);
|
|
119
|
+
const ownerPubkey = new web3_js_1.PublicKey(owner);
|
|
120
|
+
const transferAmount = BigInt(amount);
|
|
121
|
+
// Start from a base transferChecked instruction; addExtraAccountMetasForExecute
|
|
122
|
+
// appends the resolved extra accounts, the hook program, and the validation
|
|
123
|
+
// state account in the required order.
|
|
124
|
+
const instruction = (0, spl_token_1.createTransferCheckedInstruction)(sourcePubkey, mintPubkey, destinationPubkey, ownerPubkey, transferAmount, mintState.decimals, [], spl_token_1.TOKEN_2022_PROGRAM_ID);
|
|
125
|
+
const baseKeyCount = instruction.keys.length;
|
|
126
|
+
await (0, spl_token_1.addExtraAccountMetasForExecute)(connection, instruction, transferHook.programId, sourcePubkey, mintPubkey, destinationPubkey, ownerPubkey, transferAmount);
|
|
127
|
+
return toExtraAccountMetas(instruction, baseKeyCount);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Resolve the sRFC-37 Token ACL permissionless-thaw dependencies for a token account.
|
|
131
|
+
*
|
|
132
|
+
* This is generic: it works for ANY allowlist/blocklist (DefaultAccountState) Token-2022 mint
|
|
133
|
+
* gated by the Token ACL program — no issuer is hardcoded. It reads the mint's MintConfig PDA
|
|
134
|
+
* live from the node, and only when permissionless thaw is enabled does it derive the flag /
|
|
135
|
+
* mint-config / thaw-extra-metas PDAs and resolve the gating program's extra account metas (in
|
|
136
|
+
* the exact order the gating program requires, mirroring `resolveExtraMetas`).
|
|
137
|
+
*
|
|
138
|
+
* When the mint is not a Token ACL mint, or permissionless thaw is disabled, this returns
|
|
139
|
+
* `{ applicable: false }` and callers skip the thaw.
|
|
140
|
+
*
|
|
141
|
+
* @param {Connection} connection - a `Connection` (or shim) exposing `getAccountInfo`
|
|
142
|
+
* @param params - the thaw parameters
|
|
143
|
+
* @param {string} params.mint - the Token-2022 mint address
|
|
144
|
+
* @param {string} params.tokenAccount - the token account (ATA) to thaw
|
|
145
|
+
* @param {string} params.tokenAccountOwner - the owner of the token account
|
|
146
|
+
* @param {string} params.authority - the signer invoking the thaw (fee payer / authority)
|
|
147
|
+
* @returns {Promise<ResolvePermissionlessThawResult>} the resolved thaw params, or `{ applicable: false }`
|
|
148
|
+
*/
|
|
149
|
+
async function resolvePermissionlessThaw(connection, params) {
|
|
150
|
+
const { mint, tokenAccount, tokenAccountOwner, authority } = params;
|
|
151
|
+
const mintPubkey = new web3_js_1.PublicKey(mint);
|
|
152
|
+
const tokenAccountPubkey = new web3_js_1.PublicKey(tokenAccount);
|
|
153
|
+
const tokenAccountOwnerPubkey = new web3_js_1.PublicKey(tokenAccountOwner);
|
|
154
|
+
const authorityPubkey = new web3_js_1.PublicKey(authority);
|
|
155
|
+
const tokenAclProgramId = new web3_js_1.PublicKey(constants_1.TOKEN_ACL_PROGRAM_ID);
|
|
156
|
+
// 1. Read the mint's MintConfig PDA. Absent => the mint is not a Token ACL mint.
|
|
157
|
+
const [mintConfigPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.TOKEN_ACL_MINT_CONFIG_SEED), mintPubkey.toBuffer()], tokenAclProgramId);
|
|
158
|
+
const mintConfigAccount = await connection.getAccountInfo(mintConfigPda);
|
|
159
|
+
if (!mintConfigAccount) {
|
|
160
|
+
return { applicable: false };
|
|
161
|
+
}
|
|
162
|
+
// 2. Decode the MintConfig; permissionless thaw must be enabled.
|
|
163
|
+
const mintConfig = decodeTokenAclMintConfig(mintConfigAccount.data);
|
|
164
|
+
if (!mintConfig.enablePermissionlessThaw) {
|
|
165
|
+
return { applicable: false };
|
|
166
|
+
}
|
|
167
|
+
const gatingProgramPubkey = mintConfig.gatingProgram;
|
|
168
|
+
// 3. Derive the remaining PDAs (flag account under Token ACL, thaw extra metas under gating).
|
|
169
|
+
const [flagAccountPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.TOKEN_ACL_FLAG_ACCOUNT_SEED), tokenAccountPubkey.toBuffer()], tokenAclProgramId);
|
|
170
|
+
const [thawExtraMetasPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.TOKEN_ACL_THAW_EXTRA_METAS_SEED), mintPubkey.toBuffer()], gatingProgramPubkey);
|
|
171
|
+
// 4. Build the 6-account can-thaw context (all readonly), then resolve the gating program's
|
|
172
|
+
// extra account metas onto it.
|
|
173
|
+
const canThawContext = [
|
|
174
|
+
{ pubkey: authorityPubkey, isSigner: false, isWritable: false },
|
|
175
|
+
{ pubkey: tokenAccountPubkey, isSigner: false, isWritable: false },
|
|
176
|
+
{ pubkey: mintPubkey, isSigner: false, isWritable: false },
|
|
177
|
+
{ pubkey: tokenAccountOwnerPubkey, isSigner: false, isWritable: false },
|
|
178
|
+
{ pubkey: flagAccountPda, isSigner: false, isWritable: false },
|
|
179
|
+
{ pubkey: thawExtraMetasPda, isSigner: false, isWritable: false },
|
|
180
|
+
];
|
|
181
|
+
const resolvedMetas = await resolveTokenAclExtraMetas(connection, thawExtraMetasPda, canThawContext, gatingProgramPubkey);
|
|
182
|
+
// 5. Drop the first five context accounts; the remainder ([thawExtraMetas, ...extras]) are the
|
|
183
|
+
// accounts appended after the thaw instruction's fixed nine.
|
|
184
|
+
const extraAccounts = resolvedMetas.slice(5).map((meta) => ({
|
|
185
|
+
pubkey: meta.pubkey.toBase58(),
|
|
186
|
+
isSigner: meta.isSigner,
|
|
187
|
+
isWritable: meta.isWritable,
|
|
188
|
+
}));
|
|
189
|
+
return {
|
|
190
|
+
applicable: true,
|
|
191
|
+
gatingProgram: gatingProgramPubkey.toBase58(),
|
|
192
|
+
flagAccount: flagAccountPda.toBase58(),
|
|
193
|
+
mintConfig: mintConfigPda.toBase58(),
|
|
194
|
+
tokenProgram: spl_token_1.TOKEN_2022_PROGRAM_ID.toBase58(),
|
|
195
|
+
systemProgram: web3_js_1.SystemProgram.programId.toBase58(),
|
|
196
|
+
extraAccounts,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4yMDIyUmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdG9rZW4yMDIyUmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBbUVILDhEQVFDO0FBa0ZELGtFQWlEQztBQXNCRCw4REF3RUM7QUExU0QsaURBUTJCO0FBQzNCLDZDQVF5QjtBQUV6QiwyQ0FNcUI7QUE2QnJCOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQix5QkFBeUIsQ0FBQyxLQUF3QjtJQUNoRSxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQzFCLFNBQXVCLEVBQ3ZCLG1CQUFnQyxFQUNLLEVBQUU7UUFDdkMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxFQUFFLGNBQWMsRUFBMkIsQ0FBQztBQUNyRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxXQUFtQyxFQUFFLFlBQW9CO0lBQ3BGLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUM5QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO0tBQzVCLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyx3QkFBd0IsQ0FBQyxJQUFZO0lBQzVDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxNQUFNLGFBQWEsR0FBRyxJQUFJLG1CQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFF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RUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO0tBQ2xFLENBQUM7SUFDRixNQUFNLGFBQWEsR0FBRyxNQUFNLHlCQUF5QixDQUNuRCxVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxtQkFBbUIsQ0FDcEIsQ0FBQztJQUVGLCtGQUErRjtJQUMvRixnRUFBZ0U7SUFDaEUsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUQsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtRQUN2QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7S0FDNUIsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPO1FBQ0wsVUFBVSxFQUFFLElBQUk7UUFDaEIsYUFBYSxFQUFFLG1CQUFtQixDQUFDLFFBQVEsRUFBRTtRQUM3QyxXQUFXLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRTtRQUN0QyxVQUFVLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRTtRQUNwQyxZQUFZLEVBQUUsaUNBQXFCLENBQUMsUUFBUSxFQUFFO1FBQzlDLGFBQWEsRUFBRSx1QkFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7UUFDakQsYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBSZXVzYWJsZSBUb2tlbi0yMDIyIHJlc29sdXRpb24gbG9naWMgKFRyYW5zZmVyIEhvb2sgZXh0cmEgYWNjb3VudHMgYW5kIHNSRkMtMzdcbiAqIFRva2VuIEFDTCBwZXJtaXNzaW9ubGVzcyB0aGF3KSwgZGVjb3VwbGVkIGZyb20gdGhlIGBTb2xgIGNvaW4gY2xhc3Mgc28gYW55IGNhbGxlclxuICogd2l0aCBpdHMgb3duIGFjY291bnQtZmV0Y2hlciAoZS5nLiB3YWxsZXQtcGxhdGZvcm0gcmVhZGluZyBjaGFpbiBzdGF0ZSB2aWEgSU1TIFJQQylcbiAqIGNhbiByZXNvbHZlIHRoZXNlIGRlcGVuZGVuY2llcyBvZmZsaW5lIG9mIHRoZSBTREsncyBub2RlIHRyYW5zcG9ydC5cbiAqXG4gKiBUaGUgcmVzb2x1dGlvbiBmdW5jdGlvbnMgdGFrZSBhIGBDb25uZWN0aW9uYCAob25seSBgZ2V0QWNjb3VudEluZm9gIGlzIHJlcXVpcmVkKTtcbiAqIHtAbGluayBidWlsZFNvbEFjY291bnRDb25uZWN0aW9ufSBhZGFwdHMgYSBwbGFpbiB7QGxpbmsgU29sQWNjb3VudEZldGNoZXJ9IGludG8gdGhlXG4gKiBzaGFwZSBgQHNvbGFuYS9zcGwtdG9rZW5gJ3MgdHJhbnNmZXItaG9vayBoZWxwZXJzIGV4cGVjdC5cbiAqL1xuXG5pbXBvcnQge1xuICBUT0tFTl8yMDIyX1BST0dSQU1fSUQsXG4gIGFkZEV4dHJhQWNjb3VudE1ldGFzRm9yRXhlY3V0ZSxcbiAgY3JlYXRlVHJhbnNmZXJDaGVja2VkSW5zdHJ1Y3Rpb24sXG4gIGdldEV4dHJhQWNjb3VudE1ldGFzLFxuICBnZXRUcmFuc2Zlckhvb2ssXG4gIHJlc29sdmVFeHRyYUFjY291bnRNZXRhLFxuICB1bnBhY2tNaW50LFxufSBmcm9tICdAc29sYW5hL3NwbC10b2tlbic7XG5pbXBvcnQge1xuICBBY2NvdW50SW5mbyxcbiAgQWNjb3VudE1ldGEsXG4gIENvbW1pdG1lbnQsXG4gIENvbm5lY3Rpb24sXG4gIFB1YmxpY0tleSBhcyBTb2xQdWJsaWNLZXksXG4gIFN5c3RlbVByb2dyYW0sXG4gIFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24sXG59IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5cbmltcG9ydCB7XG4gIFRIQVdfUEVSTUlTU0lPTkxFU1NfSURFTVBPVEVOVF9ESVNDUklNSU5BVE9SLFxuICBUT0tFTl9BQ0xfRkxBR19BQ0NPVU5UX1NFRUQsXG4gIFRPS0VOX0FDTF9NSU5UX0NPTkZJR19TRUVELFxuICBUT0tFTl9BQ0xfUFJPR1JBTV9JRCxcbiAgVE9LRU5fQUNMX1RIQVdfRVhUUkFfTUVUQVNfU0VFRCxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRXh0cmFBY2NvdW50TWV0YSB9IGZyb20gJy4vaWZhY2UnO1xuXG4vKipcbiAqIEEgbWluaW1hbCBhY2NvdW50LWZldGNoZXI6IGdpdmVuIGEgYmFzZTU4IGFkZHJlc3MsIHJldHVybiBpdHMgb24tY2hhaW5cbiAqIHtAbGluayBBY2NvdW50SW5mb30gKHdpdGggYGRhdGFgIGFscmVhZHkgZGVjb2RlZCBpbnRvIGEgYEJ1ZmZlcmApIG9yIGBudWxsYFxuICogd2hlbiB0aGUgYWNjb3VudCBkb2VzIG5vdCBleGlzdC4gQ2FsbGVycyBzdXBwbHkgdGhlaXIgb3duIHRyYW5zcG9ydCAoU0RLIG5vZGVcbiAqIHJlcXVlc3QsIHdhbGxldC1wbGF0Zm9ybSBJTVMgUlBDLCBhIGZ1bGwgYENvbm5lY3Rpb25gLCBldGMuKS5cbiAqL1xuZXhwb3J0IHR5cGUgU29sQWNjb3VudEZldGNoZXIgPSAoYWRkcmVzczogc3RyaW5nKSA9PiBQcm9taXNlPEFjY291bnRJbmZvPEJ1ZmZlcj4gfCBudWxsPjtcblxuLyoqXG4gKiBSZXN1bHQgb2YgcmVzb2x2aW5nIHRoZSBzUkZDLTM3IFRva2VuIEFDTCBwZXJtaXNzaW9ubGVzcyB0aGF3IGZvciBhIG1pbnQgLyB0b2tlbiBhY2NvdW50LlxuICpcbiAqIFdoZW4gYGFwcGxpY2FibGVgIGlzIGZhbHNlICh0aGUgbWludCBoYXMgbm8gVG9rZW4gQUNMIE1pbnRDb25maWcsIG9yIHBlcm1pc3Npb25sZXNzIHRoYXcgaXNcbiAqIGRpc2FibGVkKSBhbGwgb3RoZXIgZmllbGRzIGFyZSBvbWl0dGVkIGFuZCB0aGUgY2FsbGVyIHNob3VsZCBub3QgZW1pdCBhIHRoYXcgaW5zdHJ1Y3Rpb24uXG4gKiBXaGVuIGBhcHBsaWNhYmxlYCBpcyB0cnVlLCB0aGUgZmllbGRzIGFyZSByZWFkeSB0byB0aHJlYWQgaW50byB0aGUgdG9rZW4tdHJhbnNmZXIgYnVpbGRlciB2aWFcbiAqIGBwZXJtaXNzaW9ubGVzc1RoYXcoLi4uKWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZVBlcm1pc3Npb25sZXNzVGhhd1Jlc3VsdCB7XG4gIGFwcGxpY2FibGU6IGJvb2xlYW47XG4gIGdhdGluZ1Byb2dyYW0/OiBzdHJpbmc7XG4gIGZsYWdBY2NvdW50Pzogc3RyaW5nO1xuICBtaW50Q29uZmlnPzogc3RyaW5nO1xuICB0b2tlblByb2dyYW0/OiBzdHJpbmc7XG4gIHN5c3RlbVByb2dyYW0/OiBzdHJpbmc7XG4gIGV4dHJhQWNjb3VudHM/OiBFeHRyYUFjY291bnRNZXRhW107XG59XG5cbi8qKlxuICogQnVpbGQgYSBtaW5pbWFsIGBDb25uZWN0aW9uYC1saWtlIHNoaW0gYmFja2VkIGJ5IGEge0BsaW5rIFNvbEFjY291bnRGZXRjaGVyfS5cbiAqXG4gKiBgQHNvbGFuYS9zcGwtdG9rZW5gJ3MgdHJhbnNmZXItaG9vayByZXNvbHV0aW9uIGhlbHBlcnMgb25seSByZXF1aXJlXG4gKiBgZ2V0QWNjb3VudEluZm8ocHVibGljS2V5KWAgcmV0dXJuaW5nIGFuIGBBY2NvdW50SW5mbzxCdWZmZXI+YC4gVGhpcyBhZGFwdHMgYVxuICogcGxhaW4gYWRkcmVzcy1iYXNlZCBmZXRjaGVyIHRvIHRoYXQgc2hhcGUgc28gYW55IHRyYW5zcG9ydCBjYW4gZHJpdmUgdGhlXG4gKiByZXNvbHV0aW9uIGJlbG93IHdpdGhvdXQgb3BlbmluZyBhIGRlZGljYXRlZCBSUEMgY29ubmVjdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1NvbEFjY291bnRGZXRjaGVyfSBmZXRjaCAtIGZldGNoZXIgcmV0dXJuaW5nIGRlY29kZWQgYWNjb3VudCBpbmZvIGJ5IGFkZHJlc3NcbiAqIEByZXR1cm5zIHtDb25uZWN0aW9ufSBhIHNoaW0gZXhwb3NpbmcgYGdldEFjY291bnRJbmZvYCwgY2FzdCB0byBgQ29ubmVjdGlvbmBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU29sQWNjb3VudENvbm5lY3Rpb24oZmV0Y2g6IFNvbEFjY291bnRGZXRjaGVyKTogQ29ubmVjdGlvbiB7XG4gIGNvbnN0IGdldEFjY291bnRJbmZvID0gYXN5bmMgKFxuICAgIHB1YmxpY0tleTogU29sUHVibGljS2V5LFxuICAgIF9jb21taXRtZW50T3JDb25maWc/OiBDb21taXRtZW50XG4gICk6IFByb21pc2U8QWNjb3VudEluZm88QnVmZmVyPiB8IG51bGw+ID0+IHtcbiAgICByZXR1cm4gZmV0Y2gocHVibGljS2V5LnRvQmFzZTU4KCkpO1xuICB9O1xuICByZXR1cm4geyBnZXRBY2NvdW50SW5mbyB9IGFzIHVua25vd24gYXMgQ29ubmVjdGlvbjtcbn1cblxuLyoqXG4gKiBNYXAgdGhlIGV4dHJhIGtleXMgYXBwZW5kZWQgdG8gYSByZXNvbHZlZCB0cmFuc2ZlciBpbnN0cnVjdGlvbiBpbnRvIHRoZVxuICogc2VyaWFsaXphYmxlIHtAbGluayBFeHRyYUFjY291bnRNZXRhfSBzaGFwZS5cbiAqL1xuZnVuY3Rpb24gdG9FeHRyYUFjY291bnRNZXRhcyhpbnN0cnVjdGlvbjogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbiwgYmFzZUtleUNvdW50OiBudW1iZXIpOiBFeHRyYUFjY291bnRNZXRhW10ge1xuICByZXR1cm4gaW5zdHJ1Y3Rpb24ua2V5cy5zbGljZShiYXNlS2V5Q291bnQpLm1hcCgobWV0YSkgPT4gKHtcbiAgICBwdWJrZXk6IG1ldGEucHVia2V5LnRvQmFzZTU4KCksXG4gICAgaXNTaWduZXI6IG1ldGEuaXNTaWduZXIsXG4gICAgaXNXcml0YWJsZTogbWV0YS5pc1dyaXRhYmxlLFxuICB9KSk7XG59XG5cbi8qKlxuICogRGVjb2RlIHRoZSBmaWVsZHMgb2YgYSBUb2tlbiBBQ0wgTWludENvbmZpZyBhY2NvdW50IHdlIGRlcGVuZCBvbi5cbiAqXG4gKiBMYXlvdXQ6IGB1OCBkaXNjcmltaW5hdG9yLCB1OCBidW1wLCBib29sIGVuYWJsZVBlcm1pc3Npb25sZXNzVGhhdywgYm9vbCBlbmFibGVQZXJtaXNzaW9ubGVzc0ZyZWV6ZSxcbiAqIHB1YmtleSBtaW50KDMyKSwgcHVia2V5IGZyZWV6ZUF1dGhvcml0eSgzMiksIHB1YmtleSBnYXRpbmdQcm9ncmFtKDMyKWAuXG4gKi9cbmZ1bmN0aW9uIGRlY29kZVRva2VuQWNsTWludENvbmZpZyhkYXRhOiBCdWZmZXIpOiB7IGVuYWJsZVBlcm1pc3Npb25sZXNzVGhhdzogYm9vbGVhbjsgZ2F0aW5nUHJvZ3JhbTogU29sUHVibGljS2V5IH0ge1xuICBjb25zdCBlbmFibGVQZXJtaXNzaW9ubGVzc1RoYXcgPSBkYXRhWzJdID09PSAxO1xuICBjb25zdCBnYXRpbmdQcm9ncmFtID0gbmV3IFNvbFB1YmxpY0tleShkYXRhLnN1YmFycmF5KDY4LCAxMDApKTtcbiAgcmV0dXJuIHsgZW5hYmxlUGVybWlzc2lvbmxlc3NUaGF3LCBnYXRpbmdQcm9ncmFtIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZ2F0aW5nIHByb2dyYW0ncyB0aGF3IEV4dHJhQWNjb3VudE1ldGFMaXN0IG9udG8gYSBjYW4tdGhhdyBjb250ZXh0LlxuICpcbiAqIE1pcnJvcnMgdGhlIHJlZmVyZW5jZSBgcmVzb2x2ZUV4dHJhTWV0YXNgOiBmZXRjaCB0aGUgZXh0cmEtbWV0YXMgYWNjb3VudCwgdW5wYWNrIGl0c1xuICogRXh0cmFBY2NvdW50TWV0YSBlbnRyaWVzLCB0aGVuIHJlc29sdmUgZWFjaCBvbmUgKGZpeGVkIGFkZHJlc3MsIFBEQSwgb3IgYWNjb3VudC1kYXRhIGRlcml2ZWQpXG4gKiBhZ2FpbnN0IHRoZSBhY2N1bXVsYXRpbmcgbWV0YXMgdXNpbmcgdGhlIHNwbC10b2tlbiB0cmFuc2Zlci1ob29rIGhlbHBlcnMuIFdoZW4gdGhlIGV4dHJhLW1ldGFzXG4gKiBhY2NvdW50IGRvZXMgbm90IGV4aXN0LCB0aGVyZSBhcmUgbm8gZXh0cmFzIHRvIGFwcGVuZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVRva2VuQWNsRXh0cmFNZXRhcyhcbiAgY29ubmVjdGlvbjogQ29ubmVjdGlvbixcbiAgZXh0cmFNZXRhc0FkZHJlc3M6IFNvbFB1YmxpY0tleSxcbiAgcHJldmlvdXNNZXRhczogQWNjb3VudE1ldGFbXSxcbiAgZ2F0aW5nUHJvZ3JhbTogU29sUHVibGljS2V5XG4pOiBQcm9taXNlPEFjY291bnRNZXRhW10+IHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhID0gQnVmZmVyLmZyb20oW1RIQVdfUEVSTUlTU0lPTkxFU1NfSURFTVBPVEVOVF9ESVNDUklNSU5BVE9SXSk7XG4gIGNvbnN0IHJlc29sdmVkTWV0YXM6IEFjY291bnRNZXRhW10gPSBbLi4ucHJldmlvdXNNZXRhc107XG4gIGNvbnN0IGV4dHJhTWV0YXNBY2NvdW50ID0gYXdhaXQgY29ubmVjdGlvbi5nZXRBY2NvdW50SW5mbyhleHRyYU1ldGFzQWRkcmVzcyk7XG4gIGlmICghZXh0cmFNZXRhc0FjY291bnQpIHtcbiAgICByZXR1cm4gcmVzb2x2ZWRNZXRhcztcbiAgfVxuICBjb25zdCBleHRyYUFjY291bnRNZXRhcyA9IGdldEV4dHJhQWNjb3VudE1ldGFzKGV4dHJhTWV0YXNBY2NvdW50KTtcbiAgZm9yIChjb25zdCBleHRyYUFjY291bnRNZXRhIG9mIGV4dHJhQWNjb3VudE1ldGFzKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRNZXRhID0gYXdhaXQgcmVzb2x2ZUV4dHJhQWNjb3VudE1ldGEoXG4gICAgICBjb25uZWN0aW9uLFxuICAgICAgZXh0cmFBY2NvdW50TWV0YSxcbiAgICAgIHJlc29sdmVkTWV0YXMsXG4gICAgICBpbnN0cnVjdGlvbkRhdGEsXG4gICAgICBnYXRpbmdQcm9ncmFtXG4gICAgKTtcbiAgICByZXNvbHZlZE1ldGFzLnB1c2gocmVzb2x2ZWRNZXRhKTtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZWRNZXRhcztcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBUb2tlbi0yMDIyIFRyYW5zZmVyIEhvb2sgZXh0cmEgYWNjb3VudHMgZm9yIGEgc3BlY2lmaWMgdHJhbnNmZXIuXG4gKlxuICogVGhpcyBpcyBnZW5lcmljOiBpdCB3b3JrcyBmb3IgYW55IFRva2VuLTIwMjIgbWludCBieSByZWFkaW5nIHRoZSBtaW50J3NcbiAqIFRyYW5zZmVySG9vayBleHRlbnNpb24gYW5kIHRoZSBob29rIHByb2dyYW0ncyBFeHRyYUFjY291bnRNZXRhTGlzdCBsaXZlIGZyb21cbiAqIHRoZSBub2RlLCB0aGVuIHJlc29sdmluZyBlYWNoIGV4dHJhIGFjY291bnQgKGluY2x1ZGluZyBzZWVkLWRlcml2ZWQgUERBcykgdmlhXG4gKiB0aGUgc3RhbmRhcmQgYHNwbC10cmFuc2Zlci1ob29rLWludGVyZmFjZWAgaGVscGVycy4gVGhlIHJldHVybmVkIG1ldGFzIGFyZSBpblxuICogdGhlIGV4YWN0IG9yZGVyIHRoZSBob29rIHJlcXVpcmVzIGFuZCBhcmUgc3VpdGFibGUgZm9yXG4gKiBgVG9rZW5UcmFuc2Zlci5wYXJhbXMudHJhbnNmZXJIb29rQWNjb3VudHNgLlxuICpcbiAqIFdoZW4gdGhlIG1pbnQgaGFzIG5vIFRyYW5zZmVyIEhvb2ssIHRoaXMgcmV0dXJucyBhbiBlbXB0eSBhcnJheSBhbmQgY2FsbGVycyBjYW5cbiAqIG9taXQgdGhlIHBhcmFtLlxuICpcbiAqIEBwYXJhbSB7Q29ubmVjdGlvbn0gY29ubmVjdGlvbiAtIGEgYENvbm5lY3Rpb25gIChvciBzaGltKSBleHBvc2luZyBgZ2V0QWNjb3VudEluZm9gXG4gKiBAcGFyYW0gcGFyYW1zIC0gdGhlIHRyYW5zZmVyIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMubWludCAtIHRoZSBUb2tlbi0yMDIyIG1pbnQgYWRkcmVzc1xuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5zb3VyY2UgLSB0aGUgc291cmNlIHRva2VuIGFjY291bnQgKHNlbmRlciBBVEEpXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLmRlc3RpbmF0aW9uIC0gdGhlIGRlc3RpbmF0aW9uIHRva2VuIGFjY291bnQgKHJlY2lwaWVudCBBVEEpXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLm93bmVyIC0gdGhlIHNvdXJjZSBhY2NvdW50IG93bmVyIC8gdHJhbnNmZXIgYXV0aG9yaXR5XG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLmFtb3VudCAtIHRoZSByYXcgdHJhbnNmZXIgYW1vdW50IGluIGJhc2UgdW5pdHNcbiAqIEByZXR1cm5zIHtQcm9taXNlPEV4dHJhQWNjb3VudE1ldGFbXT59IG9yZGVyZWQgZXh0cmEgYWNjb3VudCBtZXRhcywgb3IgW10gd2hlbiBubyBob29rXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlVHJhbnNmZXJIb29rQWNjb3VudHMoXG4gIGNvbm5lY3Rpb246IENvbm5lY3Rpb24sXG4gIHBhcmFtczogeyBtaW50OiBzdHJpbmc7IHNvdXJjZTogc3RyaW5nOyBkZXN0aW5hdGlvbjogc3RyaW5nOyBvd25lcjogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9XG4pOiBQcm9taXNlPEV4dHJhQWNjb3VudE1ldGFbXT4ge1xuICBjb25zdCB7IG1pbnQsIHNvdXJjZSwgZGVzdGluYXRpb24sIG93bmVyLCBhbW91bnQgfSA9IHBhcmFtcztcbiAgY29uc3QgbWludFB1YmtleSA9IG5ldyBTb2xQdWJsaWNLZXkobWludCk7XG5cbiAgLy8gUmVhZCB0aGUgbWludCBhbmQgZGV0ZWN0IHdoZXRoZXIgYSBUcmFuc2ZlciBIb29rIGV4dGVuc2lvbiBpcyBjb25maWd1cmVkLlxuICBjb25zdCBtaW50QWNjb3VudEluZm8gPSBhd2FpdCBjb25uZWN0aW9uLmdldEFjY291bnRJbmZvKG1pbnRQdWJrZXkpO1xuICBpZiAoIW1pbnRBY2NvdW50SW5mbykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBtaW50U3RhdGUgPSB1bnBhY2tNaW50KG1pbnRQdWJrZXksIG1pbnRBY2NvdW50SW5mbywgVE9LRU5fMjAyMl9QUk9HUkFNX0lEKTtcbiAgY29uc3QgdHJhbnNmZXJIb29rID0gZ2V0VHJhbnNmZXJIb29rKG1pbnRTdGF0ZSk7XG4gIGlmICghdHJhbnNmZXJIb29rIHx8IHRyYW5zZmVySG9vay5wcm9ncmFtSWQuZXF1YWxzKFNvbFB1YmxpY0tleS5kZWZhdWx0KSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZVB1YmtleSA9IG5ldyBTb2xQdWJsaWNLZXkoc291cmNlKTtcbiAgY29uc3QgZGVzdGluYXRpb25QdWJrZXkgPSBuZXcgU29sUHVibGljS2V5KGRlc3RpbmF0aW9uKTtcbiAgY29uc3Qgb3duZXJQdWJrZXkgPSBuZXcgU29sUHVibGljS2V5KG93bmVyKTtcbiAgY29uc3QgdHJhbnNmZXJBbW91bnQgPSBCaWdJbnQoYW1vdW50KTtcblxuICAvLyBTdGFydCBmcm9tIGEgYmFzZSB0cmFuc2ZlckNoZWNrZWQgaW5zdHJ1Y3Rpb247IGFkZEV4dHJhQWNjb3VudE1ldGFzRm9yRXhlY3V0ZVxuICAvLyBhcHBlbmRzIHRoZSByZXNvbHZlZCBleHRyYSBhY2NvdW50cywgdGhlIGhvb2sgcHJvZ3JhbSwgYW5kIHRoZSB2YWxpZGF0aW9uXG4gIC8vIHN0YXRlIGFjY291bnQgaW4gdGhlIHJlcXVpcmVkIG9yZGVyLlxuICBjb25zdCBpbnN0cnVjdGlvbiA9IGNyZWF0ZVRyYW5zZmVyQ2hlY2tlZEluc3RydWN0aW9uKFxuICAgIHNvdXJjZVB1YmtleSxcbiAgICBtaW50UHVia2V5LFxuICAgIGRlc3RpbmF0aW9uUHVia2V5LFxuICAgIG93bmVyUHVia2V5LFxuICAgIHRyYW5zZmVyQW1vdW50LFxuICAgIG1pbnRTdGF0ZS5kZWNpbWFscyxcbiAgICBbXSxcbiAgICBUT0tFTl8yMDIyX1BST0dSQU1fSURcbiAgKTtcbiAgY29uc3QgYmFzZUtleUNvdW50ID0gaW5zdHJ1Y3Rpb24ua2V5cy5sZW5ndGg7XG4gIGF3YWl0IGFkZEV4dHJhQWNjb3VudE1ldGFzRm9yRXhlY3V0ZShcbiAgICBjb25uZWN0aW9uLFxuICAgIGluc3RydWN0aW9uLFxuICAgIHRyYW5zZmVySG9vay5wcm9ncmFtSWQsXG4gICAgc291cmNlUHVia2V5LFxuICAgIG1pbnRQdWJrZXksXG4gICAgZGVzdGluYXRpb25QdWJrZXksXG4gICAgb3duZXJQdWJrZXksXG4gICAgdHJhbnNmZXJBbW91bnRcbiAgKTtcblxuICByZXR1cm4gdG9FeHRyYUFjY291bnRNZXRhcyhpbnN0cnVjdGlvbiwgYmFzZUtleUNvdW50KTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBzUkZDLTM3IFRva2VuIEFDTCBwZXJtaXNzaW9ubGVzcy10aGF3IGRlcGVuZGVuY2llcyBmb3IgYSB0b2tlbiBhY2NvdW50LlxuICpcbiAqIFRoaXMgaXMgZ2VuZXJpYzogaXQgd29ya3MgZm9yIEFOWSBhbGxvd2xpc3QvYmxvY2tsaXN0IChEZWZhdWx0QWNjb3VudFN0YXRlKSBUb2tlbi0yMDIyIG1pbnRcbiAqIGdhdGVkIGJ5IHRoZSBUb2tlbiBBQ0wgcHJvZ3JhbSDigJQgbm8gaXNzdWVyIGlzIGhhcmRjb2RlZC4gSXQgcmVhZHMgdGhlIG1pbnQncyBNaW50Q29uZmlnIFBEQVxuICogbGl2ZSBmcm9tIHRoZSBub2RlLCBhbmQgb25seSB3aGVuIHBlcm1pc3Npb25sZXNzIHRoYXcgaXMgZW5hYmxlZCBkb2VzIGl0IGRlcml2ZSB0aGUgZmxhZyAvXG4gKiBtaW50LWNvbmZpZyAvIHRoYXctZXh0cmEtbWV0YXMgUERBcyBhbmQgcmVzb2x2ZSB0aGUgZ2F0aW5nIHByb2dyYW0ncyBleHRyYSBhY2NvdW50IG1ldGFzIChpblxuICogdGhlIGV4YWN0IG9yZGVyIHRoZSBnYXRpbmcgcHJvZ3JhbSByZXF1aXJlcywgbWlycm9yaW5nIGByZXNvbHZlRXh0cmFNZXRhc2ApLlxuICpcbiAqIFdoZW4gdGhlIG1pbnQgaXMgbm90IGEgVG9rZW4gQUNMIG1pbnQsIG9yIHBlcm1pc3Npb25sZXNzIHRoYXcgaXMgZGlzYWJsZWQsIHRoaXMgcmV0dXJuc1xuICogYHsgYXBwbGljYWJsZTogZmFsc2UgfWAgYW5kIGNhbGxlcnMgc2tpcCB0aGUgdGhhdy5cbiAqXG4gKiBAcGFyYW0ge0Nvbm5lY3Rpb259IGNvbm5lY3Rpb24gLSBhIGBDb25uZWN0aW9uYCAob3Igc2hpbSkgZXhwb3NpbmcgYGdldEFjY291bnRJbmZvYFxuICogQHBhcmFtIHBhcmFtcyAtIHRoZSB0aGF3IHBhcmFtZXRlcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMubWludCAtIHRoZSBUb2tlbi0yMDIyIG1pbnQgYWRkcmVzc1xuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy50b2tlbkFjY291bnQgLSB0aGUgdG9rZW4gYWNjb3VudCAoQVRBKSB0byB0aGF3XG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLnRva2VuQWNjb3VudE93bmVyIC0gdGhlIG93bmVyIG9mIHRoZSB0b2tlbiBhY2NvdW50XG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLmF1dGhvcml0eSAtIHRoZSBzaWduZXIgaW52b2tpbmcgdGhlIHRoYXcgKGZlZSBwYXllciAvIGF1dGhvcml0eSlcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc29sdmVQZXJtaXNzaW9ubGVzc1RoYXdSZXN1bHQ+fSB0aGUgcmVzb2x2ZWQgdGhhdyBwYXJhbXMsIG9yIGB7IGFwcGxpY2FibGU6IGZhbHNlIH1gXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlUGVybWlzc2lvbmxlc3NUaGF3KFxuICBjb25uZWN0aW9uOiBDb25uZWN0aW9uLFxuICBwYXJhbXM6IHsgbWludDogc3RyaW5nOyB0b2tlbkFjY291bnQ6IHN0cmluZzsgdG9rZW5BY2NvdW50T3duZXI6IHN0cmluZzsgYXV0aG9yaXR5OiBzdHJpbmcgfVxuKTogUHJvbWlzZTxSZXNvbHZlUGVybWlzc2lvbmxlc3NUaGF3UmVzdWx0PiB7XG4gIGNvbnN0IHsgbWludCwgdG9rZW5BY2NvdW50LCB0b2tlbkFjY291bnRPd25lciwgYXV0aG9yaXR5IH0gPSBwYXJhbXM7XG4gIGNvbnN0IG1pbnRQdWJrZXkgPSBuZXcgU29sUHVibGljS2V5KG1pbnQpO1xuICBjb25zdCB0b2tlbkFjY291bnRQdWJrZXkgPSBuZXcgU29sUHVibGljS2V5KHRva2VuQWNjb3VudCk7XG4gIGNvbnN0IHRva2VuQWNjb3VudE93bmVyUHVia2V5ID0gbmV3IFNvbFB1YmxpY0tleSh0b2tlbkFjY291bnRPd25lcik7XG4gIGNvbnN0IGF1dGhvcml0eVB1YmtleSA9IG5ldyBTb2xQdWJsaWNLZXkoYXV0aG9yaXR5KTtcbiAgY29uc3QgdG9rZW5BY2xQcm9ncmFtSWQgPSBuZXcgU29sUHVibGljS2V5KFRPS0VOX0FDTF9QUk9HUkFNX0lEKTtcblxuICAvLyAxLiBSZWFkIHRoZSBtaW50J3MgTWludENvbmZpZyBQREEuIEFic2VudCA9PiB0aGUgbWludCBpcyBub3QgYSBUb2tlbiBBQ0wgbWludC5cbiAgY29uc3QgW21pbnRDb25maWdQZGFdID0gU29sUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgW0J1ZmZlci5mcm9tKFRPS0VOX0FDTF9NSU5UX0NPTkZJR19TRUVEKSwgbWludFB1YmtleS50b0J1ZmZlcigpXSxcbiAgICB0b2tlbkFjbFByb2dyYW1JZFxuICApO1xuICBjb25zdCBtaW50Q29uZmlnQWNjb3VudCA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0QWNjb3VudEluZm8obWludENvbmZpZ1BkYSk7XG4gIGlmICghbWludENvbmZpZ0FjY291bnQpIHtcbiAgICByZXR1cm4geyBhcHBsaWNhYmxlOiBmYWxzZSB9O1xuICB9XG5cbiAgLy8gMi4gRGVjb2RlIHRoZSBNaW50Q29uZmlnOyBwZXJtaXNzaW9ubGVzcyB0aGF3IG11c3QgYmUgZW5hYmxlZC5cbiAgY29uc3QgbWludENvbmZpZyA9IGRlY29kZVRva2VuQWNsTWludENvbmZpZyhtaW50Q29uZmlnQWNjb3VudC5kYXRhKTtcbiAgaWYgKCFtaW50Q29uZmlnLmVuYWJsZVBlcm1pc3Npb25sZXNzVGhhdykge1xuICAgIHJldHVybiB7IGFwcGxpY2FibGU6IGZhbHNlIH07XG4gIH1cbiAgY29uc3QgZ2F0aW5nUHJvZ3JhbVB1YmtleSA9IG1pbnRDb25maWcuZ2F0aW5nUHJvZ3JhbTtcblxuICAvLyAzLiBEZXJpdmUgdGhlIHJlbWFpbmluZyBQREFzIChmbGFnIGFjY291bnQgdW5kZXIgVG9rZW4gQUNMLCB0aGF3IGV4dHJhIG1ldGFzIHVuZGVyIGdhdGluZykuXG4gIGNvbnN0IFtmbGFnQWNjb3VudFBkYV0gPSBTb2xQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICBbQnVmZmVyLmZyb20oVE9LRU5fQUNMX0ZMQUdfQUNDT1VOVF9TRUVEKSwgdG9rZW5BY2NvdW50UHVia2V5LnRvQnVmZmVyKCldLFxuICAgIHRva2VuQWNsUHJvZ3JhbUlkXG4gICk7XG4gIGNvbnN0IFt0aGF3RXh0cmFNZXRhc1BkYV0gPSBTb2xQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICBbQnVmZmVyLmZyb20oVE9LRU5fQUNMX1RIQVdfRVhUUkFfTUVUQVNfU0VFRCksIG1pbnRQdWJrZXkudG9CdWZmZXIoKV0sXG4gICAgZ2F0aW5nUHJvZ3JhbVB1YmtleVxuICApO1xuXG4gIC8vIDQuIEJ1aWxkIHRoZSA2LWFjY291bnQgY2FuLXRoYXcgY29udGV4dCAoYWxsIHJlYWRvbmx5KSwgdGhlbiByZXNvbHZlIHRoZSBnYXRpbmcgcHJvZ3JhbSdzXG4gIC8vICAgIGV4dHJhIGFjY291bnQgbWV0YXMgb250byBpdC5cbiAgY29uc3QgY2FuVGhhd0NvbnRleHQ6IEFjY291bnRNZXRhW10gPSBbXG4gICAgeyBwdWJrZXk6IGF1dGhvcml0eVB1YmtleSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgcHVia2V5OiB0b2tlbkFjY291bnRQdWJrZXksIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSxcbiAgICB7IHB1YmtleTogbWludFB1YmtleSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgcHVia2V5OiB0b2tlbkFjY291bnRPd25lclB1YmtleSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgcHVia2V5OiBmbGFnQWNjb3VudFBkYSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgcHVia2V5OiB0aGF3RXh0cmFNZXRhc1BkYSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICBdO1xuICBjb25zdCByZXNvbHZlZE1ldGFzID0gYXdhaXQgcmVzb2x2ZVRva2VuQWNsRXh0cmFNZXRhcyhcbiAgICBjb25uZWN0aW9uLFxuICAgIHRoYXdFeHRyYU1ldGFzUGRhLFxuICAgIGNhblRoYXdDb250ZXh0LFxuICAgIGdhdGluZ1Byb2dyYW1QdWJrZXlcbiAgKTtcblxuICAvLyA1LiBEcm9wIHRoZSBmaXJzdCBmaXZlIGNvbnRleHQgYWNjb3VudHM7IHRoZSByZW1haW5kZXIgKFt0aGF3RXh0cmFNZXRhcywgLi4uZXh0cmFzXSkgYXJlIHRoZVxuICAvLyAgICBhY2NvdW50cyBhcHBlbmRlZCBhZnRlciB0aGUgdGhhdyBpbnN0cnVjdGlvbidzIGZpeGVkIG5pbmUuXG4gIGNvbnN0IGV4dHJhQWNjb3VudHMgPSByZXNvbHZlZE1ldGFzLnNsaWNlKDUpLm1hcCgobWV0YSkgPT4gKHtcbiAgICBwdWJrZXk6IG1ldGEucHVia2V5LnRvQmFzZTU4KCksXG4gICAgaXNTaWduZXI6IG1ldGEuaXNTaWduZXIsXG4gICAgaXNXcml0YWJsZTogbWV0YS5pc1dyaXRhYmxlLFxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhcHBsaWNhYmxlOiB0cnVlLFxuICAgIGdhdGluZ1Byb2dyYW06IGdhdGluZ1Byb2dyYW1QdWJrZXkudG9CYXNlNTgoKSxcbiAgICBmbGFnQWNjb3VudDogZmxhZ0FjY291bnRQZGEudG9CYXNlNTgoKSxcbiAgICBtaW50Q29uZmlnOiBtaW50Q29uZmlnUGRhLnRvQmFzZTU4KCksXG4gICAgdG9rZW5Qcm9ncmFtOiBUT0tFTl8yMDIyX1BST0dSQU1fSUQudG9CYXNlNTgoKSxcbiAgICBzeXN0ZW1Qcm9ncmFtOiBTeXN0ZW1Qcm9ncmFtLnByb2dyYW1JZC50b0Jhc2U1OCgpLFxuICAgIGV4dHJhQWNjb3VudHMsXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SolTokenExtensions, SolTokenExtensionType } from '@bitgo-beta/statics';
|
|
2
|
+
import { type Mint } from '@solana/spl-token';
|
|
3
|
+
import { Commitment, Connection, PublicKey } from '@solana/web3.js';
|
|
4
|
+
/**
|
|
5
|
+
* Result of reading a Token-2022 mint's extension data.
|
|
6
|
+
*
|
|
7
|
+
* `detectedTypeNames` lists EVERY extension present on the mint — including ones BitGo does
|
|
8
|
+
* not model — so callers can run the onboarding safety gate (`getUnsupportedSolTokenExtensions`).
|
|
9
|
+
* `extensions` is the typed, storable config for the extensions BitGo does model.
|
|
10
|
+
*/
|
|
11
|
+
export interface MintExtensionReadResult {
|
|
12
|
+
detectedTypeNames: string[];
|
|
13
|
+
extensions: SolTokenExtensions;
|
|
14
|
+
}
|
|
15
|
+
/** Human-readable names of every extension type present on the mint. */
|
|
16
|
+
export declare function extensionTypeNames(mintInfo: Mint): string[];
|
|
17
|
+
/** The subset of detected extensions that BitGo models. Pure — unit-testable without chain data. */
|
|
18
|
+
export declare function mapModeledExtensions(detectedTypeNames: readonly string[]): SolTokenExtensionType[];
|
|
19
|
+
/**
|
|
20
|
+
* Enforce the protocol-level incompatibility: Transfer Hook and Confidential
|
|
21
|
+
* Transfer cannot coexist on the same mint. Pure — unit-testable without chain data.
|
|
22
|
+
*/
|
|
23
|
+
export declare function assertExtensionCompatibility(detectedTypeNames: readonly string[]): void;
|
|
24
|
+
/**
|
|
25
|
+
* Parse a decoded Token-2022 `Mint` into BitGo's extension model. Separated from the RPC call
|
|
26
|
+
* so it can be unit-tested against recorded mint fixtures.
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseMintExtensions(mintInfo: Mint): MintExtensionReadResult;
|
|
29
|
+
/** Fetch a Token-2022 mint and parse its extensions. Uses `finalized` commitment rules. */
|
|
30
|
+
export declare function readMintExtensions(connection: Connection, mint: string | PublicKey, commitment?: Commitment): Promise<MintExtensionReadResult>;
|
|
31
|
+
//# sourceMappingURL=tokenExtensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenExtensions.d.ts","sourceRoot":"","sources":["../../../../src/lib/tokenExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAUL,KAAK,IAAI,EAEV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAcD,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,EAAE,CAK3D;AAED,oGAAoG;AACpG,wBAAgB,oBAAoB,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,GAAG,qBAAqB,EAAE,CASlG;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAMvF;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,GAAG,uBAAuB,CAyD3E;AAED,2FAA2F;AAC3F,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,UAAU,GAAE,UAAwB,GACnC,OAAO,CAAC,uBAAuB,CAAC,CAIlC"}
|