@bitgo-beta/sdk-coin-sol 7.6.4-beta.79 → 7.6.4-beta.790
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/bigint-buffer-guard.d.ts.map +1 -0
- package/dist/cjs/src/bigint-buffer-guard.js +29 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/index.js +1 -1
- package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +12 -1
- package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/ataInitializationBuilder.js +231 -0
- package/dist/cjs/src/lib/closeAtaBuilder.d.ts +55 -0
- package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/closeAtaBuilder.js +162 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts +136 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.js +375 -0
- package/dist/{src → cjs/src}/lib/constants.d.ts +97 -2
- package/dist/cjs/src/lib/constants.d.ts.map +1 -0
- package/dist/cjs/src/lib/constants.js +277 -0
- package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +13 -2
- package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/customInstructionBuilder.js +392 -0
- package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
- package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
- package/dist/cjs/src/lib/explainTransactionWasm.js +304 -0
- package/dist/cjs/src/lib/iface.d.ts +549 -0
- package/dist/cjs/src/lib/iface.d.ts.map +1 -0
- package/dist/cjs/src/lib/iface.js +7 -0
- package/dist/{src → cjs/src}/lib/index.d.ts +9 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/index.js +106 -0
- package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +3 -1
- package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/instructionParamsFactory.js +1284 -0
- package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
- package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
- package/dist/{src → cjs/src}/lib/keyPair.d.ts +6 -0
- package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
- package/dist/cjs/src/lib/keyPair.js +112 -0
- package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
- package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
- package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
- package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
- package/dist/cjs/src/lib/scaledUiAmount.d.ts +30 -0
- package/dist/cjs/src/lib/scaledUiAmount.d.ts.map +1 -0
- package/dist/cjs/src/lib/scaledUiAmount.js +112 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts +21 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/config.js +34 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts +14 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/instruction.js +32 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts +27 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.js +196 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts +36 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +211 -0
- package/dist/cjs/src/lib/serialization/index.d.ts +5 -0
- package/dist/cjs/src/lib/serialization/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/index.js +27 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts +9 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.js +58 -0
- package/dist/cjs/src/lib/serialization/wire-transaction.d.ts +14 -0
- package/dist/cjs/src/lib/serialization/wire-transaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/wire-transaction.js +51 -0
- package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +1 -1
- package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/solInstructionFactory.js +1129 -0
- package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingActivateBuilder.js +129 -0
- package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
- package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingDeactivateBuilder.js +214 -0
- package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingDelegateBuilder.js +126 -0
- package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
- package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingWithdrawBuilder.js +87 -0
- package/dist/cjs/src/lib/token2022Resolve.d.ts +106 -0
- package/dist/cjs/src/lib/token2022Resolve.d.ts.map +1 -0
- package/dist/cjs/src/lib/token2022Resolve.js +199 -0
- package/dist/cjs/src/lib/tokenExtensions.d.ts +26 -0
- package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenExtensions.js +109 -0
- package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +27 -1
- package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenTransferBuilder.js +237 -0
- package/dist/{src → cjs/src}/lib/transaction.d.ts +46 -1
- package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/transaction.js +761 -0
- package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +42 -1
- package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilder.js +462 -0
- package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +37 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.js +249 -0
- package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transferBuilder.js +81 -0
- package/dist/cjs/src/lib/transferBuilderV2.d.ts +69 -0
- package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
- package/dist/cjs/src/lib/transferBuilderV2.js +252 -0
- package/dist/{src → cjs/src}/lib/utils.d.ts +16 -0
- package/dist/cjs/src/lib/utils.d.ts.map +1 -0
- package/dist/cjs/src/lib/utils.js +681 -0
- package/dist/cjs/src/lib/v1CustomInstructionBuilder.d.ts +29 -0
- package/dist/cjs/src/lib/v1CustomInstructionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/v1CustomInstructionBuilder.js +36 -0
- package/dist/cjs/src/lib/v1PaymentBuilder.d.ts +36 -0
- package/dist/cjs/src/lib/v1PaymentBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/v1PaymentBuilder.js +70 -0
- package/dist/cjs/src/lib/v1TransactionBuilder.d.ts +253 -0
- package/dist/cjs/src/lib/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/v1TransactionBuilder.js +601 -0
- package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
- package/dist/cjs/src/register.d.ts +5 -0
- package/dist/cjs/src/register.d.ts.map +1 -0
- package/dist/cjs/src/register.js +29 -0
- package/dist/{src → cjs/src}/sol.d.ts +114 -3
- package/dist/cjs/src/sol.d.ts.map +1 -0
- package/dist/cjs/src/sol.js +1707 -0
- package/dist/{src → cjs/src}/solToken.d.ts +7 -0
- package/dist/cjs/src/solToken.d.ts.map +1 -0
- package/dist/cjs/src/solToken.js +79 -0
- package/dist/cjs/src/tsol.d.ts.map +1 -0
- package/dist/cjs/src/tsol.js +24 -0
- package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
- package/dist/cjs/test/fixtures/sol.js +1433 -0
- package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
- package/dist/cjs/test/resources/sol.d.ts.map +1 -0
- package/dist/cjs/test/resources/sol.js +320 -0
- package/dist/cjs/test/unit/ctEnablementVerify.d.ts +2 -0
- package/dist/cjs/test/unit/ctEnablementVerify.d.ts.map +1 -0
- package/dist/cjs/test/unit/ctEnablementVerify.js +142 -0
- package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
- package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
- package/dist/cjs/test/unit/explainTransactionWasm.js +66 -0
- package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
- package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
- package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
- package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
- package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
- package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
- package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
- package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
- package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
- package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
- package/dist/cjs/test/unit/keyPair.js +177 -0
- package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
- package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
- package/dist/cjs/test/unit/register.d.ts +2 -0
- package/dist/cjs/test/unit/register.d.ts.map +1 -0
- package/dist/cjs/test/unit/register.js +65 -0
- package/dist/cjs/test/unit/scaledUiAmount.d.ts +2 -0
- package/dist/cjs/test/unit/scaledUiAmount.d.ts.map +1 -0
- package/dist/cjs/test/unit/scaledUiAmount.js +101 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
- package/dist/cjs/test/unit/serialization/exportV1.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/exportV1.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/exportV1.js +21 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
- package/dist/cjs/test/unit/serialization/transactionV1.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/transactionV1.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/transactionV1.js +136 -0
- package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
- package/dist/cjs/test/unit/sol.js +5364 -0
- package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/solInstructionFactory.js +623 -0
- package/dist/cjs/test/unit/solIntentVersion.d.ts +2 -0
- package/dist/cjs/test/unit/solIntentVersion.d.ts.map +1 -0
- package/dist/cjs/test/unit/solIntentVersion.js +59 -0
- package/dist/cjs/test/unit/solSafeRecovery.d.ts +2 -0
- package/dist/cjs/test/unit/solSafeRecovery.d.ts.map +1 -0
- package/dist/cjs/test/unit/solSafeRecovery.js +202 -0
- package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
- package/dist/cjs/test/unit/solToken.js +37 -0
- package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
- package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
- package/dist/cjs/test/unit/token2022Resolve.js +252 -0
- package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
- package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
- package/dist/cjs/test/unit/tokenExtensions.js +73 -0
- package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction.js +1129 -0
- package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
- package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +508 -0
- package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +343 -0
- package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.js +346 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.js +123 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.js +955 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.js +193 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.js +167 -0
- package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +724 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
- package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +926 -0
- package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +302 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
- package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.js +138 -0
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.js +331 -0
- package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
- package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
- package/dist/cjs/test/unit/utils.js +663 -0
- package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/versionedTransaction.js +207 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/bigint-buffer-guard.d.ts +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/lib/ataInitializationBuilder.d.ts +58 -0
- package/dist/esm/lib/ataInitializationBuilder.d.ts.map +1 -0
- package/dist/esm/lib/ataInitializationBuilder.js +191 -0
- package/dist/esm/lib/closeAtaBuilder.d.ts +55 -0
- package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
- package/dist/esm/lib/closeAtaBuilder.js +155 -0
- package/dist/esm/lib/confidentialTransferBuilder.d.ts +136 -0
- package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/esm/lib/confidentialTransferBuilder.js +368 -0
- package/dist/esm/lib/constants.d.ts +235 -0
- package/dist/esm/lib/constants.d.ts.map +1 -0
- package/dist/esm/lib/constants.js +274 -0
- package/dist/esm/lib/customInstructionBuilder.d.ts +83 -0
- package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +1 -1
- package/dist/esm/lib/customInstructionBuilder.js +385 -0
- package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
- package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
- package/dist/esm/lib/explainTransactionWasm.js +301 -0
- package/dist/esm/lib/iface.d.ts +549 -0
- package/dist/esm/lib/iface.d.ts.map +1 -0
- package/dist/esm/lib/iface.js +3 -0
- package/dist/esm/lib/index.d.ts +31 -0
- package/dist/esm/lib/index.d.ts.map +1 -0
- package/dist/esm/lib/index.js +31 -0
- package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
- package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
- package/dist/esm/lib/instructionParamsFactory.js +1276 -0
- package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
- package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
- package/dist/esm/lib/keyPair.d.ts +32 -0
- package/dist/esm/lib/keyPair.d.ts.map +1 -0
- package/dist/esm/lib/keyPair.js +75 -0
- package/dist/esm/lib/messages/index.d.ts +2 -0
- package/dist/esm/lib/messages/index.js +2 -0
- package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
- package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
- package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
- package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
- package/dist/esm/lib/scaledUiAmount.d.ts +30 -0
- package/dist/esm/lib/scaledUiAmount.d.ts.map +1 -0
- package/dist/esm/lib/scaledUiAmount.js +108 -0
- package/dist/esm/lib/serialization/codecs/v1/config.d.ts +21 -0
- package/dist/esm/lib/serialization/codecs/v1/config.d.ts.map +1 -0
- package/dist/esm/lib/serialization/codecs/v1/config.js +30 -0
- package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts +14 -0
- package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/codecs/v1/instruction.js +29 -0
- package/dist/esm/lib/serialization/codecs/v1/message.d.ts +27 -0
- package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -0
- package/dist/esm/lib/serialization/codecs/v1/message.js +188 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +36 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.js +208 -0
- package/dist/esm/lib/serialization/index.d.ts +5 -0
- package/dist/esm/lib/serialization/index.d.ts.map +1 -0
- package/dist/esm/lib/serialization/index.js +5 -0
- package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
- package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
- package/dist/esm/lib/serialization/wire-transaction.d.ts +14 -0
- package/dist/esm/lib/serialization/wire-transaction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/wire-transaction.js +48 -0
- package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
- package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
- package/dist/esm/lib/solInstructionFactory.js +1123 -0
- package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
- package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingActivateBuilder.js +122 -0
- package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
- package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
- package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
- package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingDeactivateBuilder.js +207 -0
- package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
- package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingDelegateBuilder.js +119 -0
- package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
- package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
- package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
- package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingWithdrawBuilder.js +80 -0
- package/dist/esm/lib/token2022Resolve.d.ts +106 -0
- package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
- package/dist/esm/lib/token2022Resolve.js +194 -0
- package/dist/esm/lib/tokenExtensions.d.ts +26 -0
- package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
- package/dist/esm/lib/tokenExtensions.js +103 -0
- package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
- package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/esm/lib/tokenTransferBuilder.js +230 -0
- package/dist/esm/lib/transaction.d.ts +148 -0
- package/dist/esm/lib/transaction.d.ts.map +1 -0
- package/dist/esm/lib/transaction.js +754 -0
- package/dist/esm/lib/transactionBuilder.d.ts +169 -0
- package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/esm/lib/transactionBuilder.js +455 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts +152 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/esm/lib/transactionBuilderFactory.js +245 -0
- package/dist/esm/lib/transferBuilder.d.ts +26 -0
- package/dist/{src → esm}/lib/transferBuilder.d.ts.map +1 -1
- package/dist/esm/lib/transferBuilder.js +74 -0
- package/dist/esm/lib/transferBuilderV2.d.ts +69 -0
- package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
- package/dist/esm/lib/transferBuilderV2.js +245 -0
- package/dist/esm/lib/utils.d.ts +216 -0
- package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
- package/dist/esm/lib/utils.js +642 -0
- package/dist/esm/lib/v1CustomInstructionBuilder.d.ts +29 -0
- package/dist/esm/lib/v1CustomInstructionBuilder.d.ts.map +1 -0
- package/dist/esm/lib/v1CustomInstructionBuilder.js +32 -0
- package/dist/esm/lib/v1PaymentBuilder.d.ts +36 -0
- package/dist/esm/lib/v1PaymentBuilder.d.ts.map +1 -0
- package/dist/esm/lib/v1PaymentBuilder.js +63 -0
- package/dist/esm/lib/v1TransactionBuilder.d.ts +253 -0
- package/dist/esm/lib/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/esm/lib/v1TransactionBuilder.js +591 -0
- package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
- package/dist/esm/lib/walletInitializationBuilder.js +64 -0
- package/dist/esm/register.d.ts +5 -0
- package/dist/esm/register.d.ts.map +1 -0
- package/dist/esm/register.js +24 -0
- package/dist/esm/sol.d.ts +351 -0
- package/dist/esm/sol.d.ts.map +1 -0
- package/dist/esm/sol.js +1666 -0
- package/dist/esm/solToken.d.ts +44 -0
- package/dist/esm/solToken.d.ts.map +1 -0
- package/dist/esm/solToken.js +75 -0
- package/dist/esm/tsol.d.ts +11 -0
- package/dist/esm/tsol.js +20 -0
- package/package.json +37 -17
- package/dist/src/config/token2022StaticConfig.d.ts +0 -3
- package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
- package/dist/src/config/token2022StaticConfig.js +0 -50
- package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
- package/dist/src/lib/ataInitializationBuilder.js +0 -196
- package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
- package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
- package/dist/src/lib/closeAtaBuilder.js +0 -69
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -171
- package/dist/src/lib/customInstructionBuilder.js +0 -289
- package/dist/src/lib/iface.d.ts +0 -244
- package/dist/src/lib/iface.d.ts.map +0 -1
- package/dist/src/lib/iface.js +0 -7
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -77
- package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
- package/dist/src/lib/instructionParamsFactory.js +0 -1036
- package/dist/src/lib/jitoStakePoolOperations.js +0 -200
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -63
- package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
- package/dist/src/lib/solInstructionFactory.js +0 -572
- package/dist/src/lib/stakingActivateBuilder.js +0 -120
- package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
- package/dist/src/lib/stakingDeactivateBuilder.js +0 -208
- package/dist/src/lib/stakingDelegateBuilder.js +0 -120
- package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
- package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
- package/dist/src/lib/token2022Config.d.ts +0 -44
- package/dist/src/lib/token2022Config.d.ts.map +0 -1
- package/dist/src/lib/token2022Config.js +0 -27
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
- package/dist/src/lib/tokenTransferBuilder.js +0 -188
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -595
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -380
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilderFactory.js +0 -202
- package/dist/src/lib/transferBuilder.js +0 -70
- package/dist/src/lib/transferBuilderV2.d.ts +0 -43
- package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
- package/dist/src/lib/transferBuilderV2.js +0 -210
- package/dist/src/lib/utils.js +0 -589
- package/dist/src/lib/walletInitializationBuilder.js +0 -71
- package/dist/src/register.d.ts +0 -3
- package/dist/src/register.d.ts.map +0 -1
- package/dist/src/register.js +0 -15
- package/dist/src/sol.d.ts.map +0 -1
- package/dist/src/sol.js +0 -1324
- package/dist/src/solToken.d.ts.map +0 -1
- package/dist/src/solToken.js +0 -69
- package/dist/src/tsol.js +0 -24
- package/dist/test/fixtures/sol.js +0 -1433
- package/dist/test/resources/sol.d.ts.map +0 -1
- package/dist/test/resources/sol.js +0 -320
- package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
- package/dist/test/unit/fixtures/solBackupKey.js +0 -8
- package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
- package/dist/test/unit/getBuilderFactory.js +0 -10
- package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
- package/dist/test/unit/instructionParamsFactory.js +0 -412
- package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
- package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
- package/dist/test/unit/keyPair.js +0 -177
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
- package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
- package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
- package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
- package/dist/test/unit/sol.js +0 -3180
- package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
- package/dist/test/unit/solInstructionFactory.js +0 -454
- package/dist/test/unit/solToken.d.ts.map +0 -1
- package/dist/test/unit/solToken.js +0 -31
- package/dist/test/unit/transaction.d.ts.map +0 -1
- package/dist/test/unit/transaction.js +0 -983
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
- package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
- package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
- package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
- package/dist/test/unit/utils.js +0 -517
- package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
- package/dist/test/unit/versionedTransaction.js +0 -207
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
- /package/dist/{src → cjs/src}/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
- /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
- /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
- /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
- /package/dist/{src → esm}/index.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/tsol.d.ts.map +0 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
require("should");
|
|
37
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
38
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
39
|
+
const constants_1 = require("../../src/lib/constants");
|
|
40
|
+
const token2022Resolve_1 = require("../../src/lib/token2022Resolve");
|
|
41
|
+
const resources = __importStar(require("../resources/sol"));
|
|
42
|
+
const makeConnection = (accounts) => {
|
|
43
|
+
const fetch = async (address) => {
|
|
44
|
+
const account = accounts[address];
|
|
45
|
+
if (!account) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
executable: false,
|
|
50
|
+
owner: new web3_js_1.PublicKey(account.owner),
|
|
51
|
+
lamports: 1,
|
|
52
|
+
data: account.data,
|
|
53
|
+
rentEpoch: 0,
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
return (0, token2022Resolve_1.buildSolAccountConnection)(fetch);
|
|
57
|
+
};
|
|
58
|
+
// Token-2022 mint account layout: 82-byte base MintLayout, padded to the 165-byte
|
|
59
|
+
// account size, an account-type byte (1 = Mint), then the extension TLV. TransferHook
|
|
60
|
+
// is extension type 14 with 64 bytes (authority + programId).
|
|
61
|
+
const buildMintWithTransferHook = (mintDecimals, hookProgram) => {
|
|
62
|
+
const data = Buffer.alloc(234);
|
|
63
|
+
data.writeUInt8(mintDecimals, 44); // MintLayout.decimals
|
|
64
|
+
data.writeUInt8(1, 45); // MintLayout.isInitialized
|
|
65
|
+
data.writeUInt8(1, 165); // AccountType.Mint
|
|
66
|
+
data.writeUInt16LE(14, 166); // extension type: TransferHook
|
|
67
|
+
data.writeUInt16LE(64, 168); // extension length
|
|
68
|
+
hookProgram.toBuffer().copy(data, 202); // programId occupies [202, 234)
|
|
69
|
+
return data;
|
|
70
|
+
};
|
|
71
|
+
// Plain SPL/Token-2022 mint with no extensions (base MintLayout only).
|
|
72
|
+
const buildBaseMint = (mintDecimals) => {
|
|
73
|
+
const data = Buffer.alloc(82);
|
|
74
|
+
data.writeUInt8(mintDecimals, 44);
|
|
75
|
+
data.writeUInt8(1, 45);
|
|
76
|
+
return data;
|
|
77
|
+
};
|
|
78
|
+
// MintConfig layout: u8 discriminator, u8 bump, bool thaw, bool freeze, pubkey mint(32),
|
|
79
|
+
// pubkey freezeAuthority(32), pubkey gatingProgram(32). Total 100 bytes.
|
|
80
|
+
const buildMintConfig = (mint, enablePermissionlessThaw, gateProgram) => {
|
|
81
|
+
const data = Buffer.alloc(100);
|
|
82
|
+
data.writeUInt8(1, 0); // discriminator
|
|
83
|
+
data.writeUInt8(255, 1); // bump
|
|
84
|
+
data.writeUInt8(enablePermissionlessThaw ? 1 : 0, 2);
|
|
85
|
+
data.writeUInt8(0, 3); // enablePermissionlessFreeze
|
|
86
|
+
mint.toBuffer().copy(data, 4);
|
|
87
|
+
new web3_js_1.PublicKey(constants_1.TOKEN_ACL_PROGRAM_ID).toBuffer().copy(data, 36); // freezeAuthority
|
|
88
|
+
gateProgram.toBuffer().copy(data, 68);
|
|
89
|
+
return data;
|
|
90
|
+
};
|
|
91
|
+
// ExtraAccountMetaList account: u64 discriminator + u32 length + u32 count, then 35-byte
|
|
92
|
+
// ExtraAccountMeta entries (discriminator 0 = fixed address).
|
|
93
|
+
const buildExtraAccountMetaList = (metas) => {
|
|
94
|
+
const headerSize = 16;
|
|
95
|
+
const data = Buffer.alloc(headerSize + metas.length * 35);
|
|
96
|
+
data.writeUInt32LE(4 + metas.length * 35, 8); // length
|
|
97
|
+
data.writeUInt32LE(metas.length, 12); // count
|
|
98
|
+
let offset = headerSize;
|
|
99
|
+
for (const meta of metas) {
|
|
100
|
+
data.writeUInt8(0, offset); // discriminator: fixed address
|
|
101
|
+
new web3_js_1.PublicKey(meta.pubkey).toBuffer().copy(data, offset + 1); // addressConfig
|
|
102
|
+
data.writeUInt8(meta.isSigner ? 1 : 0, offset + 33);
|
|
103
|
+
data.writeUInt8(meta.isWritable ? 1 : 0, offset + 34);
|
|
104
|
+
offset += 35;
|
|
105
|
+
}
|
|
106
|
+
return data;
|
|
107
|
+
};
|
|
108
|
+
describe('token2022Resolve (standalone)', () => {
|
|
109
|
+
const mintAddress = resources.sol2022TokenTransfers.mint;
|
|
110
|
+
const sourceAddress = resources.associatedTokenAccountsForSol2022.accounts[0].ata;
|
|
111
|
+
const destinationAddress = resources.sol2022TokenTransfers.source;
|
|
112
|
+
const ownerAddress = resources.sol2022TokenTransfers.owner;
|
|
113
|
+
const decimals = 6;
|
|
114
|
+
// Arbitrary but valid base58 pubkeys used purely as fixtures.
|
|
115
|
+
const hookProgramId = new web3_js_1.PublicKey('GbQ8ZiEFzGGTeYoXwtZtcoxwPcMyUcmZDduMVNdUPKpX');
|
|
116
|
+
describe('resolveTransferHookAccounts', () => {
|
|
117
|
+
const extraMetas = [
|
|
118
|
+
{ pubkey: '98wFF5MpMjMQbfDF2MPzo8LCGX37unZR1ohRA1mU9GmJ', isSigner: false, isWritable: true },
|
|
119
|
+
{ pubkey: '48n7YGEww7fKMfJ5gJ3sQC3rM6RWGjpUsghqVfXVkR5A', isSigner: false, isWritable: false },
|
|
120
|
+
{ pubkey: '9sQhAH7vV3RKTCK13VY4EiNjs3qBq1srSYxdNufdAAXm', isSigner: false, isWritable: false },
|
|
121
|
+
];
|
|
122
|
+
it('resolves the ordered extra accounts for a mint with a transfer hook', async function () {
|
|
123
|
+
const validationStatePubkey = (0, spl_token_1.getExtraAccountMetaAddress)(new web3_js_1.PublicKey(mintAddress), hookProgramId);
|
|
124
|
+
const connection = makeConnection({
|
|
125
|
+
[mintAddress]: {
|
|
126
|
+
data: buildMintWithTransferHook(decimals, hookProgramId),
|
|
127
|
+
owner: spl_token_1.TOKEN_2022_PROGRAM_ID.toBase58(),
|
|
128
|
+
},
|
|
129
|
+
[validationStatePubkey.toBase58()]: {
|
|
130
|
+
data: buildExtraAccountMetaList(extraMetas),
|
|
131
|
+
owner: hookProgramId.toBase58(),
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
const result = await (0, token2022Resolve_1.resolveTransferHookAccounts)(connection, {
|
|
135
|
+
mint: mintAddress,
|
|
136
|
+
source: sourceAddress,
|
|
137
|
+
destination: destinationAddress,
|
|
138
|
+
owner: ownerAddress,
|
|
139
|
+
amount: '500000',
|
|
140
|
+
});
|
|
141
|
+
// extra accounts, then the hook program, then the validation state account
|
|
142
|
+
result.should.have.length(extraMetas.length + 2);
|
|
143
|
+
result.slice(0, extraMetas.length).should.deepEqual(extraMetas);
|
|
144
|
+
result[extraMetas.length].should.deepEqual({
|
|
145
|
+
pubkey: hookProgramId.toBase58(),
|
|
146
|
+
isSigner: false,
|
|
147
|
+
isWritable: false,
|
|
148
|
+
});
|
|
149
|
+
result[extraMetas.length + 1].should.deepEqual({
|
|
150
|
+
pubkey: validationStatePubkey.toBase58(),
|
|
151
|
+
isSigner: false,
|
|
152
|
+
isWritable: false,
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
it('returns an empty array for a mint without a transfer hook', async function () {
|
|
156
|
+
const connection = makeConnection({
|
|
157
|
+
[mintAddress]: {
|
|
158
|
+
data: buildBaseMint(decimals),
|
|
159
|
+
owner: spl_token_1.TOKEN_2022_PROGRAM_ID.toBase58(),
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
const result = await (0, token2022Resolve_1.resolveTransferHookAccounts)(connection, {
|
|
163
|
+
mint: mintAddress,
|
|
164
|
+
source: sourceAddress,
|
|
165
|
+
destination: destinationAddress,
|
|
166
|
+
owner: ownerAddress,
|
|
167
|
+
amount: '500000',
|
|
168
|
+
});
|
|
169
|
+
result.should.deepEqual([]);
|
|
170
|
+
});
|
|
171
|
+
it('returns an empty array when the mint account is not found', async function () {
|
|
172
|
+
const connection = makeConnection({});
|
|
173
|
+
const result = await (0, token2022Resolve_1.resolveTransferHookAccounts)(connection, {
|
|
174
|
+
mint: mintAddress,
|
|
175
|
+
source: sourceAddress,
|
|
176
|
+
destination: destinationAddress,
|
|
177
|
+
owner: ownerAddress,
|
|
178
|
+
amount: '500000',
|
|
179
|
+
});
|
|
180
|
+
result.should.deepEqual([]);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
describe('resolvePermissionlessThaw', () => {
|
|
184
|
+
const tokenAccount = resources.associatedTokenAccountsForSol2022.accounts[0].ata;
|
|
185
|
+
const tokenAccountOwner = resources.sol2022TokenTransfers.owner;
|
|
186
|
+
const authority = resources.sol2022TokenTransfers.source;
|
|
187
|
+
const gatingProgram = new web3_js_1.PublicKey('GbQ8ZiEFzGGTeYoXwtZtcoxwPcMyUcmZDduMVNdUPKpX');
|
|
188
|
+
const tokenAclProgramId = new web3_js_1.PublicKey(constants_1.TOKEN_ACL_PROGRAM_ID);
|
|
189
|
+
const extraMetas = [
|
|
190
|
+
{ pubkey: '98wFF5MpMjMQbfDF2MPzo8LCGX37unZR1ohRA1mU9GmJ', isSigner: false, isWritable: true },
|
|
191
|
+
{ pubkey: '9sQhAH7vV3RKTCK13VY4EiNjs3qBq1srSYxdNufdAAXm', isSigner: false, isWritable: false },
|
|
192
|
+
];
|
|
193
|
+
const [mintConfigPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.TOKEN_ACL_MINT_CONFIG_SEED), new web3_js_1.PublicKey(mintAddress).toBuffer()], tokenAclProgramId);
|
|
194
|
+
const [flagAccountPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.TOKEN_ACL_FLAG_ACCOUNT_SEED), new web3_js_1.PublicKey(tokenAccount).toBuffer()], tokenAclProgramId);
|
|
195
|
+
const [thawExtraMetasPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.TOKEN_ACL_THAW_EXTRA_METAS_SEED), new web3_js_1.PublicKey(mintAddress).toBuffer()], gatingProgram);
|
|
196
|
+
it('resolves the thaw params for a Token ACL mint with permissionless thaw enabled', async function () {
|
|
197
|
+
const connection = makeConnection({
|
|
198
|
+
[mintConfigPda.toBase58()]: {
|
|
199
|
+
data: buildMintConfig(new web3_js_1.PublicKey(mintAddress), true, gatingProgram),
|
|
200
|
+
owner: constants_1.TOKEN_ACL_PROGRAM_ID,
|
|
201
|
+
},
|
|
202
|
+
[thawExtraMetasPda.toBase58()]: {
|
|
203
|
+
data: buildExtraAccountMetaList(extraMetas),
|
|
204
|
+
owner: gatingProgram.toBase58(),
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
const result = await (0, token2022Resolve_1.resolvePermissionlessThaw)(connection, {
|
|
208
|
+
mint: mintAddress,
|
|
209
|
+
tokenAccount,
|
|
210
|
+
tokenAccountOwner,
|
|
211
|
+
authority,
|
|
212
|
+
});
|
|
213
|
+
result.applicable.should.be.true();
|
|
214
|
+
result.gatingProgram.should.equal(gatingProgram.toBase58());
|
|
215
|
+
result.flagAccount.should.equal(flagAccountPda.toBase58());
|
|
216
|
+
result.mintConfig.should.equal(mintConfigPda.toBase58());
|
|
217
|
+
result.tokenProgram.should.equal(spl_token_1.TOKEN_2022_PROGRAM_ID.toBase58());
|
|
218
|
+
result.systemProgram.should.equal(web3_js_1.SystemProgram.programId.toBase58());
|
|
219
|
+
// extra accounts = [thawExtraMetas, ...resolved fixed-address extras]
|
|
220
|
+
result.extraAccounts.should.deepEqual([
|
|
221
|
+
{ pubkey: thawExtraMetasPda.toBase58(), isSigner: false, isWritable: false },
|
|
222
|
+
...extraMetas,
|
|
223
|
+
]);
|
|
224
|
+
});
|
|
225
|
+
it('returns applicable:false for a mint with no Token ACL MintConfig', async function () {
|
|
226
|
+
const connection = makeConnection({});
|
|
227
|
+
const result = await (0, token2022Resolve_1.resolvePermissionlessThaw)(connection, {
|
|
228
|
+
mint: mintAddress,
|
|
229
|
+
tokenAccount,
|
|
230
|
+
tokenAccountOwner,
|
|
231
|
+
authority,
|
|
232
|
+
});
|
|
233
|
+
result.should.deepEqual({ applicable: false });
|
|
234
|
+
});
|
|
235
|
+
it('returns applicable:false when permissionless thaw is disabled', async function () {
|
|
236
|
+
const connection = makeConnection({
|
|
237
|
+
[mintConfigPda.toBase58()]: {
|
|
238
|
+
data: buildMintConfig(new web3_js_1.PublicKey(mintAddress), false, gatingProgram),
|
|
239
|
+
owner: constants_1.TOKEN_ACL_PROGRAM_ID,
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
const result = await (0, token2022Resolve_1.resolvePermissionlessThaw)(connection, {
|
|
243
|
+
mint: mintAddress,
|
|
244
|
+
tokenAccount,
|
|
245
|
+
tokenAccountOwner,
|
|
246
|
+
authority,
|
|
247
|
+
});
|
|
248
|
+
result.should.deepEqual({ applicable: false });
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4yMDIyUmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90b2tlbjIwMjJSZXNvbHZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0JBQWdCO0FBRWhCLGlEQUFzRjtBQUN0Riw2Q0FBdUU7QUFFdkUsdURBS2lDO0FBRWpDLHFFQUt3QztBQUN4Qyw0REFBOEM7QUFLOUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxRQUFxQyxFQUFjLEVBQUU7SUFDM0UsTUFBTSxLQUFLLEdBQXNCLEtBQUssRUFBRSxPQUFlLEVBQUUsRUFBRTtRQUN6RCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTztZQUNMLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLEtBQUssRUFBRSxJQUFJLG1CQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNuQyxRQUFRLEVBQUUsQ0FBQztZQUNYLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixTQUFTLEVBQUUsQ0FBQztTQUNiLENBQUM7SUFDSixDQUFDLENBQUM7SUFDRixPQUFPLElBQUEsNENBQXlCLEVBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsa0ZBQWtGO0FBQ2xGLHNGQUFzRjtBQUN0Riw4REFBOEQ7QUFDOUQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLFlBQW9CLEVBQUUsV0FBc0IsRUFBVSxFQUFFO0lBQ3pGLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7SUFDekQs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QUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLCtEQUErRCxFQUFFLEtBQUs7WUFDdkUsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDO2dCQUNoQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFO29CQUMxQixJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDO29CQUN2RSxLQUFLLEVBQUUsZ0NBQW9CO2lCQUM1QjthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSw0Q0FBeUIsRUFBQyxVQUFVLEVBQUU7Z0JBQ3pELElBQUksRUFBRSxXQUFXO2dCQUNqQixZQUFZO2dCQUNaLGlCQUFpQjtnQkFDakIsU0FBUzthQUNWLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuXG5pbXBvcnQgeyBnZXRFeHRyYUFjY291bnRNZXRhQWRkcmVzcywgVE9LRU5fMjAyMl9QUk9HUkFNX0lEIH0gZnJvbSAnQHNvbGFuYS9zcGwtdG9rZW4nO1xuaW1wb3J0IHsgQ29ubmVjdGlvbiwgUHVibGljS2V5LCBTeXN0ZW1Qcm9ncmFtIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcblxuaW1wb3J0IHtcbiAgVE9LRU5fQUNMX0ZMQUdfQUNDT1VOVF9TRUVELFxuICBUT0tFTl9BQ0xfTUlOVF9DT05GSUdfU0VFRCxcbiAgVE9LRU5fQUNMX1BST0dSQU1fSUQsXG4gIFRPS0VOX0FDTF9USEFXX0VYVFJBX01FVEFTX1NFRUQsXG59IGZyb20gJy4uLy4uL3NyYy9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IEV4dHJhQWNjb3VudE1ldGEgfSBmcm9tICcuLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB7XG4gIFNvbEFjY291bnRGZXRjaGVyLFxuICBidWlsZFNvbEFjY291bnRDb25uZWN0aW9uLFxuICByZXNvbHZlUGVybWlzc2lvbmxlc3NUaGF3LFxuICByZXNvbHZlVHJhbnNmZXJIb29rQWNjb3VudHMsXG59IGZyb20gJy4uLy4uL3NyYy9saWIvdG9rZW4yMDIyUmVzb2x2ZSc7XG5pbXBvcnQgKiBhcyByZXNvdXJjZXMgZnJvbSAnLi4vcmVzb3VyY2VzL3NvbCc7XG5cbi8vIEJ1aWxkIGEgZmFrZSBgQ29ubmVjdGlvbmAgYmFja2VkIGJ5IGFuIGluLW1lbW9yeSBhZGRyZXNzLT5hY2NvdW50IG1hcCB2aWEgdGhlXG4vLyBwcm9kdWN0aW9uIGBidWlsZFNvbEFjY291bnRDb25uZWN0aW9uYCBzaGltIChhbHNvIGV4ZXJjaXNpbmcgdGhhdCBmYWN0b3J5KS5cbnR5cGUgRmFrZUFjY291bnQgPSB7IGRhdGE6IEJ1ZmZlcjsgb3duZXI6IHN0cmluZyB9O1xuY29uc3QgbWFrZUNvbm5lY3Rpb24gPSAoYWNjb3VudHM6IFJlY29yZDxzdHJpbmcsIEZha2VBY2NvdW50Pik6IENvbm5lY3Rpb24gPT4ge1xuICBjb25zdCBmZXRjaDogU29sQWNjb3VudEZldGNoZXIgPSBhc3luYyAoYWRkcmVzczogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgYWNjb3VudCA9IGFjY291bnRzW2FkZHJlc3NdO1xuICAgIGlmICghYWNjb3VudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBleGVjdXRhYmxlOiBmYWxzZSxcbiAgICAgIG93bmVyOiBuZXcgUHVibGljS2V5KGFjY291bnQub3duZXIpLFxuICAgICAgbGFtcG9ydHM6IDEsXG4gICAgICBkYXRhOiBhY2NvdW50LmRhdGEsXG4gICAgICByZW50RXBvY2g6IDAsXG4gICAgfTtcbiAgfTtcbiAgcmV0dXJuIGJ1aWxkU29sQWNjb3VudENvbm5lY3Rpb24oZmV0Y2gpO1xufTtcblxuLy8gVG9rZW4tMjAyMiBtaW50IGFjY291bnQgbGF5b3V0OiA4Mi1ieXRlIGJhc2UgTWludExheW91dCwgcGFkZGVkIHRvIHRoZSAxNjUtYnl0ZVxuLy8gYWNjb3VudCBzaXplLCBhbiBhY2NvdW50LXR5cGUgYnl0ZSAoMSA9IE1pbnQpLCB0aGVuIHRoZSBleHRlbnNpb24gVExWLiBUcmFuc2Zlckhvb2tcbi8vIGlzIGV4dGVuc2lvbiB0eXBlIDE0IHdpdGggNjQgYnl0ZXMgKGF1dGhvcml0eSArIHByb2dyYW1JZCkuXG5jb25zdCBidWlsZE1pbnRXaXRoVHJhbnNmZXJIb29rID0gKG1pbnREZWNpbWFsczogbnVtYmVyLCBob29rUHJvZ3JhbTogUHVibGljS2V5KTogQnVmZmVyID0+IHtcbiAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYygyMzQpO1xuICBkYXRhLndyaXRlVUludDgobWludERlY2ltYWxzLCA0NCk7IC8vIE1pbnRMYXlvdXQuZGVjaW1hbHNcbiAgZGF0YS53cml0ZVVJbnQ4KDEsIDQ1KTsgLy8gTWludExheW91dC5pc0luaXRpYWxpemVkXG4gIGRhdGEud3JpdGVVSW50OCgxLCAxNjUpOyAvLyBBY2NvdW50VHlwZS5NaW50XG4gIGRhdGEud3JpdGVVSW50MTZMRSgxNCwgMTY2KTsgLy8gZXh0ZW5zaW9uIHR5cGU6IFRyYW5zZmVySG9va1xuICBkYXRhLndyaXRlVUludDE2TEUoNjQsIDE2OCk7IC8vIGV4dGVuc2lvbiBsZW5ndGhcbiAgaG9va1Byb2dyYW0udG9CdWZmZXIoKS5jb3B5KGRhdGEsIDIwMik7IC8vIHByb2dyYW1JZCBvY2N1cGllcyBbMjAyLCAyMzQpXG4gIHJldHVybiBkYXRhO1xufTtcblxuLy8gUGxhaW4gU1BML1Rva2VuLTIwMjIgbWludCB3aXRoIG5vIGV4dGVuc2lvbnMgKGJhc2UgTWludExheW91dCBvbmx5KS5cbmNvbnN0IGJ1aWxkQmFzZU1pbnQgPSAobWludERlY2ltYWxzOiBudW1iZXIpOiBCdWZmZXIgPT4ge1xuICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKDgyKTtcbiAgZGF0YS53cml0ZVVJbnQ4KG1pbnREZWNpbWFscywgNDQpO1xuICBkYXRhLndyaXRlVUludDgoMSwgNDUpO1xuICByZXR1cm4gZGF0YTtcbn07XG5cbi8vIE1pbnRDb25maWcgbGF5b3V0OiB1OCBkaXNjcmltaW5hdG9yLCB1OCBidW1wLCBib29sIHRoYXcsIGJvb2wgZnJlZXplLCBwdWJrZXkgbWludCgzMiksXG4vLyBwdWJrZXkgZnJlZXplQXV0aG9yaXR5KDMyKSwgcHVia2V5IGdhdGluZ1Byb2dyYW0oMzIpLiBUb3RhbCAxMDAgYnl0ZXMuXG5jb25zdCBidWlsZE1pbnRDb25maWcgPSAobWludDogUHVibGljS2V5LCBlbmFibGVQZXJtaXNzaW9ubGVzc1RoYXc6IGJvb2xlYW4sIGdhdGVQcm9ncmFtOiBQdWJsaWNLZXkpOiBCdWZmZXIgPT4ge1xuICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKDEwMCk7XG4gIGRhdGEud3JpdGVVSW50OCgxLCAwKTsgLy8gZGlzY3JpbWluYXRvclxuICBkYXRhLndyaXRlVUludDgoMjU1LCAxKTsgLy8gYnVtcFxuICBkYXRhLndyaXRlVUludDgoZW5hYmxlUGVybWlzc2lvbmxlc3NUaGF3ID8gMSA6IDAsIDIpO1xuICBkYXRhLndyaXRlVUludDgoMCwgMyk7IC8vIGVuYWJsZVBlcm1pc3Npb25sZXNzRnJlZXplXG4gIG1pbnQudG9CdWZmZXIoKS5jb3B5KGRhdGEsIDQpO1xuICBuZXcgUHVibGljS2V5KFRPS0VOX0FDTF9QUk9HUkFNX0lEKS50b0J1ZmZlcigpLmNvcHkoZGF0YSwgMzYpOyAvLyBmcmVlemVBdXRob3JpdHlcbiAgZ2F0ZVByb2dyYW0udG9CdWZmZXIoKS5jb3B5KGRhdGEsIDY4KTtcbiAgcmV0dXJuIGRhdGE7XG59O1xuXG4vLyBFeHRyYUFjY291bnRNZXRhTGlzdCBhY2NvdW50OiB1NjQgZGlzY3JpbWluYXRvciArIHUzMiBsZW5ndGggKyB1MzIgY291bnQsIHRoZW4gMzUtYnl0ZVxuLy8gRXh0cmFBY2NvdW50TWV0YSBlbnRyaWVzIChkaXNjcmltaW5hdG9yIDAgPSBmaXhlZCBhZGRyZXNzKS5cbmNvbnN0IGJ1aWxkRXh0cmFBY2NvdW50TWV0YUxpc3QgPSAobWV0YXM6IEV4dHJhQWNjb3VudE1ldGFbXSk6IEJ1ZmZlciA9PiB7XG4gIGNvbnN0IGhlYWRlclNpemUgPSAxNjtcbiAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhoZWFkZXJTaXplICsgbWV0YXMubGVuZ3RoICogMzUpO1xuICBkYXRhLndyaXRlVUludDMyTEUoNCArIG1ldGFzLmxlbmd0aCAqIDM1LCA4KTsgLy8gbGVuZ3RoXG4gIGRhdGEud3JpdGVVSW50MzJMRShtZXRhcy5sZW5ndGgsIDEyKTsgLy8gY291bnRcbiAgbGV0IG9mZnNldCA9IGhlYWRlclNpemU7XG4gIGZvciAoY29uc3QgbWV0YSBvZiBtZXRhcykge1xuICAgIGRhdGEud3JpdGVVSW50OCgwLCBvZmZzZXQpOyAvLyBkaXNjcmltaW5hdG9yOiBmaXhlZCBhZGRyZXNzXG4gICAgbmV3IFB1YmxpY0tleShtZXRhLnB1YmtleSkudG9CdWZmZXIoKS5jb3B5KGRhdGEsIG9mZnNldCArIDEpOyAvLyBhZGRyZXNzQ29uZmlnXG4gICAgZGF0YS53cml0ZVVJbnQ4KG1ldGEuaXNTaWduZXIgPyAxIDogMCwgb2Zmc2V0ICsgMzMpO1xuICAgIGRhdGEud3JpdGVVSW50OChtZXRhLmlzV3JpdGFibGUgPyAxIDogMCwgb2Zmc2V0ICsgMzQpO1xuICAgIG9mZnNldCArPSAzNTtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn07XG5cbmRlc2NyaWJlKCd0b2tlbjIwMjJSZXNvbHZlIChzdGFuZGFsb25lKScsICgpID0+IHtcbiAgY29uc3QgbWludEFkZHJlc3MgPSByZXNvdXJjZXMuc29sMjAyMlRva2VuVHJhbnNmZXJzLm1pbnQ7XG4gIGNvbnN0IHNvdXJjZUFkZHJlc3MgPSByZXNvdXJjZXMuYXNzb2NpYXRlZFRva2VuQWNjb3VudHNGb3JTb2wyMDIyLmFjY291bnRzWzBdLmF0YTtcbiAgY29uc3QgZGVzdGluYXRpb25BZGRyZXNzID0gcmVzb3VyY2VzLnNvbDIwMjJUb2tlblRyYW5zZmVycy5zb3VyY2U7XG4gIGNvbnN0IG93bmVyQWRkcmVzcyA9IHJlc291cmNlcy5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMub3duZXI7XG4gIGNvbnN0IGRlY2ltYWxzID0gNjtcbiAgLy8gQXJiaXRyYXJ5IGJ1dCB2YWxpZCBiYXNlNTggcHVia2V5cyB1c2VkIHB1cmVseSBhcyBmaXh0dXJlcy5cbiAgY29uc3QgaG9va1Byb2dyYW1JZCA9IG5ldyBQdWJsaWNLZXkoJ0diUThaaUVGekdHVGVZb1h3dFp0Y294d1BjTXlVY21aRGR1TVZOZFVQS3BYJyk7XG5cbiAgZGVzY3JpYmUoJ3Jlc29sdmVUcmFuc2Zlckhvb2tBY2NvdW50cycsICgpID0+IHtcbiAgICBjb25zdCBleHRyYU1ldGFzOiBFeHRyYUFjY291bnRNZXRhW10gPSBbXG4gICAgICB7IHB1YmtleTogJzk4d0ZGNU1wTWpNUWJmREYyTVB6bzhMQ0dYMzd1blpSMW9oUkExbVU5R21KJywgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICB7IHB1YmtleTogJzQ4bjdZR0V3dzdmS01mSjVnSjNzUUMzck02UldHanBVc2docVZmWFZrUjVBJywgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgICAgeyBwdWJrZXk6ICc5c1FoQUg3dlYzUktUQ0sxM1ZZNEVpTmpzM3FCcTFzclNZeGROdWZkQUFYbScsIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSxcbiAgICBdO1xuXG4gICAgaXQoJ3Jlc29sdmVzIHRoZSBvcmRlcmVkIGV4dHJhIGFjY291bnRzIGZvciBhIG1pbnQgd2l0aCBhIHRyYW5zZmVyIGhvb2snLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uU3RhdGVQdWJrZXkgPSBnZXRFeHRyYUFjY291bnRNZXRhQWRkcmVzcyhuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKSwgaG9va1Byb2dyYW1JZCk7XG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gbWFrZUNvbm5lY3Rpb24oe1xuICAgICAgICBbbWludEFkZHJlc3NdOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRNaW50V2l0aFRyYW5zZmVySG9vayhkZWNpbWFscywgaG9va1Byb2dyYW1JZCksXG4gICAgICAgICAgb3duZXI6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgICBbdmFsaWRhdGlvblN0YXRlUHVia2V5LnRvQmFzZTU4KCldOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRFeHRyYUFjY291bnRNZXRhTGlzdChleHRyYU1ldGFzKSxcbiAgICAgICAgICBvd25lcjogaG9va1Byb2dyYW1JZC50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVUcmFuc2Zlckhvb2tBY2NvdW50cyhjb25uZWN0aW9uLCB7XG4gICAgICAgIG1pbnQ6IG1pbnRBZGRyZXNzLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZUFkZHJlc3MsXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgIG93bmVyOiBvd25lckFkZHJlc3MsXG4gICAgICAgIGFtb3VudDogJzUwMDAwMCcsXG4gICAgICB9KTtcblxuICAgICAgLy8gZXh0cmEgYWNjb3VudHMsIHRoZW4gdGhlIGhvb2sgcHJvZ3JhbSwgdGhlbiB0aGUgdmFsaWRhdGlvbiBzdGF0ZSBhY2NvdW50XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUubGVuZ3RoKGV4dHJhTWV0YXMubGVuZ3RoICsgMik7XG4gICAgICByZXN1bHQuc2xpY2UoMCwgZXh0cmFNZXRhcy5sZW5ndGgpLnNob3VsZC5kZWVwRXF1YWwoZXh0cmFNZXRhcyk7XG4gICAgICByZXN1bHRbZXh0cmFNZXRhcy5sZW5ndGhdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBwdWJrZXk6IGhvb2tQcm9ncmFtSWQudG9CYXNlNTgoKSxcbiAgICAgICAgaXNTaWduZXI6IGZhbHNlLFxuICAgICAgICBpc1dyaXRhYmxlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgcmVzdWx0W2V4dHJhTWV0YXMubGVuZ3RoICsgMV0uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIHB1YmtleTogdmFsaWRhdGlvblN0YXRlUHVia2V5LnRvQmFzZTU4KCksXG4gICAgICAgIGlzU2lnbmVyOiBmYWxzZSxcbiAgICAgICAgaXNXcml0YWJsZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGFuIGVtcHR5IGFycmF5IGZvciBhIG1pbnQgd2l0aG91dCBhIHRyYW5zZmVyIGhvb2snLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gbWFrZUNvbm5lY3Rpb24oe1xuICAgICAgICBbbWludEFkZHJlc3NdOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRCYXNlTWludChkZWNpbWFscyksXG4gICAgICAgICAgb3duZXI6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVUcmFuc2Zlckhvb2tBY2NvdW50cyhjb25uZWN0aW9uLCB7XG4gICAgICAgIG1pbnQ6IG1pbnRBZGRyZXNzLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZUFkZHJlc3MsXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgIG93bmVyOiBvd25lckFkZHJlc3MsXG4gICAgICAgIGFtb3VudDogJzUwMDAwMCcsXG4gICAgICB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKFtdKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGFuIGVtcHR5IGFycmF5IHdoZW4gdGhlIG1pbnQgYWNjb3VudCBpcyBub3QgZm91bmQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gbWFrZUNvbm5lY3Rpb24oe30pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNvbHZlVHJhbnNmZXJIb29rQWNjb3VudHMoY29ubmVjdGlvbiwge1xuICAgICAgICBtaW50OiBtaW50QWRkcmVzcyxcbiAgICAgICAgc291cmNlOiBzb3VyY2VBZGRyZXNzLFxuICAgICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb25BZGRyZXNzLFxuICAgICAgICBvd25lcjogb3duZXJBZGRyZXNzLFxuICAgICAgICBhbW91bnQ6ICc1MDAwMDAnLFxuICAgICAgfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbChbXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZXNvbHZlUGVybWlzc2lvbmxlc3NUaGF3JywgKCkgPT4ge1xuICAgIGNvbnN0IHRva2VuQWNjb3VudCA9IHJlc291cmNlcy5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0uYXRhO1xuICAgIGNvbnN0IHRva2VuQWNjb3VudE93bmVyID0gcmVzb3VyY2VzLnNvbDIwMjJUb2tlblRyYW5zZmVycy5vd25lcjtcbiAgICBjb25zdCBhdXRob3JpdHkgPSByZXNvdXJjZXMuc29sMjAyMlRva2VuVHJhbnNmZXJzLnNvdXJjZTtcbiAgICBjb25zdCBnYXRpbmdQcm9ncmFtID0gbmV3IFB1YmxpY0tleSgnR2JROFppRUZ6R0dUZVlvWHd0WnRjb3h3UGNNeVVjbVpEZHVNVk5kVVBLcFgnKTtcbiAgICBjb25zdCB0b2tlbkFjbFByb2dyYW1JZCA9IG5ldyBQdWJsaWNLZXkoVE9LRU5fQUNMX1BST0dSQU1fSUQpO1xuXG4gICAgY29uc3QgZXh0cmFNZXRhczogRXh0cmFBY2NvdW50TWV0YVtdID0gW1xuICAgICAgeyBwdWJrZXk6ICc5OHdGRjVNcE1qTVFiZkRGMk1Qem84TENHWDM3dW5aUjFvaFJBMW1VOUdtSicsIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9LFxuICAgICAgeyBwdWJrZXk6ICc5c1FoQUg3dlYzUktUQ0sxM1ZZNEVpTmpzM3FCcTFzclNZeGROdWZkQUFYbScsIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgW21pbnRDb25maWdQZGFdID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgICBbQnVmZmVyLmZyb20oVE9LRU5fQUNMX01JTlRfQ09ORklHX1NFRUQpLCBuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKS50b0J1ZmZlcigpXSxcbiAgICAgIHRva2VuQWNsUHJvZ3JhbUlkXG4gICAgKTtcbiAgICBjb25zdCBbZmxhZ0FjY291bnRQZGFdID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgICBbQnVmZmVyLmZyb20oVE9LRU5fQUNMX0ZMQUdfQUNDT1VOVF9TRUVEKSwgbmV3IFB1YmxpY0tleSh0b2tlbkFjY291bnQpLnRvQnVmZmVyKCldLFxuICAgICAgdG9rZW5BY2xQcm9ncmFtSWRcbiAgICApO1xuICAgIGNvbnN0IFt0aGF3RXh0cmFNZXRhc1BkYV0gPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShUT0tFTl9BQ0xfVEhBV19FWFRSQV9NRVRBU19TRUVEKSwgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcykudG9CdWZmZXIoKV0sXG4gICAgICBnYXRpbmdQcm9ncmFtXG4gICAgKTtcblxuICAgIGl0KCdyZXNvbHZlcyB0aGUgdGhhdyBwYXJhbXMgZm9yIGEgVG9rZW4gQUNMIG1pbnQgd2l0aCBwZXJtaXNzaW9ubGVzcyB0aGF3IGVuYWJsZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gbWFrZUNvbm5lY3Rpb24oe1xuICAgICAgICBbbWludENvbmZpZ1BkYS50b0Jhc2U1OCgpXToge1xuICAgICAgICAgIGRhdGE6IGJ1aWxkTWludENvbmZpZyhuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKSwgdHJ1ZSwgZ2F0aW5nUHJvZ3JhbSksXG4gICAgICAgICAgb3duZXI6IFRPS0VOX0FDTF9QUk9HUkFNX0lELFxuICAgICAgICB9LFxuICAgICAgICBbdGhhd0V4dHJhTWV0YXNQZGEudG9CYXNlNTgoKV06IHtcbiAgICAgICAgICBkYXRhOiBidWlsZEV4dHJhQWNjb3VudE1ldGFMaXN0KGV4dHJhTWV0YXMpLFxuICAgICAgICAgIG93bmVyOiBnYXRpbmdQcm9ncmFtLnRvQmFzZTU4KCksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzb2x2ZVBlcm1pc3Npb25sZXNzVGhhdyhjb25uZWN0aW9uLCB7XG4gICAgICAgIG1pbnQ6IG1pbnRBZGRyZXNzLFxuICAgICAgICB0b2tlbkFjY291bnQsXG4gICAgICAgIHRva2VuQWNjb3VudE93bmVyLFxuICAgICAgICBhdXRob3JpdHksXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0LmFwcGxpY2FibGUuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHJlc3VsdC5nYXRpbmdQcm9ncmFtIS5zaG91bGQuZXF1YWwoZ2F0aW5nUHJvZ3JhbS50b0Jhc2U1OCgpKTtcbiAgICAgIHJlc3VsdC5mbGFnQWNjb3VudCEuc2hvdWxkLmVxdWFsKGZsYWdBY2NvdW50UGRhLnRvQmFzZTU4KCkpO1xuICAgICAgcmVzdWx0Lm1pbnRDb25maWchLnNob3VsZC5lcXVhbChtaW50Q29uZmlnUGRhLnRvQmFzZTU4KCkpO1xuICAgICAgcmVzdWx0LnRva2VuUHJvZ3JhbSEuc2hvdWxkLmVxdWFsKFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpKTtcbiAgICAgIHJlc3VsdC5zeXN0ZW1Qcm9ncmFtIS5zaG91bGQuZXF1YWwoU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQudG9CYXNlNTgoKSk7XG4gICAgICAvLyBleHRyYSBhY2NvdW50cyA9IFt0aGF3RXh0cmFNZXRhcywgLi4ucmVzb2x2ZWQgZml4ZWQtYWRkcmVzcyBleHRyYXNdXG4gICAgICByZXN1bHQuZXh0cmFBY2NvdW50cyEuc2hvdWxkLmRlZXBFcXVhbChbXG4gICAgICAgIHsgcHVia2V5OiB0aGF3RXh0cmFNZXRhc1BkYS50b0Jhc2U1OCgpLCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0sXG4gICAgICAgIC4uLmV4dHJhTWV0YXMsXG4gICAgICBdKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGFwcGxpY2FibGU6ZmFsc2UgZm9yIGEgbWludCB3aXRoIG5vIFRva2VuIEFDTCBNaW50Q29uZmlnJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY29ubmVjdGlvbiA9IG1ha2VDb25uZWN0aW9uKHt9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzb2x2ZVBlcm1pc3Npb25sZXNzVGhhdyhjb25uZWN0aW9uLCB7XG4gICAgICAgIG1pbnQ6IG1pbnRBZGRyZXNzLFxuICAgICAgICB0b2tlbkFjY291bnQsXG4gICAgICAgIHRva2VuQWNjb3VudE93bmVyLFxuICAgICAgICBhdXRob3JpdHksXG4gICAgICB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHsgYXBwbGljYWJsZTogZmFsc2UgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhcHBsaWNhYmxlOmZhbHNlIHdoZW4gcGVybWlzc2lvbmxlc3MgdGhhdyBpcyBkaXNhYmxlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBtYWtlQ29ubmVjdGlvbih7XG4gICAgICAgIFttaW50Q29uZmlnUGRhLnRvQmFzZTU4KCldOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRNaW50Q29uZmlnKG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpLCBmYWxzZSwgZ2F0aW5nUHJvZ3JhbSksXG4gICAgICAgICAgb3duZXI6IFRPS0VOX0FDTF9QUk9HUkFNX0lELFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVQZXJtaXNzaW9ubGVzc1RoYXcoY29ubmVjdGlvbiwge1xuICAgICAgICBtaW50OiBtaW50QWRkcmVzcyxcbiAgICAgICAgdG9rZW5BY2NvdW50LFxuICAgICAgICB0b2tlbkFjY291bnRPd25lcixcbiAgICAgICAgYXV0aG9yaXR5LFxuICAgICAgfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbCh7IGFwcGxpY2FibGU6IGZhbHNlIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenExtensions.d.ts","sourceRoot":"","sources":["../../../../test/unit/tokenExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("should");
|
|
4
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
5
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
6
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
7
|
+
const tokenExtensions_1 = require("../../src/lib/tokenExtensions");
|
|
8
|
+
describe('Sol Token-2022 mint extension parsing', function () {
|
|
9
|
+
describe('mapModeledExtensions', function () {
|
|
10
|
+
it('maps spl-token extension names to modeled BitGo types', function () {
|
|
11
|
+
(0, tokenExtensions_1.mapModeledExtensions)(['TransferFeeConfig', 'PermanentDelegate']).should.eql([
|
|
12
|
+
statics_1.SolTokenExtensionType.TransferFee,
|
|
13
|
+
statics_1.SolTokenExtensionType.PermanentDelegate,
|
|
14
|
+
]);
|
|
15
|
+
});
|
|
16
|
+
it('ignores extensions BitGo does not model', function () {
|
|
17
|
+
(0, tokenExtensions_1.mapModeledExtensions)(['ImmutableOwner', 'MetadataPointer', 'TransferHook']).should.eql([
|
|
18
|
+
statics_1.SolTokenExtensionType.TransferHook,
|
|
19
|
+
]);
|
|
20
|
+
});
|
|
21
|
+
it('deduplicates', function () {
|
|
22
|
+
(0, tokenExtensions_1.mapModeledExtensions)(['TransferFeeConfig', 'TransferFeeConfig']).should.eql([statics_1.SolTokenExtensionType.TransferFee]);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('parseMintExtensions', function () {
|
|
26
|
+
function tlvEntry(type, value) {
|
|
27
|
+
const head = Buffer.alloc(4);
|
|
28
|
+
head.writeUInt16LE(type, 0);
|
|
29
|
+
head.writeUInt16LE(value.length, 2);
|
|
30
|
+
return Buffer.concat([head, value]);
|
|
31
|
+
}
|
|
32
|
+
function fakeMint(tlvData) {
|
|
33
|
+
return {
|
|
34
|
+
address: web3_js_1.PublicKey.default,
|
|
35
|
+
mintAuthority: null,
|
|
36
|
+
supply: BigInt(0),
|
|
37
|
+
decimals: 6,
|
|
38
|
+
isInitialized: true,
|
|
39
|
+
freezeAuthority: null,
|
|
40
|
+
tlvData,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
it('parses a mint declaring both Transfer Hook and Confidential Transfer', function () {
|
|
44
|
+
// Legal on-chain: token-2022's check_for_invalid_mint_extension_combinations
|
|
45
|
+
// does not forbid this pair. Regression test — an SDK-level assert used to
|
|
46
|
+
// reject it and block onboarding of real mints.
|
|
47
|
+
const tlvData = Buffer.concat([
|
|
48
|
+
tlvEntry(spl_token_1.ExtensionType.ConfidentialTransferMint, Buffer.alloc(0)),
|
|
49
|
+
tlvEntry(spl_token_1.ExtensionType.TransferHook, Buffer.alloc(64)), // authority (32) + programId (32)
|
|
50
|
+
]);
|
|
51
|
+
const result = (0, tokenExtensions_1.parseMintExtensions)(fakeMint(tlvData));
|
|
52
|
+
result.detectedTypeNames.should.eql(['ConfidentialTransferMint', 'TransferHook']);
|
|
53
|
+
result.extensions.detected.should.eql([statics_1.SolTokenExtensionType.TransferHook]);
|
|
54
|
+
result.extensions.transferHookProgramId?.should.equal('11111111111111111111111111111111');
|
|
55
|
+
});
|
|
56
|
+
it('parses a scaled-UI mint: detected name, modeled type, and initial multiplier', function () {
|
|
57
|
+
// Encoded with spl-token's own ScaledUiAmountConfigLayout so the fixture tracks the
|
|
58
|
+
// on-chain wire format (authority COption + f64 multiplier + u64 timestamp + f64 newMultiplier).
|
|
59
|
+
const value = Buffer.alloc(spl_token_1.ScaledUiAmountConfigLayout.span);
|
|
60
|
+
spl_token_1.ScaledUiAmountConfigLayout.encode({
|
|
61
|
+
authority: new web3_js_1.PublicKey('4SgEJtPSjLTD7porvAZYVJX9t4o4nG66b3rMxVpvoiXs'),
|
|
62
|
+
multiplier: 1.5,
|
|
63
|
+
newMultiplierEffectiveTimestamp: BigInt(0),
|
|
64
|
+
newMultiplier: 1.5,
|
|
65
|
+
}, value);
|
|
66
|
+
const result = (0, tokenExtensions_1.parseMintExtensions)(fakeMint(tlvEntry(spl_token_1.ExtensionType.ScaledUiAmountConfig, value)));
|
|
67
|
+
result.detectedTypeNames.should.eql(['ScaledUiAmountConfig']);
|
|
68
|
+
result.extensions.detected.should.eql([statics_1.SolTokenExtensionType.ScaledUiAmount]);
|
|
69
|
+
result.extensions.scaledUiAmount?.should.eql({ initialMultiplier: '1.5' });
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5FeHRlbnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3Rva2VuRXh0ZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUNoQixpREFBNEQ7QUFDNUQsaURBQXlGO0FBQ3pGLDZDQUE0QztBQUM1QyxtRUFBMEY7QUFFMUYsUUFBUSxDQUFDLHVDQUF1QyxFQUFFO0lBQ2hELFFBQVEsQ0FBQyxzQkFBc0IsRUFBRTtRQUMvQixFQUFFLENBQUMsdURBQXVELEVBQUU7WUFDMUQsSUFBQSxzQ0FBb0IsRUFBQyxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUMxRSwrQkFBcUIsQ0FBQyxXQUFXO2dCQUNqQywrQkFBcUIsQ0FBQyxpQkFBaUI7YUFDeEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMseUNBQXlDLEVBQUU7WUFDNUMsSUFBQSxzQ0FBb0IsRUFBQyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDckYsK0JBQXFCLENBQUMsWUFBWTthQUNuQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxjQUFjLEVBQUU7WUFDakIsSUFBQSxzQ0FBb0IsRUFBQyxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsK0JBQXFCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNuSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHFCQUFxQixFQUFFO1FBQzlCLFNBQVMsUUFBUSxDQUFDLElBQW1CLEVBQUUsS0FBYTtZQUNsRCxNQUFNLElBQUksR0FB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QUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBTb2xUb2tlbkV4dGVuc2lvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEV4dGVuc2lvblR5cGUsIFNjYWxlZFVpQW1vdW50Q29uZmlnTGF5b3V0LCB0eXBlIE1pbnQgfSBmcm9tICdAc29sYW5hL3NwbC10b2tlbic7XG5pbXBvcnQgeyBQdWJsaWNLZXkgfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgbWFwTW9kZWxlZEV4dGVuc2lvbnMsIHBhcnNlTWludEV4dGVuc2lvbnMgfSBmcm9tICcuLi8uLi9zcmMvbGliL3Rva2VuRXh0ZW5zaW9ucyc7XG5cbmRlc2NyaWJlKCdTb2wgVG9rZW4tMjAyMiBtaW50IGV4dGVuc2lvbiBwYXJzaW5nJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnbWFwTW9kZWxlZEV4dGVuc2lvbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ21hcHMgc3BsLXRva2VuIGV4dGVuc2lvbiBuYW1lcyB0byBtb2RlbGVkIEJpdEdvIHR5cGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgbWFwTW9kZWxlZEV4dGVuc2lvbnMoWydUcmFuc2ZlckZlZUNvbmZpZycsICdQZXJtYW5lbnREZWxlZ2F0ZSddKS5zaG91bGQuZXFsKFtcbiAgICAgICAgU29sVG9rZW5FeHRlbnNpb25UeXBlLlRyYW5zZmVyRmVlLFxuICAgICAgICBTb2xUb2tlbkV4dGVuc2lvblR5cGUuUGVybWFuZW50RGVsZWdhdGUsXG4gICAgICBdKTtcbiAgICB9KTtcblxuICAgIGl0KCdpZ25vcmVzIGV4dGVuc2lvbnMgQml0R28gZG9lcyBub3QgbW9kZWwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBtYXBNb2RlbGVkRXh0ZW5zaW9ucyhbJ0ltbXV0YWJsZU93bmVyJywgJ01ldGFkYXRhUG9pbnRlcicsICdUcmFuc2Zlckhvb2snXSkuc2hvdWxkLmVxbChbXG4gICAgICAgIFNvbFRva2VuRXh0ZW5zaW9uVHlwZS5UcmFuc2Zlckhvb2ssXG4gICAgICBdKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZWR1cGxpY2F0ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBtYXBNb2RlbGVkRXh0ZW5zaW9ucyhbJ1RyYW5zZmVyRmVlQ29uZmlnJywgJ1RyYW5zZmVyRmVlQ29uZmlnJ10pLnNob3VsZC5lcWwoW1NvbFRva2VuRXh0ZW5zaW9uVHlwZS5UcmFuc2ZlckZlZV0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncGFyc2VNaW50RXh0ZW5zaW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiB0bHZFbnRyeSh0eXBlOiBFeHRlbnNpb25UeXBlLCB2YWx1ZTogQnVmZmVyKTogQnVmZmVyIHtcbiAgICAgIGNvbnN0IGhlYWQgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgICBoZWFkLndyaXRlVUludDE2TEUodHlwZSwgMCk7XG4gICAgICBoZWFkLndyaXRlVUludDE2TEUodmFsdWUubGVuZ3RoLCAyKTtcbiAgICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtoZWFkLCB2YWx1ZV0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZha2VNaW50KHRsdkRhdGE6IEJ1ZmZlcik6IE1pbnQge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWRkcmVzczogUHVibGljS2V5LmRlZmF1bHQsXG4gICAgICAgIG1pbnRBdXRob3JpdHk6IG51bGwsXG4gICAgICAgIHN1cHBseTogQmlnSW50KDApLFxuICAgICAgICBkZWNpbWFsczogNixcbiAgICAgICAgaXNJbml0aWFsaXplZDogdHJ1ZSxcbiAgICAgICAgZnJlZXplQXV0aG9yaXR5OiBudWxsLFxuICAgICAgICB0bHZEYXRhLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpdCgncGFyc2VzIGEgbWludCBkZWNsYXJpbmcgYm90aCBUcmFuc2ZlciBIb29rIGFuZCBDb25maWRlbnRpYWwgVHJhbnNmZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBMZWdhbCBvbi1jaGFpbjogdG9rZW4tMjAyMidzIGNoZWNrX2Zvcl9pbnZhbGlkX21pbnRfZXh0ZW5zaW9uX2NvbWJpbmF0aW9uc1xuICAgICAgLy8gZG9lcyBub3QgZm9yYmlkIHRoaXMgcGFpci4gUmVncmVzc2lvbiB0ZXN0IOKAlCBhbiBTREstbGV2ZWwgYXNzZXJ0IHVzZWQgdG9cbiAgICAgIC8vIHJlamVjdCBpdCBhbmQgYmxvY2sgb25ib2FyZGluZyBvZiByZWFsIG1pbnRzLlxuICAgICAgY29uc3QgdGx2RGF0YSA9IEJ1ZmZlci5jb25jYXQoW1xuICAgICAgICB0bHZFbnRyeShFeHRlbnNpb25UeXBlLkNvbmZpZGVudGlhbFRyYW5zZmVyTWludCwgQnVmZmVyLmFsbG9jKDApKSxcbiAgICAgICAgdGx2RW50cnkoRXh0ZW5zaW9uVHlwZS5UcmFuc2Zlckhvb2ssIEJ1ZmZlci5hbGxvYyg2NCkpLCAvLyBhdXRob3JpdHkgKDMyKSArIHByb2dyYW1JZCAoMzIpXG4gICAgICBdKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlTWludEV4dGVuc2lvbnMoZmFrZU1pbnQodGx2RGF0YSkpO1xuICAgICAgcmVzdWx0LmRldGVjdGVkVHlwZU5hbWVzLnNob3VsZC5lcWwoWydDb25maWRlbnRpYWxUcmFuc2Zlck1pbnQnLCAnVHJhbnNmZXJIb29rJ10pO1xuICAgICAgcmVzdWx0LmV4dGVuc2lvbnMuZGV0ZWN0ZWQuc2hvdWxkLmVxbChbU29sVG9rZW5FeHRlbnNpb25UeXBlLlRyYW5zZmVySG9va10pO1xuICAgICAgcmVzdWx0LmV4dGVuc2lvbnMudHJhbnNmZXJIb29rUHJvZ3JhbUlkPy5zaG91bGQuZXF1YWwoJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncGFyc2VzIGEgc2NhbGVkLVVJIG1pbnQ6IGRldGVjdGVkIG5hbWUsIG1vZGVsZWQgdHlwZSwgYW5kIGluaXRpYWwgbXVsdGlwbGllcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEVuY29kZWQgd2l0aCBzcGwtdG9rZW4ncyBvd24gU2NhbGVkVWlBbW91bnRDb25maWdMYXlvdXQgc28gdGhlIGZpeHR1cmUgdHJhY2tzIHRoZVxuICAgICAgLy8gb24tY2hhaW4gd2lyZSBmb3JtYXQgKGF1dGhvcml0eSBDT3B0aW9uICsgZjY0IG11bHRpcGxpZXIgKyB1NjQgdGltZXN0YW1wICsgZjY0IG5ld011bHRpcGxpZXIpLlxuICAgICAgY29uc3QgdmFsdWUgPSBCdWZmZXIuYWxsb2MoU2NhbGVkVWlBbW91bnRDb25maWdMYXlvdXQuc3Bhbik7XG4gICAgICBTY2FsZWRVaUFtb3VudENvbmZpZ0xheW91dC5lbmNvZGUoXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRob3JpdHk6IG5ldyBQdWJsaWNLZXkoJzRTZ0VKdFBTakxURDdwb3J2QVpZVkpYOXQ0bzRuRzY2YjNyTXhWcHZvaVhzJyksXG4gICAgICAgICAgbXVsdGlwbGllcjogMS41LFxuICAgICAgICAgIG5ld011bHRpcGxpZXJFZmZlY3RpdmVUaW1lc3RhbXA6IEJpZ0ludCgwKSxcbiAgICAgICAgICBuZXdNdWx0aXBsaWVyOiAxLjUsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlXG4gICAgICApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2VNaW50RXh0ZW5zaW9ucyhmYWtlTWludCh0bHZFbnRyeShFeHRlbnNpb25UeXBlLlNjYWxlZFVpQW1vdW50Q29uZmlnLCB2YWx1ZSkpKTtcbiAgICAgIHJlc3VsdC5kZXRlY3RlZFR5cGVOYW1lcy5zaG91bGQuZXFsKFsnU2NhbGVkVWlBbW91bnRDb25maWcnXSk7XG4gICAgICByZXN1bHQuZXh0ZW5zaW9ucy5kZXRlY3RlZC5zaG91bGQuZXFsKFtTb2xUb2tlbkV4dGVuc2lvblR5cGUuU2NhbGVkVWlBbW91bnRdKTtcbiAgICAgIHJlc3VsdC5leHRlbnNpb25zLnNjYWxlZFVpQW1vdW50Py5zaG91bGQuZXFsKHsgaW5pdGlhbE11bHRpcGxpZXI6ICcxLjUnIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../test/unit/transaction.ts"],"names":[],"mappings":""}
|