@bitgo-beta/sdk-coin-sol 7.6.4-beta.71 → 7.6.4-beta.710
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/bigint-buffer-guard.d.ts.map +1 -0
- package/dist/cjs/src/bigint-buffer-guard.js +29 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/index.js +1 -1
- package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +12 -1
- package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/ataInitializationBuilder.js +231 -0
- package/dist/cjs/src/lib/closeAtaBuilder.d.ts +55 -0
- package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/closeAtaBuilder.js +162 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts +128 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/confidentialTransferBuilder.js +311 -0
- package/dist/{src → cjs/src}/lib/constants.d.ts +89 -2
- package/dist/cjs/src/lib/constants.d.ts.map +1 -0
- package/dist/cjs/src/lib/constants.js +269 -0
- package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/customInstructionBuilder.js +289 -0
- package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
- package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
- package/dist/cjs/src/lib/explainTransactionWasm.js +304 -0
- package/dist/cjs/src/lib/iface.d.ts +526 -0
- package/dist/cjs/src/lib/iface.d.ts.map +1 -0
- package/dist/cjs/src/lib/iface.js +7 -0
- package/dist/{src → cjs/src}/lib/index.d.ts +5 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/index.js +93 -0
- package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +3 -1
- package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/instructionParamsFactory.js +1220 -0
- package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
- package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
- package/dist/{src → cjs/src}/lib/keyPair.d.ts +6 -0
- package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
- package/dist/cjs/src/lib/keyPair.js +112 -0
- package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
- package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
- package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
- package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
- package/dist/cjs/src/lib/scaledUiAmount.d.ts +30 -0
- package/dist/cjs/src/lib/scaledUiAmount.d.ts.map +1 -0
- package/dist/cjs/src/lib/scaledUiAmount.js +112 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts +21 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/config.js +34 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts +14 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/instruction.js +32 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts +27 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.js +196 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts +30 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +205 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts +9 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.js +58 -0
- package/dist/cjs/src/lib/serialization/wire-transaction.d.ts +14 -0
- package/dist/cjs/src/lib/serialization/wire-transaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/wire-transaction.js +51 -0
- package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +1 -1
- package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/solInstructionFactory.js +1094 -0
- package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingActivateBuilder.js +129 -0
- package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
- package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingDeactivateBuilder.js +214 -0
- package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingDelegateBuilder.js +126 -0
- package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
- package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/stakingWithdrawBuilder.js +87 -0
- package/dist/cjs/src/lib/token2022Resolve.d.ts +106 -0
- package/dist/cjs/src/lib/token2022Resolve.d.ts.map +1 -0
- package/dist/cjs/src/lib/token2022Resolve.js +199 -0
- package/dist/cjs/src/lib/tokenExtensions.d.ts +26 -0
- package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenExtensions.js +105 -0
- package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +27 -1
- package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenTransferBuilder.js +237 -0
- package/dist/{src → cjs/src}/lib/transaction.d.ts +22 -0
- package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/transaction.js +661 -0
- package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +9 -1
- package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilder.js +388 -0
- package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +14 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.js +222 -0
- package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transferBuilder.js +81 -0
- package/dist/cjs/src/lib/transferBuilderV2.d.ts +69 -0
- package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
- package/dist/cjs/src/lib/transferBuilderV2.js +252 -0
- package/dist/{src → cjs/src}/lib/utils.d.ts +5 -0
- package/dist/cjs/src/lib/utils.d.ts.map +1 -0
- package/dist/cjs/src/lib/utils.js +657 -0
- package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
- package/dist/cjs/src/register.d.ts +5 -0
- package/dist/cjs/src/register.d.ts.map +1 -0
- package/dist/cjs/src/register.js +29 -0
- package/dist/{src → cjs/src}/sol.d.ts +114 -3
- package/dist/cjs/src/sol.d.ts.map +1 -0
- package/dist/cjs/src/sol.js +1670 -0
- package/dist/{src → cjs/src}/solToken.d.ts +7 -0
- package/dist/cjs/src/solToken.d.ts.map +1 -0
- package/dist/cjs/src/solToken.js +79 -0
- package/dist/cjs/src/tsol.d.ts.map +1 -0
- package/dist/cjs/src/tsol.js +24 -0
- package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
- package/dist/cjs/test/fixtures/sol.js +1433 -0
- package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
- package/dist/cjs/test/resources/sol.d.ts.map +1 -0
- package/dist/cjs/test/resources/sol.js +320 -0
- package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
- package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
- package/dist/cjs/test/unit/explainTransactionWasm.js +66 -0
- package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
- package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
- package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
- package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
- package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
- package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
- package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
- package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
- package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
- package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
- package/dist/cjs/test/unit/keyPair.js +177 -0
- package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
- package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
- package/dist/cjs/test/unit/register.d.ts +2 -0
- package/dist/cjs/test/unit/register.d.ts.map +1 -0
- package/dist/cjs/test/unit/register.js +65 -0
- package/dist/cjs/test/unit/scaledUiAmount.d.ts +2 -0
- package/dist/cjs/test/unit/scaledUiAmount.d.ts.map +1 -0
- package/dist/cjs/test/unit/scaledUiAmount.js +101 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
- package/dist/cjs/test/unit/serialization/transactionV1.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/transactionV1.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/transactionV1.js +136 -0
- package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
- package/dist/cjs/test/unit/sol.js +5038 -0
- package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
- package/dist/cjs/test/unit/solInstructionFactory.js +623 -0
- package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
- package/dist/cjs/test/unit/solToken.js +37 -0
- package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
- package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
- package/dist/cjs/test/unit/token2022Resolve.js +252 -0
- package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
- package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
- package/dist/cjs/test/unit/tokenExtensions.js +58 -0
- package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/transaction.js +1108 -0
- package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
- package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +508 -0
- package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +343 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.js +909 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.js +144 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.js +167 -0
- package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
- package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +926 -0
- package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +302 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
- package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
- package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
- package/dist/cjs/test/unit/utils.js +628 -0
- package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/versionedTransaction.js +207 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/bigint-buffer-guard.d.ts +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/lib/ataInitializationBuilder.d.ts +58 -0
- package/dist/esm/lib/ataInitializationBuilder.d.ts.map +1 -0
- package/dist/esm/lib/ataInitializationBuilder.js +191 -0
- package/dist/esm/lib/closeAtaBuilder.d.ts +55 -0
- package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
- package/dist/esm/lib/closeAtaBuilder.js +155 -0
- package/dist/esm/lib/confidentialTransferBuilder.d.ts +128 -0
- package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
- package/dist/esm/lib/confidentialTransferBuilder.js +304 -0
- package/dist/esm/lib/constants.d.ts +227 -0
- package/dist/esm/lib/constants.d.ts.map +1 -0
- package/dist/esm/lib/constants.js +266 -0
- package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
- package/dist/esm/lib/customInstructionBuilder.js +282 -0
- package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
- package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
- package/dist/esm/lib/explainTransactionWasm.js +301 -0
- package/dist/esm/lib/iface.d.ts +526 -0
- package/dist/esm/lib/iface.d.ts.map +1 -0
- package/dist/esm/lib/iface.js +3 -0
- package/dist/esm/lib/index.d.ts +27 -0
- package/dist/esm/lib/index.d.ts.map +1 -0
- package/dist/esm/lib/index.js +27 -0
- package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
- package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
- package/dist/esm/lib/instructionParamsFactory.js +1212 -0
- package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
- package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
- package/dist/esm/lib/keyPair.d.ts +32 -0
- package/dist/esm/lib/keyPair.d.ts.map +1 -0
- package/dist/esm/lib/keyPair.js +75 -0
- package/dist/esm/lib/messages/index.d.ts +2 -0
- package/dist/esm/lib/messages/index.js +2 -0
- package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
- package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
- package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
- package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
- package/dist/esm/lib/scaledUiAmount.d.ts +30 -0
- package/dist/esm/lib/scaledUiAmount.d.ts.map +1 -0
- package/dist/esm/lib/scaledUiAmount.js +108 -0
- package/dist/esm/lib/serialization/codecs/v1/config.d.ts +21 -0
- package/dist/esm/lib/serialization/codecs/v1/config.d.ts.map +1 -0
- package/dist/esm/lib/serialization/codecs/v1/config.js +30 -0
- package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts +14 -0
- package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/codecs/v1/instruction.js +29 -0
- package/dist/esm/lib/serialization/codecs/v1/message.d.ts +27 -0
- package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -0
- package/dist/esm/lib/serialization/codecs/v1/message.js +188 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +30 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.js +202 -0
- package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
- package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
- package/dist/esm/lib/serialization/wire-transaction.d.ts +14 -0
- package/dist/esm/lib/serialization/wire-transaction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/wire-transaction.js +48 -0
- package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
- package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
- package/dist/esm/lib/solInstructionFactory.js +1088 -0
- package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
- package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingActivateBuilder.js +122 -0
- package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
- package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
- package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
- package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingDeactivateBuilder.js +207 -0
- package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
- package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingDelegateBuilder.js +119 -0
- package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
- package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
- package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
- package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +1 -1
- package/dist/esm/lib/stakingWithdrawBuilder.js +80 -0
- package/dist/esm/lib/token2022Resolve.d.ts +106 -0
- package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
- package/dist/esm/lib/token2022Resolve.js +194 -0
- package/dist/esm/lib/tokenExtensions.d.ts +26 -0
- package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
- package/dist/esm/lib/tokenExtensions.js +99 -0
- package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
- package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/esm/lib/tokenTransferBuilder.js +230 -0
- package/dist/esm/lib/transaction.d.ts +125 -0
- package/dist/esm/lib/transaction.d.ts.map +1 -0
- package/dist/esm/lib/transaction.js +654 -0
- package/dist/esm/lib/transactionBuilder.d.ts +136 -0
- package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/esm/lib/transactionBuilder.js +381 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts +129 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/esm/lib/transactionBuilderFactory.js +218 -0
- package/dist/esm/lib/transferBuilder.d.ts +26 -0
- package/dist/{src → esm}/lib/transferBuilder.d.ts.map +1 -1
- package/dist/esm/lib/transferBuilder.js +74 -0
- package/dist/esm/lib/transferBuilderV2.d.ts +69 -0
- package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
- package/dist/esm/lib/transferBuilderV2.js +245 -0
- package/dist/esm/lib/utils.d.ts +205 -0
- package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
- package/dist/esm/lib/utils.js +619 -0
- package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
- package/dist/esm/lib/walletInitializationBuilder.js +64 -0
- package/dist/esm/register.d.ts +5 -0
- package/dist/esm/register.d.ts.map +1 -0
- package/dist/esm/register.js +24 -0
- package/dist/esm/sol.d.ts +351 -0
- package/dist/esm/sol.d.ts.map +1 -0
- package/dist/esm/sol.js +1629 -0
- package/dist/esm/solToken.d.ts +44 -0
- package/dist/esm/solToken.d.ts.map +1 -0
- package/dist/esm/solToken.js +75 -0
- package/dist/esm/tsol.d.ts +11 -0
- package/dist/esm/tsol.js +20 -0
- package/package.json +36 -16
- package/dist/src/config/token2022StaticConfig.d.ts +0 -3
- package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
- package/dist/src/config/token2022StaticConfig.js +0 -50
- package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
- package/dist/src/lib/ataInitializationBuilder.js +0 -196
- package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
- package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
- package/dist/src/lib/closeAtaBuilder.js +0 -69
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -171
- package/dist/src/lib/customInstructionBuilder.js +0 -289
- package/dist/src/lib/iface.d.ts +0 -244
- package/dist/src/lib/iface.d.ts.map +0 -1
- package/dist/src/lib/iface.js +0 -7
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -77
- package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
- package/dist/src/lib/instructionParamsFactory.js +0 -1036
- package/dist/src/lib/jitoStakePoolOperations.js +0 -200
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -63
- package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
- package/dist/src/lib/solInstructionFactory.js +0 -572
- package/dist/src/lib/stakingActivateBuilder.js +0 -120
- package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
- package/dist/src/lib/stakingDeactivateBuilder.js +0 -208
- package/dist/src/lib/stakingDelegateBuilder.js +0 -120
- package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
- package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
- package/dist/src/lib/token2022Config.d.ts +0 -44
- package/dist/src/lib/token2022Config.d.ts.map +0 -1
- package/dist/src/lib/token2022Config.js +0 -27
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
- package/dist/src/lib/tokenTransferBuilder.js +0 -188
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -595
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -380
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilderFactory.js +0 -202
- package/dist/src/lib/transferBuilder.js +0 -70
- package/dist/src/lib/transferBuilderV2.d.ts +0 -43
- package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
- package/dist/src/lib/transferBuilderV2.js +0 -210
- package/dist/src/lib/utils.js +0 -589
- package/dist/src/lib/walletInitializationBuilder.js +0 -71
- package/dist/src/register.d.ts +0 -3
- package/dist/src/register.d.ts.map +0 -1
- package/dist/src/register.js +0 -15
- package/dist/src/sol.d.ts.map +0 -1
- package/dist/src/sol.js +0 -1324
- package/dist/src/solToken.d.ts.map +0 -1
- package/dist/src/solToken.js +0 -69
- package/dist/src/tsol.js +0 -24
- package/dist/test/fixtures/sol.js +0 -1433
- package/dist/test/resources/sol.d.ts.map +0 -1
- package/dist/test/resources/sol.js +0 -320
- package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
- package/dist/test/unit/fixtures/solBackupKey.js +0 -8
- package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
- package/dist/test/unit/getBuilderFactory.js +0 -10
- package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
- package/dist/test/unit/instructionParamsFactory.js +0 -412
- package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
- package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
- package/dist/test/unit/keyPair.js +0 -177
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
- package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
- package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
- package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
- package/dist/test/unit/sol.js +0 -3180
- package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
- package/dist/test/unit/solInstructionFactory.js +0 -454
- package/dist/test/unit/solToken.d.ts.map +0 -1
- package/dist/test/unit/solToken.js +0 -31
- package/dist/test/unit/transaction.d.ts.map +0 -1
- package/dist/test/unit/transaction.js +0 -983
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
- package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
- package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
- package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
- package/dist/test/unit/utils.js +0 -517
- package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
- package/dist/test/unit/versionedTransaction.js +0 -207
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
- /package/dist/{src → cjs/src}/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
- /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
- /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
- /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
- /package/dist/{src → esm}/index.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/tsol.d.ts.map +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2026 BitGo, Inc. All Rights Reserved.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.rawToUiAmountString = rawToUiAmountString;
|
|
7
|
+
exports.uiAmountToRaw = uiAmountToRaw;
|
|
8
|
+
const DECIMAL_LITERAL_PATTERN = /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/;
|
|
9
|
+
/**
|
|
10
|
+
* Parse an exact decimal string into scaled-integer parts. Rejects scientific
|
|
11
|
+
* notation, empty strings, NaN/Infinity, and non-numeric input.
|
|
12
|
+
*
|
|
13
|
+
* @param value The decimal literal, e.g. "0.001"; "1e-9" must be written as "0.000000001"
|
|
14
|
+
*/
|
|
15
|
+
function parseDecimal(value, what) {
|
|
16
|
+
if (typeof value !== 'string' || !DECIMAL_LITERAL_PATTERN.test(value)) {
|
|
17
|
+
throw new Error(`Invalid ${what} '${value}': expected a finite decimal string`);
|
|
18
|
+
}
|
|
19
|
+
const negative = value.startsWith('-');
|
|
20
|
+
const unsigned = negative || value.startsWith('+') ? value.slice(1) : value;
|
|
21
|
+
const [intPart = '0', fracPart = ''] = unsigned.split('.');
|
|
22
|
+
const digits = BigInt(intPart + fracPart || '0');
|
|
23
|
+
return { negative, digits, scale: fracPart.length };
|
|
24
|
+
}
|
|
25
|
+
/** Render ±digits/10^scale as a normalized decimal string (no trailing zeros, no "-0"). */
|
|
26
|
+
function toDecimalString({ negative, digits, scale }) {
|
|
27
|
+
if (digits === 0n) {
|
|
28
|
+
return '0';
|
|
29
|
+
}
|
|
30
|
+
let s = digits.toString().padStart(scale + 1, '0');
|
|
31
|
+
if (scale > 0) {
|
|
32
|
+
s = `${s.slice(0, -scale)}.${s.slice(-scale)}`;
|
|
33
|
+
s = s.replace(/0+$/, '').replace(/\.$/, '');
|
|
34
|
+
}
|
|
35
|
+
return negative ? `-${s}` : s;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Convert a raw base-unit amount to its scaled UI denomination.
|
|
39
|
+
*
|
|
40
|
+
* Exact by construction: the result is `raw * multiplier / 10^decimals`, whose
|
|
41
|
+
* exact decimal expansion never exceeds `multiplier scale + decimals` fraction
|
|
42
|
+
* digits, so no rounding ever occurs.
|
|
43
|
+
*
|
|
44
|
+
* @param raw Amount in raw base units (integer, >= 0)
|
|
45
|
+
* @param multiplier The mint's UiAmountMultiplier as a decimal string (> 0)
|
|
46
|
+
* @param decimals The mint's decimals (>= 0)
|
|
47
|
+
* @returns The exact UI amount as a decimal string
|
|
48
|
+
* @throws if any argument is malformed, the multiplier is not positive, or raw/decimals are negative
|
|
49
|
+
*/
|
|
50
|
+
function rawToUiAmountString(raw, multiplier, decimals) {
|
|
51
|
+
if (typeof raw !== 'bigint') {
|
|
52
|
+
throw new Error(`Invalid raw amount '${String(raw)}': expected a BigInt of base units`);
|
|
53
|
+
}
|
|
54
|
+
if (raw < 0n) {
|
|
55
|
+
throw new Error(`Invalid raw amount '${raw}': must be non-negative`);
|
|
56
|
+
}
|
|
57
|
+
if (!Number.isInteger(decimals) || decimals < 0) {
|
|
58
|
+
throw new Error(`Invalid decimals '${decimals}': must be a non-negative integer`);
|
|
59
|
+
}
|
|
60
|
+
const mult = parseDecimal(multiplier, 'multiplier');
|
|
61
|
+
if (mult.negative || mult.digits === 0n) {
|
|
62
|
+
throw new Error(`Invalid multiplier '${multiplier}': must be positive`);
|
|
63
|
+
}
|
|
64
|
+
// ui = raw * (multDigits / 10^multScale) / 10^decimals
|
|
65
|
+
// = (raw * multDigits) / 10^(multScale + decimals) — exact, terminating expansion
|
|
66
|
+
const numerator = raw * mult.digits;
|
|
67
|
+
const fractionDigits = mult.scale + decimals;
|
|
68
|
+
const denominator = 10n ** BigInt(fractionDigits);
|
|
69
|
+
const quotient = numerator / denominator;
|
|
70
|
+
const remainder = numerator % denominator;
|
|
71
|
+
if (remainder === 0n) {
|
|
72
|
+
return toDecimalString({ negative: false, digits: quotient, scale: 0 });
|
|
73
|
+
}
|
|
74
|
+
// The denominator IS 10^fractionDigits, so the exact fraction digits are `remainder`
|
|
75
|
+
// zero-padded to fractionDigits — no long division needed.
|
|
76
|
+
return toDecimalString({
|
|
77
|
+
negative: false,
|
|
78
|
+
digits: quotient * 10n ** BigInt(fractionDigits) + remainder,
|
|
79
|
+
scale: fractionDigits,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Convert a scaled UI denomination to raw base units. Inverse of
|
|
84
|
+
* {@link rawToUiAmountString}: flooring an exact ui string reproduces the
|
|
85
|
+
* original raw amount.
|
|
86
|
+
*
|
|
87
|
+
* @param uiAmount The UI amount as a decimal string (>= 0)
|
|
88
|
+
* @param multiplier The mint's UiAmountMultiplier as a decimal string (> 0)
|
|
89
|
+
* @param decimals The mint's decimals (>= 0)
|
|
90
|
+
* @returns The raw amount in base units, floored to the integer unit
|
|
91
|
+
* @throws if any argument is malformed, the ui amount is negative, or the multiplier is not positive
|
|
92
|
+
*/
|
|
93
|
+
function uiAmountToRaw(uiAmount, multiplier, decimals) {
|
|
94
|
+
if (!Number.isInteger(decimals) || decimals < 0) {
|
|
95
|
+
throw new Error(`Invalid decimals '${decimals}': must be a non-negative integer`);
|
|
96
|
+
}
|
|
97
|
+
const ui = parseDecimal(uiAmount, 'uiAmount');
|
|
98
|
+
if (ui.negative) {
|
|
99
|
+
throw new Error(`Invalid uiAmount '${uiAmount}': must be non-negative`);
|
|
100
|
+
}
|
|
101
|
+
const mult = parseDecimal(multiplier, 'multiplier');
|
|
102
|
+
if (mult.negative || mult.digits === 0n) {
|
|
103
|
+
throw new Error(`Invalid multiplier '${multiplier}': must be positive`);
|
|
104
|
+
}
|
|
105
|
+
// ui = uiDigits / 10^uiScale; multiplier = multDigits / 10^multScale
|
|
106
|
+
// raw = (uiDigits / 10^uiScale) * 10^decimals * (10^multScale / multDigits)
|
|
107
|
+
// = (uiDigits * 10^(decimals + multScale)) / (multDigits * 10^uiScale)
|
|
108
|
+
const numerator = ui.digits * 10n ** BigInt(decimals + mult.scale);
|
|
109
|
+
const denominator = mult.digits * 10n ** BigInt(ui.scale);
|
|
110
|
+
return numerator / denominator; // floor — raw base units are integers
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGVkVWlBbW91bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NjYWxlZFVpQW1vdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUF3RUgsa0RBaUNDO0FBYUQsc0NBbUJDO0FBOUdELE1BQU0sdUJBQXVCLEdBQUcsZ0NBQWdDLENBQUM7QUFFakU7Ozs7O0dBS0c7QUFDSCxTQUFTLFlBQVksQ0FBQyxLQUFhLEVBQUUsSUFBWTtJQUMvQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RFLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssS0FBSyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLFFBQVEsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxRQUFRLElBQUksR0FBRyxDQUFDLENBQUM7SUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUN0RCxDQUFDO0FBRUQsMkZBQTJGO0FBQzNGLFNBQVMsZUFBZSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxL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QU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLFFBQVEsbUNBQW1DLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBQ0QsTUFBTSxFQUFFLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5QyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixRQUFRLHlCQUF5QixDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDcEQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsVUFBVSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsNEVBQTRFO0lBQzVFLDJFQUEyRTtJQUMzRSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELE9BQU8sU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDLHNDQUFzQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBCaXRHbywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8qKlxuICogU29sYW5hIFRva2VuLTIwMjIgU2NhbGVkVWlBbW91bnQgY29udmVyc2lvbiB1dGlsaXRpZXMgKENTSExELTE2ODgpLlxuICpcbiAqIEEgc2NhbGVkLVVJIG1pbnQgY2FycmllcyBhIGBVaUFtb3VudE11bHRpcGxpZXJgLiBPbi1jaGFpbiAoYW5kIHRoZXJlZm9yZSBpblxuICogZXZlcnkgc2VuZC9idWlsZCBwYXRoIG9mIHRoaXMgU0RLKSBhbW91bnRzIGFyZSByYXcgYmFzZSB1bml0czsgdGhlIFVJXG4gKiBkZW5vbWluYXRpb24gaXMgYHJhdyAqIG11bHRpcGxpZXIgLyAxMF5kZWNpbWFsc2AsIG1hdGNoaW5nIHRoZSBTUExcbiAqIHRva2VuLTIwMjIgU2NhbGVkVWlBbW91bnQgZXh0ZW5zaW9uIHNlbWFudGljcy4gVGhlc2UgdXRpbGl0aWVzIGV4aXN0IGZvclxuICogZGlzcGxheSwgcmVjb25jaWxpYXRpb24sIGFuZCBiYWxhbmNlIGNvbnZlcnNpb25zIG9ubHkg4oCUIHRoZXkgbmV2ZXIgZmVlZFxuICogdHJhbnNhY3Rpb24gYnVpbGRpbmcsIHdoaWNoIHN0YXlzIHJhdy1kZW5vbWluYXRlZC5cbiAqXG4gKiBBbGwgYXJpdGhtZXRpYyBpcyBleGFjdCBzY2FsZWQtaW50ZWdlciAoQmlnSW50KSBtYXRoIOKAlCBmbG9hdHMgYXJlIG5ldmVyIHVzZWQsXG4gKiBzbyBjb252ZXJzaW9ucyBhcmUgZGV0ZXJtaW5pc3RpYyBhY3Jvc3MgcnVudGltZXMgYW5kIGxvc2Ugbm8gcHJlY2lzaW9uOlxuICogYHJhd1RvVWlBbW91bnRTdHJpbmdgIGlzIGFsd2F5cyBleGFjdCAodGhlIGRpdmlzb3IgaXMgYSBwb3dlciBvZiB0ZW4sIHNvIHRoZVxuICogZXhhY3QgZXhwYW5zaW9uIGZpdHMgd2l0aGluIGBtdWx0aXBsaWVyU2NhbGUgKyBkZWNpbWFsc2AgZnJhY3Rpb24gZGlnaXRzKS5cbiAqIGB1aUFtb3VudFRvUmF3YCBmbG9vcnMgdG8gYW4gaW50ZWdlciBudW1iZXIgb2YgYmFzZSB1bml0cyBhbmQgaXMgdGhlIGV4YWN0XG4gKiBpbnZlcnNlIG9mIGByYXdUb1VpQW1vdW50U3RyaW5nYCB3aGVuZXZlciB0aGUgdWkgc3RyaW5nIGlzIGV4YWN0LlxuICovXG5cbi8qKiBTaWduaWZpY2FuZCBhbmQgc2NhbGUgb2YgYSBkZWNpbWFsIGxpdGVyYWw6IHZhbHVlID0gwrFkaWdpdHMgLyAxMF5zY2FsZS4gKi9cbmludGVyZmFjZSBQYXJzZWREZWNpbWFsIHtcbiAgbmVnYXRpdmU6IGJvb2xlYW47XG4gIGRpZ2l0czogYmlnaW50O1xuICBzY2FsZTogbnVtYmVyO1xufVxuXG5jb25zdCBERUNJTUFMX0xJVEVSQUxfUEFUVEVSTiA9IC9eWystXT8oPzpcXGQrKD86XFwuXFxkKik/fFxcLlxcZCspJC87XG5cbi8qKlxuICogUGFyc2UgYW4gZXhhY3QgZGVjaW1hbCBzdHJpbmcgaW50byBzY2FsZWQtaW50ZWdlciBwYXJ0cy4gUmVqZWN0cyBzY2llbnRpZmljXG4gKiBub3RhdGlvbiwgZW1wdHkgc3RyaW5ncywgTmFOL0luZmluaXR5LCBhbmQgbm9uLW51bWVyaWMgaW5wdXQuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBkZWNpbWFsIGxpdGVyYWwsIGUuZy4gXCIwLjAwMVwiOyBcIjFlLTlcIiBtdXN0IGJlIHdyaXR0ZW4gYXMgXCIwLjAwMDAwMDAwMVwiXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRGVjaW1hbCh2YWx1ZTogc3RyaW5nLCB3aGF0OiBzdHJpbmcpOiBQYXJzZWREZWNpbWFsIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgIURFQ0lNQUxfTElURVJBTF9QQVRURVJOLnRlc3QodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7d2hhdH0gJyR7dmFsdWV9JzogZXhwZWN0ZWQgYSBmaW5pdGUgZGVjaW1hbCBzdHJpbmdgKTtcbiAgfVxuICBjb25zdCBuZWdhdGl2ZSA9IHZhbHVlLnN0YXJ0c1dpdGgoJy0nKTtcbiAgY29uc3QgdW5zaWduZWQgPSBuZWdhdGl2ZSB8fCB2YWx1ZS5zdGFydHNXaXRoKCcrJykgPyB2YWx1ZS5zbGljZSgxKSA6IHZhbHVlO1xuICBjb25zdCBbaW50UGFydCA9ICcwJywgZnJhY1BhcnQgPSAnJ10gPSB1bnNpZ25lZC5zcGxpdCgnLicpO1xuICBjb25zdCBkaWdpdHMgPSBCaWdJbnQoaW50UGFydCArIGZyYWNQYXJ0IHx8ICcwJyk7XG4gIHJldHVybiB7IG5lZ2F0aXZlLCBkaWdpdHMsIHNjYWxlOiBmcmFjUGFydC5sZW5ndGggfTtcbn1cblxuLyoqIFJlbmRlciDCsWRpZ2l0cy8xMF5zY2FsZSBhcyBhIG5vcm1hbGl6ZWQgZGVjaW1hbCBzdHJpbmcgKG5vIHRyYWlsaW5nIHplcm9zLCBubyBcIi0wXCIpLiAqL1xuZnVuY3Rpb24gdG9EZWNpbWFsU3RyaW5nKHsgbmVnYXRpdmUsIGRpZ2l0cywgc2NhbGUgfTogUGFyc2VkRGVjaW1hbCk6IHN0cmluZyB7XG4gIGlmIChkaWdpdHMgPT09IDBuKSB7XG4gICAgcmV0dXJuICcwJztcbiAgfVxuICBsZXQgcyA9IGRpZ2l0cy50b1N0cmluZygpLnBhZFN0YXJ0KHNjYWxlICsgMSwgJzAnKTtcbiAgaWYgKHNjYWxlID4gMCkge1xuICAgIHMgPSBgJHtzLnNsaWNlKDAsIC1zY2FsZSl9LiR7cy5zbGljZSgtc2NhbGUpfWA7XG4gICAgcyA9IHMucmVwbGFjZSgvMCskLywgJycpLnJlcGxhY2UoL1xcLiQvLCAnJyk7XG4gIH1cbiAgcmV0dXJuIG5lZ2F0aXZlID8gYC0ke3N9YCA6IHM7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHJhdyBiYXNlLXVuaXQgYW1vdW50IHRvIGl0cyBzY2FsZWQgVUkgZGVub21pbmF0aW9uLlxuICpcbiAqIEV4YWN0IGJ5IGNvbnN0cnVjdGlvbjogdGhlIHJlc3VsdCBpcyBgcmF3ICogbXVsdGlwbGllciAvIDEwXmRlY2ltYWxzYCwgd2hvc2VcbiAqIGV4YWN0IGRlY2ltYWwgZXhwYW5zaW9uIG5ldmVyIGV4Y2VlZHMgYG11bHRpcGxpZXIgc2NhbGUgKyBkZWNpbWFsc2AgZnJhY3Rpb25cbiAqIGRpZ2l0cywgc28gbm8gcm91bmRpbmcgZXZlciBvY2N1cnMuXG4gKlxuICogQHBhcmFtIHJhdyBBbW91bnQgaW4gcmF3IGJhc2UgdW5pdHMgKGludGVnZXIsID49IDApXG4gKiBAcGFyYW0gbXVsdGlwbGllciBUaGUgbWludCdzIFVpQW1vdW50TXVsdGlwbGllciBhcyBhIGRlY2ltYWwgc3RyaW5nICg+IDApXG4gKiBAcGFyYW0gZGVjaW1hbHMgVGhlIG1pbnQncyBkZWNpbWFscyAoPj0gMClcbiAqIEByZXR1cm5zIFRoZSBleGFjdCBVSSBhbW91bnQgYXMgYSBkZWNpbWFsIHN0cmluZ1xuICogQHRocm93cyBpZiBhbnkgYXJndW1lbnQgaXMgbWFsZm9ybWVkLCB0aGUgbXVsdGlwbGllciBpcyBub3QgcG9zaXRpdmUsIG9yIHJhdy9kZWNpbWFscyBhcmUgbmVnYXRpdmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhd1RvVWlBbW91bnRTdHJpbmcocmF3OiBiaWdpbnQsIG11bHRpcGxpZXI6IHN0cmluZywgZGVjaW1hbHM6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgcmF3ICE9PSAnYmlnaW50Jykge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByYXcgYW1vdW50ICcke1N0cmluZyhyYXcpfSc6IGV4cGVjdGVkIGEgQmlnSW50IG9mIGJhc2UgdW5pdHNgKTtcbiAgfVxuICBpZiAocmF3IDwgMG4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcmF3IGFtb3VudCAnJHtyYXd9JzogbXVzdCBiZSBub24tbmVnYXRpdmVgKTtcbiAgfVxuICBpZiAoIU51bWJlci5pc0ludGVnZXIoZGVjaW1hbHMpIHx8IGRlY2ltYWxzIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZWNpbWFscyAnJHtkZWNpbWFsc30nOiBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXJgKTtcbiAgfVxuICBjb25zdCBtdWx0ID0gcGFyc2VEZWNpbWFsKG11bHRpcGxpZXIsICdtdWx0aXBsaWVyJyk7XG4gIGlmIChtdWx0Lm5lZ2F0aXZlIHx8IG11bHQuZGlnaXRzID09PSAwbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBtdWx0aXBsaWVyICcke211bHRpcGxpZXJ9JzogbXVzdCBiZSBwb3NpdGl2ZWApO1xuICB9XG5cbiAgLy8gdWkgPSByYXcgKiAobXVsdERpZ2l0cyAvIDEwXm11bHRTY2FsZSkgLyAxMF5kZWNpbWFsc1xuICAvLyAgICA9IChyYXcgKiBtdWx0RGlnaXRzKSAvIDEwXihtdWx0U2NhbGUgKyBkZWNpbWFscykgICDigJQgZXhhY3QsIHRlcm1pbmF0aW5nIGV4cGFuc2lvblxuICBjb25zdCBudW1lcmF0b3IgPSByYXcgKiBtdWx0LmRpZ2l0cztcbiAgY29uc3QgZnJhY3Rpb25EaWdpdHMgPSBtdWx0LnNjYWxlICsgZGVjaW1hbHM7XG4gIGNvbnN0IGRlbm9taW5hdG9yID0gMTBuICoqIEJpZ0ludChmcmFjdGlvbkRpZ2l0cyk7XG5cbiAgY29uc3QgcXVvdGllbnQgPSBudW1lcmF0b3IgLyBkZW5vbWluYXRvcjtcbiAgY29uc3QgcmVtYWluZGVyID0gbnVtZXJhdG9yICUgZGVub21pbmF0b3I7XG4gIGlmIChyZW1haW5kZXIgPT09IDBuKSB7XG4gICAgcmV0dXJuIHRvRGVjaW1hbFN0cmluZyh7IG5lZ2F0aXZlOiBmYWxzZSwgZGlnaXRzOiBxdW90aWVudCwgc2NhbGU6IDAgfSk7XG4gIH1cbiAgLy8gVGhlIGRlbm9taW5hdG9yIElTIDEwXmZyYWN0aW9uRGlnaXRzLCBzbyB0aGUgZXhhY3QgZnJhY3Rpb24gZGlnaXRzIGFyZSBgcmVtYWluZGVyYFxuICAvLyB6ZXJvLXBhZGRlZCB0byBmcmFjdGlvbkRpZ2l0cyDigJQgbm8gbG9uZyBkaXZpc2lvbiBuZWVkZWQuXG4gIHJldHVybiB0b0RlY2ltYWxTdHJpbmcoe1xuICAgIG5lZ2F0aXZlOiBmYWxzZSxcbiAgICBkaWdpdHM6IHF1b3RpZW50ICogMTBuICoqIEJpZ0ludChmcmFjdGlvbkRpZ2l0cykgKyByZW1haW5kZXIsXG4gICAgc2NhbGU6IGZyYWN0aW9uRGlnaXRzLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc2NhbGVkIFVJIGRlbm9taW5hdGlvbiB0byByYXcgYmFzZSB1bml0cy4gSW52ZXJzZSBvZlxuICoge0BsaW5rIHJhd1RvVWlBbW91bnRTdHJpbmd9OiBmbG9vcmluZyBhbiBleGFjdCB1aSBzdHJpbmcgcmVwcm9kdWNlcyB0aGVcbiAqIG9yaWdpbmFsIHJhdyBhbW91bnQuXG4gKlxuICogQHBhcmFtIHVpQW1vdW50IFRoZSBVSSBhbW91bnQgYXMgYSBkZWNpbWFsIHN0cmluZyAoPj0gMClcbiAqIEBwYXJhbSBtdWx0aXBsaWVyIFRoZSBtaW50J3MgVWlBbW91bnRNdWx0aXBsaWVyIGFzIGEgZGVjaW1hbCBzdHJpbmcgKD4gMClcbiAqIEBwYXJhbSBkZWNpbWFscyBUaGUgbWludCdzIGRlY2ltYWxzICg+PSAwKVxuICogQHJldHVybnMgVGhlIHJhdyBhbW91bnQgaW4gYmFzZSB1bml0cywgZmxvb3JlZCB0byB0aGUgaW50ZWdlciB1bml0XG4gKiBAdGhyb3dzIGlmIGFueSBhcmd1bWVudCBpcyBtYWxmb3JtZWQsIHRoZSB1aSBhbW91bnQgaXMgbmVnYXRpdmUsIG9yIHRoZSBtdWx0aXBsaWVyIGlzIG5vdCBwb3NpdGl2ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdWlBbW91bnRUb1Jhdyh1aUFtb3VudDogc3RyaW5nLCBtdWx0aXBsaWVyOiBzdHJpbmcsIGRlY2ltYWxzOiBudW1iZXIpOiBiaWdpbnQge1xuICBpZiAoIU51bWJlci5pc0ludGVnZXIoZGVjaW1hbHMpIHx8IGRlY2ltYWxzIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZWNpbWFscyAnJHtkZWNpbWFsc30nOiBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXJgKTtcbiAgfVxuICBjb25zdCB1aSA9IHBhcnNlRGVjaW1hbCh1aUFtb3VudCwgJ3VpQW1vdW50Jyk7XG4gIGlmICh1aS5uZWdhdGl2ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1aUFtb3VudCAnJHt1aUFtb3VudH0nOiBtdXN0IGJlIG5vbi1uZWdhdGl2ZWApO1xuICB9XG4gIGNvbnN0IG11bHQgPSBwYXJzZURlY2ltYWwobXVsdGlwbGllciwgJ211bHRpcGxpZXInKTtcbiAgaWYgKG11bHQubmVnYXRpdmUgfHwgbXVsdC5kaWdpdHMgPT09IDBuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG11bHRpcGxpZXIgJyR7bXVsdGlwbGllcn0nOiBtdXN0IGJlIHBvc2l0aXZlYCk7XG4gIH1cblxuICAvLyB1aSA9IHVpRGlnaXRzIC8gMTBedWlTY2FsZTsgIG11bHRpcGxpZXIgPSBtdWx0RGlnaXRzIC8gMTBebXVsdFNjYWxlXG4gIC8vIHJhdyA9ICh1aURpZ2l0cyAvIDEwXnVpU2NhbGUpICogMTBeZGVjaW1hbHMgKiAoMTBebXVsdFNjYWxlIC8gbXVsdERpZ2l0cylcbiAgLy8gICAgID0gKHVpRGlnaXRzICogMTBeKGRlY2ltYWxzICsgbXVsdFNjYWxlKSkgLyAobXVsdERpZ2l0cyAqIDEwXnVpU2NhbGUpXG4gIGNvbnN0IG51bWVyYXRvciA9IHVpLmRpZ2l0cyAqIDEwbiAqKiBCaWdJbnQoZGVjaW1hbHMgKyBtdWx0LnNjYWxlKTtcbiAgY29uc3QgZGVub21pbmF0b3IgPSBtdWx0LmRpZ2l0cyAqIDEwbiAqKiBCaWdJbnQodWkuc2NhbGUpO1xuICByZXR1cm4gbnVtZXJhdG9yIC8gZGVub21pbmF0b3I7IC8vIGZsb29yIOKAlCByYXcgYmFzZSB1bml0cyBhcmUgaW50ZWdlcnNcbn1cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1 (SIMD-0296/0385) transaction config codec: bit mask + value encoding.
|
|
3
|
+
*/
|
|
4
|
+
export declare const PRIORITY_FEE_BITS = 3;
|
|
5
|
+
export declare const COMPUTE_UNIT_LIMIT_BIT = 4;
|
|
6
|
+
export declare const LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT = 8;
|
|
7
|
+
export declare const HEAP_SIZE_BIT = 16;
|
|
8
|
+
export type ConfigValue = {
|
|
9
|
+
kind: 'u32' | 'u64';
|
|
10
|
+
value: number | bigint;
|
|
11
|
+
};
|
|
12
|
+
export declare function encodeConfigMaskAndValues(config: {
|
|
13
|
+
computeUnitLimit: number | null;
|
|
14
|
+
heapSize: number | null;
|
|
15
|
+
loadedAccountsDataSizeLimit: number | null;
|
|
16
|
+
priorityFee: number | null;
|
|
17
|
+
}): {
|
|
18
|
+
mask: number;
|
|
19
|
+
values: ConfigValue[];
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/serialization/codecs/v1/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,iBAAiB,IAAO,CAAC;AACtC,eAAO,MAAM,sBAAsB,IAAQ,CAAC;AAC5C,eAAO,MAAM,mCAAmC,IAAS,CAAC;AAC1D,eAAO,MAAM,aAAa,KAAU,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAE1E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAoB1C"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* v1 (SIMD-0296/0385) transaction config codec: bit mask + value encoding.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HEAP_SIZE_BIT = exports.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT = exports.COMPUTE_UNIT_LIMIT_BIT = exports.PRIORITY_FEE_BITS = void 0;
|
|
7
|
+
exports.encodeConfigMaskAndValues = encodeConfigMaskAndValues;
|
|
8
|
+
// Transaction config mask bits (mirror @solana/transaction-messages).
|
|
9
|
+
exports.PRIORITY_FEE_BITS = 0b11;
|
|
10
|
+
exports.COMPUTE_UNIT_LIMIT_BIT = 0b100;
|
|
11
|
+
exports.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT = 0b1000;
|
|
12
|
+
exports.HEAP_SIZE_BIT = 0b10000;
|
|
13
|
+
function encodeConfigMaskAndValues(config) {
|
|
14
|
+
let mask = 0;
|
|
15
|
+
const values = [];
|
|
16
|
+
if (config.priorityFee !== null) {
|
|
17
|
+
mask |= exports.PRIORITY_FEE_BITS;
|
|
18
|
+
values.push({ kind: 'u64', value: BigInt(config.priorityFee) });
|
|
19
|
+
}
|
|
20
|
+
if (config.computeUnitLimit !== null) {
|
|
21
|
+
mask |= exports.COMPUTE_UNIT_LIMIT_BIT;
|
|
22
|
+
values.push({ kind: 'u32', value: config.computeUnitLimit });
|
|
23
|
+
}
|
|
24
|
+
if (config.loadedAccountsDataSizeLimit !== null) {
|
|
25
|
+
mask |= exports.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT;
|
|
26
|
+
values.push({ kind: 'u32', value: config.loadedAccountsDataSizeLimit });
|
|
27
|
+
}
|
|
28
|
+
if (config.heapSize !== null) {
|
|
29
|
+
mask |= exports.HEAP_SIZE_BIT;
|
|
30
|
+
values.push({ kind: 'u32', value: config.heapSize });
|
|
31
|
+
}
|
|
32
|
+
return { mask, values };
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJpYWxpemF0aW9uL2NvZGVjcy92MS9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFVSCw4REF5QkM7QUFqQ0Qsc0VBQXNFO0FBQ3pELFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLFFBQUEsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0FBQy9CLFFBQUEsbUNBQW1DLEdBQUcsTUFBTSxDQUFDO0FBQzdDLFFBQUEsYUFBYSxHQUFHLE9BQU8sQ0FBQztBQUlyQyxTQUFnQix5QkFBeUIsQ0FBQyxNQUt6QztJQUNDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLE1BQU0sTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDakMsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksSUFBSSx5QkFBaUIsQ0FBQztRQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLGdCQUFnQixLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSw4QkFBc0IsQ0FBQztRQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsMkJBQTJCLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEQsSUFBSSxJQUFJLDJDQUFtQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLHFCQUFhLENBQUM7UUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHYxIChTSU1ELTAyOTYvMDM4NSkgdHJhbnNhY3Rpb24gY29uZmlnIGNvZGVjOiBiaXQgbWFzayArIHZhbHVlIGVuY29kaW5nLlxuICovXG5cbi8vIFRyYW5zYWN0aW9uIGNvbmZpZyBtYXNrIGJpdHMgKG1pcnJvciBAc29sYW5hL3RyYW5zYWN0aW9uLW1lc3NhZ2VzKS5cbmV4cG9ydCBjb25zdCBQUklPUklUWV9GRUVfQklUUyA9IDBiMTE7XG5leHBvcnQgY29uc3QgQ09NUFVURV9VTklUX0xJTUlUX0JJVCA9IDBiMTAwO1xuZXhwb3J0IGNvbnN0IExPQURFRF9BQ0NPVU5UU19EQVRBX1NJWkVfTElNSVRfQklUID0gMGIxMDAwO1xuZXhwb3J0IGNvbnN0IEhFQVBfU0laRV9CSVQgPSAwYjEwMDAwO1xuXG5leHBvcnQgdHlwZSBDb25maWdWYWx1ZSA9IHsga2luZDogJ3UzMicgfCAndTY0JzsgdmFsdWU6IG51bWJlciB8IGJpZ2ludCB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyhjb25maWc6IHtcbiAgY29tcHV0ZVVuaXRMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgaGVhcFNpemU6IG51bWJlciB8IG51bGw7XG4gIGxvYWRlZEFjY291bnRzRGF0YVNpemVMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3JpdHlGZWU6IG51bWJlciB8IG51bGw7XG59KTogeyBtYXNrOiBudW1iZXI7IHZhbHVlczogQ29uZmlnVmFsdWVbXSB9IHtcbiAgbGV0IG1hc2sgPSAwO1xuICBjb25zdCB2YWx1ZXM6IENvbmZpZ1ZhbHVlW10gPSBbXTtcbiAgaWYgKGNvbmZpZy5wcmlvcml0eUZlZSAhPT0gbnVsbCkge1xuICAgIG1hc2sgfD0gUFJJT1JJVFlfRkVFX0JJVFM7XG4gICAgdmFsdWVzLnB1c2goeyBraW5kOiAndTY0JywgdmFsdWU6IEJpZ0ludChjb25maWcucHJpb3JpdHlGZWUpIH0pO1xuICB9XG4gIGlmIChjb25maWcuY29tcHV0ZVVuaXRMaW1pdCAhPT0gbnVsbCkge1xuICAgIG1hc2sgfD0gQ09NUFVURV9VTklUX0xJTUlUX0JJVDtcbiAgICB2YWx1ZXMucHVzaCh7IGtpbmQ6ICd1MzInLCB2YWx1ZTogY29uZmlnLmNvbXB1dGVVbml0TGltaXQgfSk7XG4gIH1cbiAgaWYgKGNvbmZpZy5sb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQgIT09IG51bGwpIHtcbiAgICBtYXNrIHw9IExPQURFRF9BQ0NPVU5UU19EQVRBX1NJWkVfTElNSVRfQklUO1xuICAgIHZhbHVlcy5wdXNoKHsga2luZDogJ3UzMicsIHZhbHVlOiBjb25maWcubG9hZGVkQWNjb3VudHNEYXRhU2l6ZUxpbWl0IH0pO1xuICB9XG4gIGlmIChjb25maWcuaGVhcFNpemUgIT09IG51bGwpIHtcbiAgICBtYXNrIHw9IEhFQVBfU0laRV9CSVQ7XG4gICAgdmFsdWVzLnB1c2goeyBraW5kOiAndTMyJywgdmFsdWU6IGNvbmZpZy5oZWFwU2l6ZSB9KTtcbiAgfVxuICByZXR1cm4geyBtYXNrLCB2YWx1ZXMgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1 (SIMD-0296/0385) transaction instruction codec: header + payload encoding.
|
|
3
|
+
*/
|
|
4
|
+
export type CompiledInstruction = {
|
|
5
|
+
programAddressIndex: number;
|
|
6
|
+
accountIndices: number[];
|
|
7
|
+
data: Uint8Array;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Encode instruction headers (4 bytes each) then payloads for the given
|
|
11
|
+
* compiled instructions, appending to `buf`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function encodeInstructions(buf: number[], instructions: CompiledInstruction[]): void;
|
|
14
|
+
//# sourceMappingURL=instruction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/serialization/codecs/v1/instruction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,mBAAmB,GAAG;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AASF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAc3F"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* v1 (SIMD-0296/0385) transaction instruction codec: header + payload encoding.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.encodeInstructions = encodeInstructions;
|
|
7
|
+
function pushU8(buf, v) {
|
|
8
|
+
buf.push(v & 0xff);
|
|
9
|
+
}
|
|
10
|
+
function pushU16LE(buf, v) {
|
|
11
|
+
buf.push(v & 0xff, (v >>> 8) & 0xff);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Encode instruction headers (4 bytes each) then payloads for the given
|
|
15
|
+
* compiled instructions, appending to `buf`.
|
|
16
|
+
*/
|
|
17
|
+
function encodeInstructions(buf, instructions) {
|
|
18
|
+
for (const instruction of instructions) {
|
|
19
|
+
pushU8(buf, instruction.programAddressIndex);
|
|
20
|
+
pushU8(buf, instruction.accountIndices.length);
|
|
21
|
+
pushU16LE(buf, instruction.data.length);
|
|
22
|
+
}
|
|
23
|
+
for (const instruction of instructions) {
|
|
24
|
+
for (const idx of instruction.accountIndices) {
|
|
25
|
+
pushU8(buf, idx);
|
|
26
|
+
}
|
|
27
|
+
for (const b of instruction.data) {
|
|
28
|
+
pushU8(buf, b);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcmlhbGl6YXRpb24vY29kZWNzL3YxL2luc3RydWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUFtQkgsZ0RBY0M7QUF6QkQsU0FBUyxNQUFNLENBQUMsR0FBYSxFQUFFLENBQVM7SUFDdEMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUNELFNBQVMsU0FBUyxDQUFDLEdBQWEsRUFBRSxDQUFTO0lBQ3pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsR0FBYSxFQUFFLFlBQW1DO0lBQ25GLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsTUFBTSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUNELEtBQUssTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB2MSAoU0lNRC0wMjk2LzAzODUpIHRyYW5zYWN0aW9uIGluc3RydWN0aW9uIGNvZGVjOiBoZWFkZXIgKyBwYXlsb2FkIGVuY29kaW5nLlxuICovXG5cbmV4cG9ydCB0eXBlIENvbXBpbGVkSW5zdHJ1Y3Rpb24gPSB7XG4gIHByb2dyYW1BZGRyZXNzSW5kZXg6IG51bWJlcjtcbiAgYWNjb3VudEluZGljZXM6IG51bWJlcltdO1xuICBkYXRhOiBVaW50OEFycmF5O1xufTtcblxuZnVuY3Rpb24gcHVzaFU4KGJ1ZjogbnVtYmVyW10sIHY6IG51bWJlcikge1xuICBidWYucHVzaCh2ICYgMHhmZik7XG59XG5mdW5jdGlvbiBwdXNoVTE2TEUoYnVmOiBudW1iZXJbXSwgdjogbnVtYmVyKSB7XG4gIGJ1Zi5wdXNoKHYgJiAweGZmLCAodiA+Pj4gOCkgJiAweGZmKTtcbn1cblxuLyoqXG4gKiBFbmNvZGUgaW5zdHJ1Y3Rpb24gaGVhZGVycyAoNCBieXRlcyBlYWNoKSB0aGVuIHBheWxvYWRzIGZvciB0aGUgZ2l2ZW5cbiAqIGNvbXBpbGVkIGluc3RydWN0aW9ucywgYXBwZW5kaW5nIHRvIGBidWZgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlSW5zdHJ1Y3Rpb25zKGJ1ZjogbnVtYmVyW10sIGluc3RydWN0aW9uczogQ29tcGlsZWRJbnN0cnVjdGlvbltdKTogdm9pZCB7XG4gIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgaW5zdHJ1Y3Rpb25zKSB7XG4gICAgcHVzaFU4KGJ1ZiwgaW5zdHJ1Y3Rpb24ucHJvZ3JhbUFkZHJlc3NJbmRleCk7XG4gICAgcHVzaFU4KGJ1ZiwgaW5zdHJ1Y3Rpb24uYWNjb3VudEluZGljZXMubGVuZ3RoKTtcbiAgICBwdXNoVTE2TEUoYnVmLCBpbnN0cnVjdGlvbi5kYXRhLmxlbmd0aCk7XG4gIH1cbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IGlkeCBvZiBpbnN0cnVjdGlvbi5hY2NvdW50SW5kaWNlcykge1xuICAgICAgcHVzaFU4KGJ1ZiwgaWR4KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBiIG9mIGluc3RydWN0aW9uLmRhdGEpIHtcbiAgICAgIHB1c2hVOChidWYsIGIpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { encodeConfigMaskAndValues, ConfigValue } from './config';
|
|
2
|
+
import { CompiledInstruction } from './instruction';
|
|
3
|
+
export type V1MessageHeader = {
|
|
4
|
+
numSignerAccounts: number;
|
|
5
|
+
numReadonlySignerAccounts: number;
|
|
6
|
+
numReadonlyNonSignerAccounts: number;
|
|
7
|
+
};
|
|
8
|
+
export declare function encodeV1Message(args: {
|
|
9
|
+
header: V1MessageHeader;
|
|
10
|
+
configMask: number;
|
|
11
|
+
configValues: ConfigValue[];
|
|
12
|
+
blockhash: string;
|
|
13
|
+
staticAccounts: string[];
|
|
14
|
+
compiledInstructions: CompiledInstruction[];
|
|
15
|
+
}): Uint8Array;
|
|
16
|
+
export { encodeConfigMaskAndValues };
|
|
17
|
+
export type V1DecodedMessage = {
|
|
18
|
+
header: V1MessageHeader;
|
|
19
|
+
configMask: number;
|
|
20
|
+
configValues: ConfigValue[];
|
|
21
|
+
blockhash: string;
|
|
22
|
+
staticAccounts: string[];
|
|
23
|
+
compiledInstructions: CompiledInstruction[];
|
|
24
|
+
byteLength: number;
|
|
25
|
+
};
|
|
26
|
+
export declare function decodeV1Message(bytes: Uint8Array): V1DecodedMessage;
|
|
27
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/serialization/codecs/v1/message.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,EACzB,WAAW,EAKZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAsB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAuBxE,MAAM,MAAM,eAAe,GAAG;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,MAAM,CAAC;IAClC,4BAA4B,EAAE,MAAM,CAAC;CACtC,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C,GAAG,UAAU,CA+Bb;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAUrC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAyBF,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,CAwGnE"}
|
|
@@ -0,0 +1,196 @@
|
|
|
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.encodeConfigMaskAndValues = void 0;
|
|
7
|
+
exports.encodeV1Message = encodeV1Message;
|
|
8
|
+
exports.decodeV1Message = decodeV1Message;
|
|
9
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
10
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
11
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
12
|
+
const config_1 = require("./config");
|
|
13
|
+
Object.defineProperty(exports, "encodeConfigMaskAndValues", { enumerable: true, get: function () { return config_1.encodeConfigMaskAndValues; } });
|
|
14
|
+
const instruction_1 = require("./instruction");
|
|
15
|
+
/**
|
|
16
|
+
* v1 (SIMD-0296/0385) transaction message wire encoder.
|
|
17
|
+
*
|
|
18
|
+
* Layout: [version: 0x81][header: 3 x u8][configMask: u32 LE][blockhash: 32]
|
|
19
|
+
* [numInstructions: u8][numStaticAccounts: u8]
|
|
20
|
+
* [staticAccounts: 32 x n][configValues: per mask]
|
|
21
|
+
* [instructionHeaders: 4 x n][instructionPayloads: per instruction]
|
|
22
|
+
*/
|
|
23
|
+
function pushU8(buf, v) {
|
|
24
|
+
buf.push(v & 0xff);
|
|
25
|
+
}
|
|
26
|
+
function pushU32LE(buf, v) {
|
|
27
|
+
buf.push(v & 0xff, (v >>> 8) & 0xff, (v >>> 16) & 0xff, (v >>> 24) & 0xff);
|
|
28
|
+
}
|
|
29
|
+
function pushU64LE(buf, v) {
|
|
30
|
+
for (let i = 0; i < 8; i++) {
|
|
31
|
+
buf.push(Number((v >> BigInt(8 * i)) & 0xffn));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function encodeV1Message(args) {
|
|
35
|
+
const { header, configMask, configValues, blockhash, staticAccounts, compiledInstructions } = args;
|
|
36
|
+
let blockhashBytes;
|
|
37
|
+
try {
|
|
38
|
+
blockhashBytes = bs58_1.default.decode(blockhash);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
throw new sdk_core_1.BuildTransactionError('Invalid recent blockhash');
|
|
42
|
+
}
|
|
43
|
+
if (blockhashBytes.length !== 32) {
|
|
44
|
+
throw new sdk_core_1.BuildTransactionError('Invalid recent blockhash');
|
|
45
|
+
}
|
|
46
|
+
const buf = [];
|
|
47
|
+
pushU8(buf, 0x81); // version
|
|
48
|
+
pushU8(buf, header.numSignerAccounts);
|
|
49
|
+
pushU8(buf, header.numReadonlySignerAccounts);
|
|
50
|
+
pushU8(buf, header.numReadonlyNonSignerAccounts);
|
|
51
|
+
pushU32LE(buf, configMask);
|
|
52
|
+
for (const b of blockhashBytes)
|
|
53
|
+
pushU8(buf, b);
|
|
54
|
+
pushU8(buf, compiledInstructions.length);
|
|
55
|
+
pushU8(buf, staticAccounts.length);
|
|
56
|
+
for (const account of staticAccounts) {
|
|
57
|
+
for (const b of new web3_js_1.PublicKey(account).toBytes())
|
|
58
|
+
pushU8(buf, b);
|
|
59
|
+
}
|
|
60
|
+
for (const value of configValues) {
|
|
61
|
+
if (value.kind === 'u64')
|
|
62
|
+
pushU64LE(buf, value.value);
|
|
63
|
+
else
|
|
64
|
+
pushU32LE(buf, value.value);
|
|
65
|
+
}
|
|
66
|
+
(0, instruction_1.encodeInstructions)(buf, compiledInstructions);
|
|
67
|
+
return new Uint8Array(buf);
|
|
68
|
+
}
|
|
69
|
+
const V1_VERSION_PREFIX = 0x81;
|
|
70
|
+
const KNOWN_CONFIG_MASK = config_1.PRIORITY_FEE_BITS | config_1.COMPUTE_UNIT_LIMIT_BIT | config_1.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT | config_1.HEAP_SIZE_BIT;
|
|
71
|
+
const MAX_ACCOUNTS = 64;
|
|
72
|
+
const MAX_INSTRUCTIONS = 64;
|
|
73
|
+
const MAX_ACCOUNTS_PER_INSTRUCTION = 255;
|
|
74
|
+
const STATIC_ACCOUNT_BYTES = 32;
|
|
75
|
+
function readU8(b, o) {
|
|
76
|
+
return b[o];
|
|
77
|
+
}
|
|
78
|
+
function readU16LE(b, o) {
|
|
79
|
+
return b[o] | (b[o + 1] << 8);
|
|
80
|
+
}
|
|
81
|
+
function readU32LE(b, o) {
|
|
82
|
+
return (b[o] | (b[o + 1] << 8) | (b[o + 2] << 16) | (b[o + 3] << 24)) >>> 0;
|
|
83
|
+
}
|
|
84
|
+
function readU64LE(b, o) {
|
|
85
|
+
let v = 0n;
|
|
86
|
+
for (let i = 0; i < 8; i++) {
|
|
87
|
+
v |= BigInt(b[o + i]) << BigInt(8 * i);
|
|
88
|
+
}
|
|
89
|
+
return v;
|
|
90
|
+
}
|
|
91
|
+
function ensureAvailable(b, off, size) {
|
|
92
|
+
if (off + size > b.length) {
|
|
93
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 message: truncated');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function decodeV1Message(bytes) {
|
|
97
|
+
if (!bytes || bytes.length < 42) {
|
|
98
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 message: too short');
|
|
99
|
+
}
|
|
100
|
+
let off = 0;
|
|
101
|
+
if (bytes[off++] !== V1_VERSION_PREFIX) {
|
|
102
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid v1 version prefix: 0x${bytes[0].toString(16)}`);
|
|
103
|
+
}
|
|
104
|
+
const numSignerAccounts = readU8(bytes, off++);
|
|
105
|
+
const numReadonlySignerAccounts = readU8(bytes, off++);
|
|
106
|
+
const numReadonlyNonSignerAccounts = readU8(bytes, off++);
|
|
107
|
+
const configMask = readU32LE(bytes, off);
|
|
108
|
+
off += 4;
|
|
109
|
+
if ((configMask & ~KNOWN_CONFIG_MASK) !== 0) {
|
|
110
|
+
throw new sdk_core_1.BuildTransactionError(`Unknown config mask bits: ${(configMask & ~KNOWN_CONFIG_MASK).toString(2)}`);
|
|
111
|
+
}
|
|
112
|
+
const blockhash = bs58_1.default.encode(bytes.slice(off, off + STATIC_ACCOUNT_BYTES));
|
|
113
|
+
off += STATIC_ACCOUNT_BYTES;
|
|
114
|
+
const numInstructions = readU8(bytes, off++);
|
|
115
|
+
const numStaticAccounts = readU8(bytes, off++);
|
|
116
|
+
if (numStaticAccounts > MAX_ACCOUNTS) {
|
|
117
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 message: too many static accounts');
|
|
118
|
+
}
|
|
119
|
+
if (numInstructions > MAX_INSTRUCTIONS) {
|
|
120
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 message: too many instructions');
|
|
121
|
+
}
|
|
122
|
+
if (numReadonlySignerAccounts > numSignerAccounts) {
|
|
123
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 header: readonly signers exceed signers');
|
|
124
|
+
}
|
|
125
|
+
if (numSignerAccounts + numReadonlyNonSignerAccounts > numStaticAccounts) {
|
|
126
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 header: signers + readonly non-signers exceed static accounts');
|
|
127
|
+
}
|
|
128
|
+
const staticAccounts = [];
|
|
129
|
+
for (let i = 0; i < numStaticAccounts; i++) {
|
|
130
|
+
ensureAvailable(bytes, off, STATIC_ACCOUNT_BYTES);
|
|
131
|
+
staticAccounts.push(bs58_1.default.encode(bytes.slice(off, off + STATIC_ACCOUNT_BYTES)));
|
|
132
|
+
off += STATIC_ACCOUNT_BYTES;
|
|
133
|
+
}
|
|
134
|
+
const configValues = [];
|
|
135
|
+
if (configMask & config_1.PRIORITY_FEE_BITS) {
|
|
136
|
+
ensureAvailable(bytes, off, 8);
|
|
137
|
+
configValues.push({ kind: 'u64', value: readU64LE(bytes, off) });
|
|
138
|
+
off += 8;
|
|
139
|
+
}
|
|
140
|
+
if (configMask & config_1.COMPUTE_UNIT_LIMIT_BIT) {
|
|
141
|
+
ensureAvailable(bytes, off, 4);
|
|
142
|
+
configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
|
|
143
|
+
off += 4;
|
|
144
|
+
}
|
|
145
|
+
if (configMask & config_1.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT) {
|
|
146
|
+
ensureAvailable(bytes, off, 4);
|
|
147
|
+
configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
|
|
148
|
+
off += 4;
|
|
149
|
+
}
|
|
150
|
+
if (configMask & config_1.HEAP_SIZE_BIT) {
|
|
151
|
+
ensureAvailable(bytes, off, 4);
|
|
152
|
+
configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
|
|
153
|
+
off += 4;
|
|
154
|
+
}
|
|
155
|
+
const headers = [];
|
|
156
|
+
for (let i = 0; i < numInstructions; i++) {
|
|
157
|
+
ensureAvailable(bytes, off, 4);
|
|
158
|
+
const programAddressIndex = readU8(bytes, off++);
|
|
159
|
+
const accountCount = readU8(bytes, off++);
|
|
160
|
+
const dataLength = readU16LE(bytes, off);
|
|
161
|
+
off += 2;
|
|
162
|
+
if (programAddressIndex >= numStaticAccounts) {
|
|
163
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 instruction: program index out of range');
|
|
164
|
+
}
|
|
165
|
+
if (accountCount > MAX_ACCOUNTS_PER_INSTRUCTION) {
|
|
166
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 instruction: too many accounts');
|
|
167
|
+
}
|
|
168
|
+
headers.push({ programAddressIndex, accountCount, dataLength });
|
|
169
|
+
}
|
|
170
|
+
const compiledInstructions = [];
|
|
171
|
+
for (const h of headers) {
|
|
172
|
+
ensureAvailable(bytes, off, h.accountCount);
|
|
173
|
+
const accountIndices = [];
|
|
174
|
+
for (let i = 0; i < h.accountCount; i++) {
|
|
175
|
+
const idx = readU8(bytes, off++);
|
|
176
|
+
if (idx >= numStaticAccounts) {
|
|
177
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 instruction: account index out of range');
|
|
178
|
+
}
|
|
179
|
+
accountIndices.push(idx);
|
|
180
|
+
}
|
|
181
|
+
ensureAvailable(bytes, off, h.dataLength);
|
|
182
|
+
const data = bytes.slice(off, off + h.dataLength);
|
|
183
|
+
off += h.dataLength;
|
|
184
|
+
compiledInstructions.push({ programAddressIndex: h.programAddressIndex, accountIndices, data });
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
header: { numSignerAccounts, numReadonlySignerAccounts, numReadonlyNonSignerAccounts },
|
|
188
|
+
configMask,
|
|
189
|
+
configValues,
|
|
190
|
+
blockhash,
|
|
191
|
+
staticAccounts,
|
|
192
|
+
compiledInstructions,
|
|
193
|
+
byteLength: off,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi9jb2RlY3MvdjEvbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUF3Q0EsMENBc0NDO0FBNkNELDBDQXdHQztBQW5PRCxnREFBd0I7QUFDeEIsNkNBQTRDO0FBQzVDLG1EQUE2RDtBQUM3RCxxQ0FPa0I7QUFzRVQsMEdBNUVQLGtDQUF5QixPQTRFTztBQXJFbEMsK0NBQXdFO0FBRXhFOzs7Ozs7O0dBT0c7QUFFSCxTQUFTLE1BQU0sQ0FBQyxHQUFhLEVBQUUsQ0FBUztJQUN0QyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBQ0QsU0FBUyxTQUFTLENBQUMsR0FBYSxFQUFFLENBQVM7SUFDekMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUNELFNBQVMsU0FBUyxDQUFDLEdBQWEsRUFBRSxDQUFTO0lBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQztBQVFELFNBQWdCLGVBQWUsQ0FBQyxJQU8vQjtJQUNDLE1BQU0sRUFBRSxNQUFNLEVBQUUs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R0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEIsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsNEJBQTRCLEVBQUU7UUFDdEYsVUFBVTtRQUNWLFlBQVk7UUFDWixTQUFTO1FBQ1QsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixVQUFVLEVBQUUsR0FBRztLQUNoQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgUHVibGljS2V5IH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIGVuY29kZUNvbmZpZ01hc2tBbmRWYWx1ZXMsXG4gIENvbmZpZ1ZhbHVlLFxuICBQUklPUklUWV9GRUVfQklUUyxcbiAgQ09NUFVURV9VTklUX0xJTUlUX0JJVCxcbiAgTE9BREVEX0FDQ09VTlRTX0RBVEFfU0laRV9MSU1JVF9CSVQsXG4gIEhFQVBfU0laRV9CSVQsXG59IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IGVuY29kZUluc3RydWN0aW9ucywgQ29tcGlsZWRJbnN0cnVjdGlvbiB9IGZyb20gJy4vaW5zdHJ1Y3Rpb24nO1xuXG4vKipcbiAqIHYxIChTSU1ELTAyOTYvMDM4NSkgdHJhbnNhY3Rpb24gbWVzc2FnZSB3aXJlIGVuY29kZXIuXG4gKlxuICogTGF5b3V0OiBbdmVyc2lvbjogMHg4MV1baGVhZGVyOiAzIHggdThdW2NvbmZpZ01hc2s6IHUzMiBMRV1bYmxvY2toYXNoOiAzMl1cbiAqICAgW251bUluc3RydWN0aW9uczogdThdW251bVN0YXRpY0FjY291bnRzOiB1OF1cbiAqICAgW3N0YXRpY0FjY291bnRzOiAzMiB4IG5dW2NvbmZpZ1ZhbHVlczogcGVyIG1hc2tdXG4gKiAgIFtpbnN0cnVjdGlvbkhlYWRlcnM6IDQgeCBuXVtpbnN0cnVjdGlvblBheWxvYWRzOiBwZXIgaW5zdHJ1Y3Rpb25dXG4gKi9cblxuZnVuY3Rpb24gcHVzaFU4KGJ1ZjogbnVtYmVyW10sIHY6IG51bWJlcikge1xuICBidWYucHVzaCh2ICYgMHhmZik7XG59XG5mdW5jdGlvbiBwdXNoVTMyTEUoYnVmOiBudW1iZXJbXSwgdjogbnVtYmVyKSB7XG4gIGJ1Zi5wdXNoKHYgJiAweGZmLCAodiA+Pj4gOCkgJiAweGZmLCAodiA+Pj4gMTYpICYgMHhmZiwgKHYgPj4+IDI0KSAmIDB4ZmYpO1xufVxuZnVuY3Rpb24gcHVzaFU2NExFKGJ1ZjogbnVtYmVyW10sIHY6IGJpZ2ludCkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDg7IGkrKykge1xuICAgIGJ1Zi5wdXNoKE51bWJlcigodiA+PiBCaWdJbnQoOCAqIGkpKSAmIDB4ZmZuKSk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVjFNZXNzYWdlSGVhZGVyID0ge1xuICBudW1TaWduZXJBY2NvdW50czogbnVtYmVyO1xuICBudW1SZWFkb25seVNpZ25lckFjY291bnRzOiBudW1iZXI7XG4gIG51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHM6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVWMU1lc3NhZ2UoYXJnczoge1xuICBoZWFkZXI6IFYxTWVzc2FnZUhlYWRlcjtcbiAgY29uZmlnTWFzazogbnVtYmVyO1xuICBjb25maWdWYWx1ZXM6IENvbmZpZ1ZhbHVlW107XG4gIGJsb2NraGFzaDogc3RyaW5nO1xuICBzdGF0aWNBY2NvdW50czogc3RyaW5nW107XG4gIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zOiBDb21waWxlZEluc3RydWN0aW9uW107XG59KTogVWludDhBcnJheSB7XG4gIGNvbnN0IHsgaGVhZGVyLCBjb25maWdNYXNrLCBjb25maWdWYWx1ZXMsIGJsb2NraGFzaCwgc3RhdGljQWNjb3VudHMsIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zIH0gPSBhcmdzO1xuXG4gIGxldCBibG9ja2hhc2hCeXRlczogVWludDhBcnJheTtcbiAgdHJ5IHtcbiAgICBibG9ja2hhc2hCeXRlcyA9IGJzNTguZGVjb2RlKGJsb2NraGFzaCk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmVjZW50IGJsb2NraGFzaCcpO1xuICB9XG4gIGlmIChibG9ja2hhc2hCeXRlcy5sZW5ndGggIT09IDMyKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByZWNlbnQgYmxvY2toYXNoJyk7XG4gIH1cblxuICBjb25zdCBidWY6IG51bWJlcltdID0gW107XG4gIHB1c2hVOChidWYsIDB4ODEpOyAvLyB2ZXJzaW9uXG4gIHB1c2hVOChidWYsIGhlYWRlci5udW1TaWduZXJBY2NvdW50cyk7XG4gIHB1c2hVOChidWYsIGhlYWRlci5udW1SZWFkb25seVNpZ25lckFjY291bnRzKTtcbiAgcHVzaFU4KGJ1ZiwgaGVhZGVyLm51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHMpO1xuICBwdXNoVTMyTEUoYnVmLCBjb25maWdNYXNrKTtcbiAgZm9yIChjb25zdCBiIG9mIGJsb2NraGFzaEJ5dGVzKSBwdXNoVTgoYnVmLCBiKTtcbiAgcHVzaFU4KGJ1ZiwgY29tcGlsZWRJbnN0cnVjdGlvbnMubGVuZ3RoKTtcbiAgcHVzaFU4KGJ1Ziwgc3RhdGljQWNjb3VudHMubGVuZ3RoKTtcbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIHN0YXRpY0FjY291bnRzKSB7XG4gICAgZm9yIChjb25zdCBiIG9mIG5ldyBQdWJsaWNLZXkoYWNjb3VudCkudG9CeXRlcygpKSBwdXNoVTgoYnVmLCBiKTtcbiAgfVxuICBmb3IgKGNvbnN0IHZhbHVlIG9mIGNvbmZpZ1ZhbHVlcykge1xuICAgIGlmICh2YWx1ZS5raW5kID09PSAndTY0JykgcHVzaFU2NExFKGJ1ZiwgdmFsdWUudmFsdWUgYXMgYmlnaW50KTtcbiAgICBlbHNlIHB1c2hVMzJMRShidWYsIHZhbHVlLnZhbHVlIGFzIG51bWJlcik7XG4gIH1cbiAgZW5jb2RlSW5zdHJ1Y3Rpb25zKGJ1ZiwgY29tcGlsZWRJbnN0cnVjdGlvbnMpO1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbn1cblxuZXhwb3J0IHsgZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyB9O1xuXG5jb25zdCBWMV9WRVJTSU9OX1BSRUZJWCA9IDB4ODE7XG5jb25zdCBLTk9XTl9DT05GSUdfTUFTSyA9XG4gIFBSSU9SSVRZX0ZFRV9CSVRTIHwgQ09NUFVURV9VTklUX0xJTUlUX0JJVCB8IExPQURFRF9BQ0NPVU5UU19EQVRBX1NJWkVfTElNSVRfQklUIHwgSEVBUF9TSVpFX0JJVDtcbmNvbnN0IE1BWF9BQ0NPVU5UUyA9IDY0O1xuY29uc3QgTUFYX0lOU1RSVUNUSU9OUyA9IDY0O1xuY29uc3QgTUFYX0FDQ09VTlRTX1BFUl9JTlNUUlVDVElPTiA9IDI1NTtcbmNvbnN0IFNUQVRJQ19BQ0NPVU5UX0JZVEVTID0gMzI7XG5cbmV4cG9ydCB0eXBlIFYxRGVjb2RlZE1lc3NhZ2UgPSB7XG4gIGhlYWRlcjogVjFNZXNzYWdlSGVhZGVyO1xuICBjb25maWdNYXNrOiBudW1iZXI7XG4gIGNvbmZpZ1ZhbHVlczogQ29uZmlnVmFsdWVbXTtcbiAgYmxvY2toYXNoOiBzdHJpbmc7XG4gIHN0YXRpY0FjY291bnRzOiBzdHJpbmdbXTtcbiAgY29tcGlsZWRJbnN0cnVjdGlvbnM6IENvbXBpbGVkSW5zdHJ1Y3Rpb25bXTtcbiAgYnl0ZUxlbmd0aDogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gcmVhZFU4KGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBiW29dO1xufVxuZnVuY3Rpb24gcmVhZFUxNkxFKGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBiW29dIHwgKGJbbyArIDFdIDw8IDgpO1xufVxuZnVuY3Rpb24gcmVhZFUzMkxFKGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoYltvXSB8IChiW28gKyAxXSA8PCA4KSB8IChiW28gKyAyXSA8PCAxNikgfCAoYltvICsgM10gPDwgMjQpKSA+Pj4gMDtcbn1cbmZ1bmN0aW9uIHJlYWRVNjRMRShiOiBVaW50OEFycmF5LCBvOiBudW1iZXIpOiBiaWdpbnQge1xuICBsZXQgdiA9IDBuO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDg7IGkrKykge1xuICAgIHYgfD0gQmlnSW50KGJbbyArIGldKSA8PCBCaWdJbnQoOCAqIGkpO1xuICB9XG4gIHJldHVybiB2O1xufVxuXG5mdW5jdGlvbiBlbnN1cmVBdmFpbGFibGUoYjogVWludDhBcnJheSwgb2ZmOiBudW1iZXIsIHNpemU6IG51bWJlcik6IHZvaWQge1xuICBpZiAob2ZmICsgc2l6ZSA+IGIubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBtZXNzYWdlOiB0cnVuY2F0ZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVjFNZXNzYWdlKGJ5dGVzOiBVaW50OEFycmF5KTogVjFEZWNvZGVkTWVzc2FnZSB7XG4gIGlmICghYnl0ZXMgfHwgYnl0ZXMubGVuZ3RoIDwgNDIpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIG1lc3NhZ2U6IHRvbyBzaG9ydCcpO1xuICB9XG4gIGxldCBvZmYgPSAwO1xuICBpZiAoYnl0ZXNbb2ZmKytdICE9PSBWMV9WRVJTSU9OX1BSRUZJWCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgdjEgdmVyc2lvbiBwcmVmaXg6IDB4JHtieXRlc1swXS50b1N0cmluZygxNil9YCk7XG4gIH1cbiAgY29uc3QgbnVtU2lnbmVyQWNjb3VudHMgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgY29uc3QgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cyA9IHJlYWRVOChieXRlcywgb2ZmKyspO1xuICBjb25zdCBudW1SZWFkb25seU5vblNpZ25lckFjY291bnRzID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGNvbnN0IGNvbmZpZ01hc2sgPSByZWFkVTMyTEUoYnl0ZXMsIG9mZik7XG4gIG9mZiArPSA0O1xuICBpZiAoKGNvbmZpZ01hc2sgJiB+S05PV05fQ09ORklHX01BU0spICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgVW5rbm93biBjb25maWcgbWFzayBiaXRzOiAkeyhjb25maWdNYXNrICYgfktOT1dOX0NPTkZJR19NQVNLKS50b1N0cmluZygyKX1gKTtcbiAgfVxuICBjb25zdCBibG9ja2hhc2ggPSBiczU4LmVuY29kZShieXRlcy5zbGljZShvZmYsIG9mZiArIFNUQVRJQ19BQ0NPVU5UX0JZVEVTKSk7XG4gIG9mZiArPSBTVEFUSUNfQUNDT1VOVF9CWVRFUztcbiAgY29uc3QgbnVtSW5zdHJ1Y3Rpb25zID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGNvbnN0IG51bVN0YXRpY0FjY291bnRzID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGlmIChudW1TdGF0aWNBY2NvdW50cyA+IE1BWF9BQ0NPVU5UUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgbWVzc2FnZTogdG9vIG1hbnkgc3RhdGljIGFjY291bnRzJyk7XG4gIH1cbiAgaWYgKG51bUluc3RydWN0aW9ucyA+IE1BWF9JTlNUUlVDVElPTlMpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIG1lc3NhZ2U6IHRvbyBtYW55IGluc3RydWN0aW9ucycpO1xuICB9XG4gIGlmIChudW1SZWFkb25seVNpZ25lckFjY291bnRzID4gbnVtU2lnbmVyQWNjb3VudHMpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIGhlYWRlcjogcmVhZG9ubHkgc2lnbmVycyBleGNlZWQgc2lnbmVycycpO1xuICB9XG4gIGlmIChudW1TaWduZXJBY2NvdW50cyArIG51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHMgPiBudW1TdGF0aWNBY2NvdW50cykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaGVhZGVyOiBzaWduZXJzICsgcmVhZG9ubHkgbm9uLXNpZ25lcnMgZXhjZWVkIHN0YXRpYyBhY2NvdW50cycpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGljQWNjb3VudHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtU3RhdGljQWNjb3VudHM7IGkrKykge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCBTVEFUSUNfQUNDT1VOVF9CWVRFUyk7XG4gICAgc3RhdGljQWNjb3VudHMucHVzaChiczU4LmVuY29kZShieXRlcy5zbGljZShvZmYsIG9mZiArIFNUQVRJQ19BQ0NPVU5UX0JZVEVTKSkpO1xuICAgIG9mZiArPSBTVEFUSUNfQUNDT1VOVF9CWVRFUztcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZ1ZhbHVlczogQ29uZmlnVmFsdWVbXSA9IFtdO1xuICBpZiAoY29uZmlnTWFzayAmIFBSSU9SSVRZX0ZFRV9CSVRTKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDgpO1xuICAgIGNvbmZpZ1ZhbHVlcy5wdXNoKHsga2luZDogJ3U2NCcsIHZhbHVlOiByZWFkVTY0TEUoYnl0ZXMsIG9mZikgfSk7XG4gICAgb2ZmICs9IDg7XG4gIH1cbiAgaWYgKGNvbmZpZ01hc2sgJiBDT01QVVRFX1VOSVRfTElNSVRfQklUKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDQpO1xuICAgIGNvbmZpZ1ZhbHVlcy5wdXNoKHsga2luZDogJ3UzMicsIHZhbHVlOiByZWFkVTMyTEUoYnl0ZXMsIG9mZikgfSk7XG4gICAgb2ZmICs9IDQ7XG4gIH1cbiAgaWYgKGNvbmZpZ01hc2sgJiBMT0FERURfQUNDT1VOVFNfREFUQV9TSVpFX0xJTUlUX0JJVCkge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCA0KTtcbiAgICBjb25maWdWYWx1ZXMucHVzaCh7IGtpbmQ6ICd1MzInLCB2YWx1ZTogcmVhZFUzMkxFKGJ5dGVzLCBvZmYpIH0pO1xuICAgIG9mZiArPSA0O1xuICB9XG4gIGlmIChjb25maWdNYXNrICYgSEVBUF9TSVpFX0JJVCkge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCA0KTtcbiAgICBjb25maWdWYWx1ZXMucHVzaCh7IGtpbmQ6ICd1MzInLCB2YWx1ZTogcmVhZFUzMkxFKGJ5dGVzLCBvZmYpIH0pO1xuICAgIG9mZiArPSA0O1xuICB9XG5cbiAgY29uc3QgaGVhZGVyczogQXJyYXk8eyBwcm9ncmFtQWRkcmVzc0luZGV4OiBudW1iZXI7IGFjY291bnRDb3VudDogbnVtYmVyOyBkYXRhTGVuZ3RoOiBudW1iZXIgfT4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1JbnN0cnVjdGlvbnM7IGkrKykge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCA0KTtcbiAgICBjb25zdCBwcm9ncmFtQWRkcmVzc0luZGV4ID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gICAgY29uc3QgYWNjb3VudENvdW50ID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IHJlYWRVMTZMRShieXRlcywgb2ZmKTtcbiAgICBvZmYgKz0gMjtcbiAgICBpZiAocHJvZ3JhbUFkZHJlc3NJbmRleCA+PSBudW1TdGF0aWNBY2NvdW50cykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBpbnN0cnVjdGlvbjogcHJvZ3JhbSBpbmRleCBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG4gICAgaWYgKGFjY291bnRDb3VudCA+IE1BWF9BQ0NPVU5UU19QRVJfSU5TVFJVQ1RJT04pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaW5zdHJ1Y3Rpb246IHRvbyBtYW55IGFjY291bnRzJyk7XG4gICAgfVxuICAgIGhlYWRlcnMucHVzaCh7IHByb2dyYW1BZGRyZXNzSW5kZXgsIGFjY291bnRDb3VudCwgZGF0YUxlbmd0aCB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbXBpbGVkSW5zdHJ1Y3Rpb25zOiBDb21waWxlZEluc3RydWN0aW9uW10gPSBbXTtcbiAgZm9yIChjb25zdCBoIG9mIGhlYWRlcnMpIHtcbiAgICBlbnN1cmVBdmFpbGFibGUoYnl0ZXMsIG9mZiwgaC5hY2NvdW50Q291bnQpO1xuICAgIGNvbnN0IGFjY291bnRJbmRpY2VzOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaC5hY2NvdW50Q291bnQ7IGkrKykge1xuICAgICAgY29uc3QgaWR4ID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gICAgICBpZiAoaWR4ID49IG51bVN0YXRpY0FjY291bnRzKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaW5zdHJ1Y3Rpb246IGFjY291bnQgaW5kZXggb3V0IG9mIHJhbmdlJyk7XG4gICAgICB9XG4gICAgICBhY2NvdW50SW5kaWNlcy5wdXNoKGlkeCk7XG4gICAgfVxuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCBoLmRhdGFMZW5ndGgpO1xuICAgIGNvbnN0IGRhdGEgPSBieXRlcy5zbGljZShvZmYsIG9mZiArIGguZGF0YUxlbmd0aCk7XG4gICAgb2ZmICs9IGguZGF0YUxlbmd0aDtcbiAgICBjb21waWxlZEluc3RydWN0aW9ucy5wdXNoKHsgcHJvZ3JhbUFkZHJlc3NJbmRleDogaC5wcm9ncmFtQWRkcmVzc0luZGV4LCBhY2NvdW50SW5kaWNlcywgZGF0YSB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaGVhZGVyOiB7IG51bVNpZ25lckFjY291bnRzLCBudW1SZWFkb25seVNpZ25lckFjY291bnRzLCBudW1SZWFkb25seU5vblNpZ25lckFjY291bnRzIH0sXG4gICAgY29uZmlnTWFzayxcbiAgICBjb25maWdWYWx1ZXMsXG4gICAgYmxvY2toYXNoLFxuICAgIHN0YXRpY0FjY291bnRzLFxuICAgIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zLFxuICAgIGJ5dGVMZW5ndGg6IG9mZixcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
2
|
+
/** Supported Solana transaction versions. Only 1 (SIMD-0296/0385) is implemented. */
|
|
3
|
+
export type TransactionVersion = 0 | 1;
|
|
4
|
+
/**
|
|
5
|
+
* Configuration for a v1 transaction, mirroring the shared sdk-core type.
|
|
6
|
+
* All values are optional (null = unset); priorityFee is total lamports.
|
|
7
|
+
*/
|
|
8
|
+
export interface TransactionConfig {
|
|
9
|
+
computeUnitLimit: number | null;
|
|
10
|
+
heapSize: number | null;
|
|
11
|
+
loadedAccountsDataSizeLimit: number | null;
|
|
12
|
+
priorityFee: number | null;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Compile a Solana transaction message and return its wire bytes.
|
|
16
|
+
*
|
|
17
|
+
* Version-aware: only `version: 1` (SIMD-0296/0385) is implemented; other
|
|
18
|
+
* versions throw a clear unsupported-version error until they are added.
|
|
19
|
+
*
|
|
20
|
+
* @param args - version, instructions, fee payer, recent blockhash, and config
|
|
21
|
+
* @returns the serialized message bytes (v1 starts with the 0x81 version prefix)
|
|
22
|
+
*/
|
|
23
|
+
export declare function compileTransactionMessage(args: {
|
|
24
|
+
version: TransactionVersion;
|
|
25
|
+
instructions: TransactionInstruction[];
|
|
26
|
+
feePayer: PublicKey;
|
|
27
|
+
recentBlockhash: string;
|
|
28
|
+
transactionConfig: TransactionConfig;
|
|
29
|
+
}): Uint8Array;
|
|
30
|
+
//# sourceMappingURL=compileTransactionMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compileTransactionMessage.d.ts","sourceRoot":"","sources":["../../../../../src/lib/serialization/compileTransactionMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAKpE,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAoLD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC,GAAG,UAAU,CAqDb"}
|