@oobe-protocol-labs/synapse-client-sdk 1.0.2 → 1.0.3
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/CHANGELOG.md +32 -0
- package/dist/cjs/accounts/helpers.d.ts +88 -0
- package/dist/cjs/accounts/helpers.d.ts.map +1 -0
- package/dist/cjs/accounts/helpers.js +117 -0
- package/dist/cjs/accounts/helpers.js.map +1 -0
- package/dist/cjs/accounts/index.d.ts +105 -0
- package/dist/cjs/accounts/index.d.ts.map +1 -0
- package/dist/cjs/accounts/index.js +137 -0
- package/dist/cjs/accounts/index.js.map +1 -0
- package/dist/cjs/accounts/lookup.d.ts +30 -0
- package/dist/cjs/accounts/lookup.d.ts.map +1 -0
- package/dist/cjs/accounts/lookup.js +31 -0
- package/dist/cjs/accounts/lookup.js.map +1 -0
- package/dist/cjs/accounts/nonce.d.ts +30 -0
- package/dist/cjs/accounts/nonce.d.ts.map +1 -0
- package/dist/cjs/accounts/nonce.js +31 -0
- package/dist/cjs/accounts/nonce.js.map +1 -0
- package/dist/cjs/accounts/stake.d.ts +33 -0
- package/dist/cjs/accounts/stake.d.ts.map +1 -0
- package/dist/cjs/accounts/stake.js +34 -0
- package/dist/cjs/accounts/stake.js.map +1 -0
- package/dist/cjs/accounts/token.d.ts +98 -0
- package/dist/cjs/accounts/token.d.ts.map +1 -0
- package/dist/cjs/accounts/token.js +126 -0
- package/dist/cjs/accounts/token.js.map +1 -0
- package/dist/cjs/ai/tools/zod/index.d.ts +1 -1
- package/dist/cjs/ai/tools/zod/index.d.ts.map +1 -1
- package/dist/cjs/ai/tools/zod/index.js +2 -2
- package/dist/cjs/ai/tools/zod/index.js.map +1 -1
- package/dist/cjs/ai/tools/zod/types.d.ts +2 -0
- package/dist/cjs/ai/tools/zod/types.d.ts.map +1 -1
- package/dist/cjs/ai/tools/zod/types.js.map +1 -1
- package/dist/cjs/core/client.d.ts +25 -0
- package/dist/cjs/core/client.d.ts.map +1 -1
- package/dist/cjs/core/client.js +30 -0
- package/dist/cjs/core/client.js.map +1 -1
- package/dist/cjs/decoders/index.d.ts +36 -0
- package/dist/cjs/decoders/index.d.ts.map +1 -0
- package/dist/cjs/decoders/index.js +62 -0
- package/dist/cjs/decoders/index.js.map +1 -0
- package/dist/cjs/decoders/layout.d.ts +105 -0
- package/dist/cjs/decoders/layout.d.ts.map +1 -0
- package/dist/cjs/decoders/layout.js +188 -0
- package/dist/cjs/decoders/layout.js.map +1 -0
- package/dist/cjs/decoders/lookup-table.d.ts +60 -0
- package/dist/cjs/decoders/lookup-table.d.ts.map +1 -0
- package/dist/cjs/decoders/lookup-table.js +75 -0
- package/dist/cjs/decoders/lookup-table.js.map +1 -0
- package/dist/cjs/decoders/multisig.d.ts +49 -0
- package/dist/cjs/decoders/multisig.d.ts.map +1 -0
- package/dist/cjs/decoders/multisig.js +50 -0
- package/dist/cjs/decoders/multisig.js.map +1 -0
- package/dist/cjs/decoders/nonce.d.ts +54 -0
- package/dist/cjs/decoders/nonce.d.ts.map +1 -0
- package/dist/cjs/decoders/nonce.js +48 -0
- package/dist/cjs/decoders/nonce.js.map +1 -0
- package/dist/cjs/decoders/stake.d.ts +65 -0
- package/dist/cjs/decoders/stake.d.ts.map +1 -0
- package/dist/cjs/decoders/stake.js +86 -0
- package/dist/cjs/decoders/stake.js.map +1 -0
- package/dist/cjs/decoders/token-2022.d.ts +134 -0
- package/dist/cjs/decoders/token-2022.d.ts.map +1 -0
- package/dist/cjs/decoders/token-2022.js +160 -0
- package/dist/cjs/decoders/token-2022.js.map +1 -0
- package/dist/cjs/decoders/token.d.ts +87 -0
- package/dist/cjs/decoders/token.d.ts.map +1 -0
- package/dist/cjs/decoders/token.js +71 -0
- package/dist/cjs/decoders/token.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs/assets/navigation.js +1 -1
- package/dist/docs/assets/search.js +1 -1
- package/dist/docs/classes/AccountReader.html +61 -0
- package/dist/docs/classes/AccountsClient.html +43 -0
- package/dist/docs/classes/DasClient.html +13 -13
- package/dist/docs/classes/GeyserParser.html +17 -17
- package/dist/docs/classes/GrpcTransport.html +6 -6
- package/dist/docs/classes/HttpTransport.html +4 -4
- package/dist/docs/classes/NetworkError.html +5 -5
- package/dist/docs/classes/RpcMethodNotFoundError.html +4 -4
- package/dist/docs/classes/SolanaRpc.html +55 -55
- package/dist/docs/classes/SynapseClient.html +35 -25
- package/dist/docs/classes/SynapseError.html +4 -4
- package/dist/docs/classes/TimeoutError.html +4 -4
- package/dist/docs/classes/UpstreamError.html +6 -6
- package/dist/docs/classes/WsClient.html +10 -10
- package/dist/docs/enums/SynapseNetwork.html +2 -2
- package/dist/docs/enums/SynapseRegion.html +2 -2
- package/dist/docs/enums/TokenExtensionType.html +23 -0
- package/dist/docs/functions/Epoch-1.html +1 -1
- package/dist/docs/functions/Lamports-2.html +1 -1
- package/dist/docs/functions/Pubkey-1.html +1 -1
- package/dist/docs/functions/Sig.html +1 -1
- package/dist/docs/functions/Slot-1.html +1 -1
- package/dist/docs/functions/UnixTs.html +1 -1
- package/dist/docs/functions/autoSelectRegion.html +1 -1
- package/dist/docs/functions/base58Encode.html +1 -1
- package/dist/docs/functions/base64ToBytes.html +7 -0
- package/dist/docs/functions/chunk.html +1 -1
- package/dist/docs/functions/computeBalanceChanges.html +1 -1
- package/dist/docs/functions/computeTokenBalanceChanges.html +1 -1
- package/dist/docs/functions/createSynapse.html +1 -1
- package/dist/docs/functions/decodeLookupTable.html +17 -0
- package/dist/docs/functions/decodeMint.html +6 -0
- package/dist/docs/functions/decodeMultisig.html +13 -0
- package/dist/docs/functions/decodeNonceAccount.html +14 -0
- package/dist/docs/functions/decodeStakeAccount.html +12 -0
- package/dist/docs/functions/decodeToken2022Account.html +5 -0
- package/dist/docs/functions/decodeToken2022Mint.html +5 -0
- package/dist/docs/functions/decodeTokenAccount.html +6 -0
- package/dist/docs/functions/encodeBase58.html +7 -0
- package/dist/docs/functions/fetchLookupTable.html +10 -0
- package/dist/docs/functions/fetchMint.html +11 -0
- package/dist/docs/functions/fetchNonceAccount.html +10 -0
- package/dist/docs/functions/fetchStakeAccount.html +10 -0
- package/dist/docs/functions/fetchTokenAccount.html +12 -0
- package/dist/docs/functions/fetchTokenAccountsByOwner.html +11 -0
- package/dist/docs/functions/fromKitAddress.html +1 -1
- package/dist/docs/functions/getAccountInfo.html +1 -1
- package/dist/docs/functions/getAsset.html +1 -1
- package/dist/docs/functions/getAssetBatch.html +1 -1
- package/dist/docs/functions/getAssetProof.html +1 -1
- package/dist/docs/functions/getAssetProofBatch.html +1 -1
- package/dist/docs/functions/getAssetsByAuthority.html +1 -1
- package/dist/docs/functions/getAssetsByCreator.html +1 -1
- package/dist/docs/functions/getAssetsByGroup.html +1 -1
- package/dist/docs/functions/getAssetsByOwner.html +1 -1
- package/dist/docs/functions/getBalance.html +1 -1
- package/dist/docs/functions/getBlock.html +1 -1
- package/dist/docs/functions/getBlockCommitment.html +1 -1
- package/dist/docs/functions/getBlockHeight.html +1 -1
- package/dist/docs/functions/getBlockProduction.html +1 -1
- package/dist/docs/functions/getBlockTime.html +1 -1
- package/dist/docs/functions/getBlocks.html +1 -1
- package/dist/docs/functions/getBlocksWithLimit.html +1 -1
- package/dist/docs/functions/getClusterNodes.html +1 -1
- package/dist/docs/functions/getDecodedAccount.html +14 -0
- package/dist/docs/functions/getDecodedAccounts.html +9 -0
- package/dist/docs/functions/getEnvironment.html +1 -1
- package/dist/docs/functions/getEpochInfo.html +1 -1
- package/dist/docs/functions/getEpochSchedule.html +1 -1
- package/dist/docs/functions/getFeeForMessage.html +1 -1
- package/dist/docs/functions/getFirstAvailableBlock.html +1 -1
- package/dist/docs/functions/getGenesisHash.html +1 -1
- package/dist/docs/functions/getHealth.html +1 -1
- package/dist/docs/functions/getHighestSnapshotSlot.html +1 -1
- package/dist/docs/functions/getIdentity.html +1 -1
- package/dist/docs/functions/getInflationGovernor.html +1 -1
- package/dist/docs/functions/getInflationRate.html +1 -1
- package/dist/docs/functions/getInflationReward.html +1 -1
- package/dist/docs/functions/getLargestAccounts.html +1 -1
- package/dist/docs/functions/getLatestBlockhash.html +1 -1
- package/dist/docs/functions/getLeaderSchedule.html +1 -1
- package/dist/docs/functions/getMaxRetransmitSlot.html +1 -1
- package/dist/docs/functions/getMaxShredInsertSlot.html +1 -1
- package/dist/docs/functions/getMinimumBalanceForRentExemption.html +1 -1
- package/dist/docs/functions/getMultipleAccounts.html +1 -1
- package/dist/docs/functions/getProgramAccounts.html +1 -1
- package/dist/docs/functions/getProgramCategory.html +1 -1
- package/dist/docs/functions/getRecentPerformanceSamples.html +1 -1
- package/dist/docs/functions/getRecentPrioritizationFees.html +1 -1
- package/dist/docs/functions/getSignatureStatuses.html +1 -1
- package/dist/docs/functions/getSignaturesForAddress.html +1 -1
- package/dist/docs/functions/getSignaturesForAsset.html +1 -1
- package/dist/docs/functions/getSlot.html +1 -1
- package/dist/docs/functions/getSlotLeader.html +1 -1
- package/dist/docs/functions/getSlotLeaders.html +1 -1
- package/dist/docs/functions/getStakeActivation.html +1 -1
- package/dist/docs/functions/getStakeMinimumDelegation.html +1 -1
- package/dist/docs/functions/getSupply.html +1 -1
- package/dist/docs/functions/getTokenAccountBalance.html +1 -1
- package/dist/docs/functions/getTokenAccounts.html +1 -1
- package/dist/docs/functions/getTokenAccountsByDelegate.html +1 -1
- package/dist/docs/functions/getTokenAccountsByOwner.html +1 -1
- package/dist/docs/functions/getTokenLargestAccounts.html +1 -1
- package/dist/docs/functions/getTokenSupply.html +1 -1
- package/dist/docs/functions/getTransaction.html +1 -1
- package/dist/docs/functions/getTransactionCount.html +1 -1
- package/dist/docs/functions/getVersion.html +1 -1
- package/dist/docs/functions/getVoteAccounts.html +1 -1
- package/dist/docs/functions/isBlockhashValid.html +1 -1
- package/dist/docs/functions/isBrowser.html +1 -1
- package/dist/docs/functions/isProgramInCategory.html +1 -1
- package/dist/docs/functions/isServer.html +1 -1
- package/dist/docs/functions/isValidPubkey.html +1 -1
- package/dist/docs/functions/isValidSignature.html +1 -1
- package/dist/docs/functions/lamportsToSol.html +1 -1
- package/dist/docs/functions/listEndpoints.html +1 -1
- package/dist/docs/functions/listNetworks.html +1 -1
- package/dist/docs/functions/listRegions.html +1 -1
- package/dist/docs/functions/minimumLedgerSlot.html +1 -1
- package/dist/docs/functions/parseAccountUpdate.html +1 -1
- package/dist/docs/functions/parseBlockMeta.html +1 -1
- package/dist/docs/functions/parseEntry.html +1 -1
- package/dist/docs/functions/parseGeyserUpdate.html +1 -1
- package/dist/docs/functions/parseSlotUpdate.html +1 -1
- package/dist/docs/functions/parseTimestamp.html +1 -1
- package/dist/docs/functions/parseTransaction.html +1 -1
- package/dist/docs/functions/probeLatency.html +1 -1
- package/dist/docs/functions/rawBufferToBase58.html +1 -1
- package/dist/docs/functions/rawBufferToBase64.html +1 -1
- package/dist/docs/functions/rawBufferToBytes.html +1 -1
- package/dist/docs/functions/rawBufferToHex.html +1 -1
- package/dist/docs/functions/requestAirdrop.html +1 -1
- package/dist/docs/functions/resolveEndpoint.html +1 -1
- package/dist/docs/functions/resolveProgram.html +1 -1
- package/dist/docs/functions/resolveProgramBatch.html +1 -1
- package/dist/docs/functions/retry.html +1 -1
- package/dist/docs/functions/searchAssets.html +1 -1
- package/dist/docs/functions/sendTransaction.html +1 -1
- package/dist/docs/functions/simulateTransaction.html +1 -1
- package/dist/docs/functions/sleep.html +1 -1
- package/dist/docs/functions/solToLamports.html +1 -1
- package/dist/docs/functions/toClientConfig.html +1 -1
- package/dist/docs/functions/toKitAddress.html +1 -1
- package/dist/docs/functions/toKitLamports.html +1 -1
- package/dist/docs/functions/toKitSignatureString.html +1 -1
- package/dist/docs/hierarchy.html +1 -1
- package/dist/docs/interfaces/AccountInfo.html +7 -7
- package/dist/docs/interfaces/AccountNotification.html +2 -2
- package/dist/docs/interfaces/AccountSubParams.html +2 -2
- package/dist/docs/interfaces/AssetSignatureInfo.html +2 -2
- package/dist/docs/interfaces/AssetSignaturesPage.html +2 -2
- package/dist/docs/interfaces/BalanceChange.html +6 -6
- package/dist/docs/interfaces/BlockProduction.html +3 -3
- package/dist/docs/interfaces/BlockResult.html +2 -2
- package/dist/docs/interfaces/BlockReward.html +2 -2
- package/dist/docs/interfaces/BlockhashResult.html +2 -2
- package/dist/docs/interfaces/CallOptions.html +6 -6
- package/dist/docs/interfaces/ConfirmedTransaction.html +6 -6
- package/dist/docs/interfaces/ContactInfo.html +2 -2
- package/dist/docs/interfaces/DasAsset.html +2 -2
- package/dist/docs/interfaces/DasAssetProof.html +2 -2
- package/dist/docs/interfaces/DasAuthority.html +2 -2
- package/dist/docs/interfaces/DasCompression.html +2 -2
- package/dist/docs/interfaces/DasContent.html +2 -2
- package/dist/docs/interfaces/DasCreator.html +2 -2
- package/dist/docs/interfaces/DasFile.html +2 -2
- package/dist/docs/interfaces/DasGrouping.html +2 -2
- package/dist/docs/interfaces/DasOpts.html +2 -2
- package/dist/docs/interfaces/DasOwnership.html +2 -2
- package/dist/docs/interfaces/DasPage.html +2 -2
- package/dist/docs/interfaces/DasRoyalty.html +2 -2
- package/dist/docs/interfaces/DasSearchParams.html +2 -2
- package/dist/docs/interfaces/DasSupply.html +2 -2
- package/dist/docs/interfaces/DataSlice.html +3 -3
- package/dist/docs/interfaces/DecodedAccountResult.html +10 -0
- package/dist/docs/interfaces/DecodedLookupTable.html +20 -0
- package/dist/docs/interfaces/DecodedMint.html +16 -0
- package/dist/docs/interfaces/DecodedMultisig.html +14 -0
- package/dist/docs/interfaces/DecodedNonceAccount.html +16 -0
- package/dist/docs/interfaces/DecodedStakeAccount.html +7 -0
- package/dist/docs/interfaces/DecodedToken2022Account.html +20 -0
- package/dist/docs/interfaces/DecodedToken2022Mint.html +14 -0
- package/dist/docs/interfaces/DecodedTokenAccount.html +22 -0
- package/dist/docs/interfaces/DefaultAccountStateExt.html +5 -0
- package/dist/docs/interfaces/EndpointConnectConfig.html +5 -5
- package/dist/docs/interfaces/EpochInfo.html +7 -7
- package/dist/docs/interfaces/EpochSchedule.html +2 -2
- package/dist/docs/interfaces/FetchedMint.html +13 -0
- package/dist/docs/interfaces/FetchedTokenAccount.html +13 -0
- package/dist/docs/interfaces/GetAccountInfoOpts.html +6 -6
- package/dist/docs/interfaces/GetAssetsByAuthorityParams.html +2 -2
- package/dist/docs/interfaces/GetAssetsByCreatorParams.html +2 -2
- package/dist/docs/interfaces/GetAssetsByGroupParams.html +2 -2
- package/dist/docs/interfaces/GetAssetsByOwnerParams.html +2 -2
- package/dist/docs/interfaces/GetBlockOpts.html +6 -6
- package/dist/docs/interfaces/GetBlockProductionOpts.html +6 -6
- package/dist/docs/interfaces/GetMultipleAccountsOpts.html +6 -6
- package/dist/docs/interfaces/GetProgramAccountsOpts.html +6 -6
- package/dist/docs/interfaces/GetSignatureStatusesOpts.html +6 -6
- package/dist/docs/interfaces/GetSignaturesOpts.html +7 -7
- package/dist/docs/interfaces/GetTokenAccountsParams.html +2 -2
- package/dist/docs/interfaces/GetTransactionOpts.html +6 -6
- package/dist/docs/interfaces/GeyserParserConfig.html +6 -6
- package/dist/docs/interfaces/GeyserParserEvents.html +9 -9
- package/dist/docs/interfaces/GeyserParserStats.html +2 -2
- package/dist/docs/interfaces/GrpcCallOptions.html +2 -2
- package/dist/docs/interfaces/GrpcTransportConfig.html +6 -6
- package/dist/docs/interfaces/ImmutableOwnerExt.html +4 -0
- package/dist/docs/interfaces/InflationGovernor.html +2 -2
- package/dist/docs/interfaces/InflationRate.html +2 -2
- package/dist/docs/interfaces/InflationReward.html +2 -2
- package/dist/docs/interfaces/InterestBearingConfigExt.html +9 -0
- package/dist/docs/interfaces/LatencyProbeResult.html +2 -2
- package/dist/docs/interfaces/LogsNotification.html +2 -2
- package/dist/docs/interfaces/LogsSubParams.html +2 -2
- package/dist/docs/interfaces/MemoTransferExt.html +5 -0
- package/dist/docs/interfaces/MetadataPointerExt.html +6 -0
- package/dist/docs/interfaces/MintCloseAuthorityExt.html +5 -0
- package/dist/docs/interfaces/NonTransferableExt.html +4 -0
- package/dist/docs/interfaces/PaginationOpts.html +2 -2
- package/dist/docs/interfaces/ParsedAccountUpdate.html +16 -16
- package/dist/docs/interfaces/ParsedBlockMeta.html +2 -2
- package/dist/docs/interfaces/ParsedEntry.html +2 -2
- package/dist/docs/interfaces/ParsedInstruction.html +9 -9
- package/dist/docs/interfaces/ParsedSlotUpdate.html +3 -3
- package/dist/docs/interfaces/ParsedTransaction.html +19 -19
- package/dist/docs/interfaces/PerfSample.html +2 -2
- package/dist/docs/interfaces/PermanentDelegateExt.html +5 -0
- package/dist/docs/interfaces/ProgramAccount.html +2 -2
- package/dist/docs/interfaces/ProgramNotification.html +2 -2
- package/dist/docs/interfaces/ProgramSubParams.html +2 -2
- package/dist/docs/interfaces/RawAccountInfo.html +2 -2
- package/dist/docs/interfaces/RawBlockMeta.html +2 -2
- package/dist/docs/interfaces/RawBuffer.html +2 -2
- package/dist/docs/interfaces/RawCompiledInstruction.html +2 -2
- package/dist/docs/interfaces/RawEntry.html +2 -2
- package/dist/docs/interfaces/RawGeyserUpdate.html +2 -2
- package/dist/docs/interfaces/RawInnerInstruction.html +2 -2
- package/dist/docs/interfaces/RawSlotInfo.html +2 -2
- package/dist/docs/interfaces/RawTimestamp.html +2 -2
- package/dist/docs/interfaces/RawTokenBalance.html +2 -2
- package/dist/docs/interfaces/RawTransactionInfo.html +2 -2
- package/dist/docs/interfaces/RootNotification.html +2 -2
- package/dist/docs/interfaces/RootSubParams.html +1 -1
- package/dist/docs/interfaces/RpcContext.html +2 -2
- package/dist/docs/interfaces/RpcError.html +4 -4
- package/dist/docs/interfaces/RpcRequest.html +2 -2
- package/dist/docs/interfaces/RpcResponse.html +2 -2
- package/dist/docs/interfaces/SendTransactionOpts.html +6 -6
- package/dist/docs/interfaces/SignatureInfo.html +7 -7
- package/dist/docs/interfaces/SignatureNotification.html +2 -2
- package/dist/docs/interfaces/SignatureStatus.html +5 -5
- package/dist/docs/interfaces/SignatureSubParams.html +2 -2
- package/dist/docs/interfaces/SignaturesForAssetParams.html +2 -2
- package/dist/docs/interfaces/SimulateResult.html +2 -2
- package/dist/docs/interfaces/SimulateTransactionOpts.html +7 -7
- package/dist/docs/interfaces/SlotNotification.html +2 -2
- package/dist/docs/interfaces/SlotSubParams.html +1 -1
- package/dist/docs/interfaces/SortOpts.html +2 -2
- package/dist/docs/interfaces/StakeAuthorized.html +5 -0
- package/dist/docs/interfaces/StakeDelegation.html +9 -0
- package/dist/docs/interfaces/StakeLockup.html +9 -0
- package/dist/docs/interfaces/StakeMeta.html +6 -0
- package/dist/docs/interfaces/Supply.html +5 -5
- package/dist/docs/interfaces/SynapseClientConfig.html +9 -9
- package/dist/docs/interfaces/SynapseEndpoint.html +7 -7
- package/dist/docs/interfaces/TokenAccount.html +3 -3
- package/dist/docs/interfaces/TokenAccountsByOwnerResult.html +2 -2
- package/dist/docs/interfaces/TokenAmount.html +5 -5
- package/dist/docs/interfaces/TokenBalanceChange.html +2 -2
- package/dist/docs/interfaces/TransactionMeta.html +11 -11
- package/dist/docs/interfaces/TransferFeeAmount.html +5 -0
- package/dist/docs/interfaces/TransferFeeConfig.html +9 -0
- package/dist/docs/interfaces/TransportConfig.html +7 -7
- package/dist/docs/interfaces/UnknownExtension.html +6 -0
- package/dist/docs/interfaces/VoteAccount.html +9 -9
- package/dist/docs/interfaces/VoteAccountsResult.html +3 -3
- package/dist/docs/interfaces/WsConfig.html +6 -6
- package/dist/docs/media/CHANGELOG.md +32 -0
- package/dist/docs/modules.html +65 -2
- package/dist/docs/types/AccountFetchOpts.html +3 -0
- package/dist/docs/types/AccountFilter.html +1 -1
- package/dist/docs/types/Base58.html +1 -1
- package/dist/docs/types/Brand.html +1 -1
- package/dist/docs/types/Commitment.html +1 -1
- package/dist/docs/types/DasSortBy.html +1 -1
- package/dist/docs/types/DasSortDirection.html +1 -1
- package/dist/docs/types/DataSizeFilter.html +1 -1
- package/dist/docs/types/DecodedExtension.html +3 -0
- package/dist/docs/types/Encoding.html +1 -1
- package/dist/docs/types/Epoch.html +1 -1
- package/dist/docs/types/Lamports.html +1 -1
- package/dist/docs/types/LogsFilter.html +1 -1
- package/dist/docs/types/MemcmpFilter.html +1 -1
- package/dist/docs/types/NonceState.html +3 -0
- package/dist/docs/types/ParsedGeyserUpdate.html +1 -1
- package/dist/docs/types/Pubkey.html +1 -1
- package/dist/docs/types/RuntimeEnv.html +1 -1
- package/dist/docs/types/Signature.html +1 -1
- package/dist/docs/types/Slot.html +1 -1
- package/dist/docs/types/StakeAccountType.html +3 -0
- package/dist/docs/types/SubscriptionId.html +1 -1
- package/dist/docs/types/TokenAccountState.html +3 -0
- package/dist/docs/types/TransactionDetail.html +1 -1
- package/dist/docs/types/UnaryMethod.html +1 -1
- package/dist/docs/types/UnixTimestamp.html +1 -1
- package/dist/docs/types/WsNotification.html +1 -1
- package/dist/docs/variables/JUPITER_PROGRAMS.html +1 -1
- package/dist/docs/variables/KNOWN_PROGRAMS.html +1 -1
- package/dist/docs/variables/KNOWN_PROGRAMS_COUNT.html +1 -1
- package/dist/docs/variables/LOOKUP_TABLE_HEADER_SIZE.html +3 -0
- package/dist/docs/variables/LOOKUP_TABLE_PROGRAM_ID.html +3 -0
- package/dist/docs/variables/MARINADE_PROGRAMS.html +1 -1
- package/dist/docs/variables/MAX_MULTISIG_SIGNERS.html +3 -0
- package/dist/docs/variables/METAPLEX_PROGRAMS.html +1 -1
- package/dist/docs/variables/METEORA_PROGRAMS.html +1 -1
- package/dist/docs/variables/MINT_SIZE.html +3 -0
- package/dist/docs/variables/MULTISIG_SIZE.html +3 -0
- package/dist/docs/variables/NONCE_ACCOUNT_SIZE.html +3 -0
- package/dist/docs/variables/ORCA_PROGRAMS.html +1 -1
- package/dist/docs/variables/OTHER_PROGRAMS.html +1 -1
- package/dist/docs/variables/RAYDIUM_PROGRAMS.html +1 -1
- package/dist/docs/variables/SDK_USER_AGENT.html +1 -1
- package/dist/docs/variables/SPL_PROGRAMS.html +1 -1
- package/dist/docs/variables/STAKE_PROGRAM_ID.html +3 -0
- package/dist/docs/variables/SYNAPSE_DEVNET_EU.html +1 -1
- package/dist/docs/variables/SYNAPSE_DEVNET_US.html +1 -1
- package/dist/docs/variables/SYNAPSE_ENDPOINTS.html +1 -1
- package/dist/docs/variables/SYNAPSE_MAINNET_EU.html +1 -1
- package/dist/docs/variables/SYNAPSE_MAINNET_US.html +1 -1
- package/dist/docs/variables/SYSTEM_PROGRAMS.html +1 -1
- package/dist/docs/variables/SYSTEM_PROGRAM_ID.html +3 -0
- package/dist/docs/variables/TOKEN_2022_PROGRAM_ID.html +3 -0
- package/dist/docs/variables/TOKEN_ACCOUNT_SIZE.html +3 -0
- package/dist/docs/variables/TOKEN_PROGRAM_ID.html +3 -0
- package/dist/esm/accounts/helpers.d.ts +88 -0
- package/dist/esm/accounts/helpers.d.ts.map +1 -0
- package/dist/esm/accounts/helpers.js +112 -0
- package/dist/esm/accounts/helpers.js.map +1 -0
- package/dist/esm/accounts/index.d.ts +105 -0
- package/dist/esm/accounts/index.d.ts.map +1 -0
- package/dist/esm/accounts/index.js +124 -0
- package/dist/esm/accounts/index.js.map +1 -0
- package/dist/esm/accounts/lookup.d.ts +30 -0
- package/dist/esm/accounts/lookup.d.ts.map +1 -0
- package/dist/esm/accounts/lookup.js +28 -0
- package/dist/esm/accounts/lookup.js.map +1 -0
- package/dist/esm/accounts/nonce.d.ts +30 -0
- package/dist/esm/accounts/nonce.d.ts.map +1 -0
- package/dist/esm/accounts/nonce.js +28 -0
- package/dist/esm/accounts/nonce.js.map +1 -0
- package/dist/esm/accounts/stake.d.ts +33 -0
- package/dist/esm/accounts/stake.d.ts.map +1 -0
- package/dist/esm/accounts/stake.js +31 -0
- package/dist/esm/accounts/stake.js.map +1 -0
- package/dist/esm/accounts/token.d.ts +98 -0
- package/dist/esm/accounts/token.d.ts.map +1 -0
- package/dist/esm/accounts/token.js +121 -0
- package/dist/esm/accounts/token.js.map +1 -0
- package/dist/esm/ai/tools/zod/index.d.ts +1 -1
- package/dist/esm/ai/tools/zod/index.d.ts.map +1 -1
- package/dist/esm/ai/tools/zod/index.js +2 -2
- package/dist/esm/ai/tools/zod/index.js.map +1 -1
- package/dist/esm/ai/tools/zod/types.d.ts +2 -0
- package/dist/esm/ai/tools/zod/types.d.ts.map +1 -1
- package/dist/esm/ai/tools/zod/types.js.map +1 -1
- package/dist/esm/core/client.d.ts +25 -0
- package/dist/esm/core/client.d.ts.map +1 -1
- package/dist/esm/core/client.js +30 -0
- package/dist/esm/core/client.js.map +1 -1
- package/dist/esm/decoders/index.d.ts +36 -0
- package/dist/esm/decoders/index.d.ts.map +1 -0
- package/dist/esm/decoders/index.js +37 -0
- package/dist/esm/decoders/index.js.map +1 -0
- package/dist/esm/decoders/layout.d.ts +105 -0
- package/dist/esm/decoders/layout.d.ts.map +1 -0
- package/dist/esm/decoders/layout.js +183 -0
- package/dist/esm/decoders/layout.js.map +1 -0
- package/dist/esm/decoders/lookup-table.d.ts +60 -0
- package/dist/esm/decoders/lookup-table.d.ts.map +1 -0
- package/dist/esm/decoders/lookup-table.js +71 -0
- package/dist/esm/decoders/lookup-table.js.map +1 -0
- package/dist/esm/decoders/multisig.d.ts +49 -0
- package/dist/esm/decoders/multisig.d.ts.map +1 -0
- package/dist/esm/decoders/multisig.js +46 -0
- package/dist/esm/decoders/multisig.js.map +1 -0
- package/dist/esm/decoders/nonce.d.ts +54 -0
- package/dist/esm/decoders/nonce.d.ts.map +1 -0
- package/dist/esm/decoders/nonce.js +44 -0
- package/dist/esm/decoders/nonce.js.map +1 -0
- package/dist/esm/decoders/stake.d.ts +65 -0
- package/dist/esm/decoders/stake.d.ts.map +1 -0
- package/dist/esm/decoders/stake.js +82 -0
- package/dist/esm/decoders/stake.js.map +1 -0
- package/dist/esm/decoders/token-2022.d.ts +134 -0
- package/dist/esm/decoders/token-2022.d.ts.map +1 -0
- package/dist/esm/decoders/token-2022.js +155 -0
- package/dist/esm/decoders/token-2022.js.map +1 -0
- package/dist/esm/decoders/token.d.ts +87 -0
- package/dist/esm/decoders/token.d.ts.map +1 -0
- package/dist/esm/decoders/token.js +66 -0
- package/dist/esm/decoders/token.js.map +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +11 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solana Nonce Account decoder.
|
|
3
|
+
*
|
|
4
|
+
* Decodes durable nonce accounts used for offline/delayed transaction signing.
|
|
5
|
+
*
|
|
6
|
+
* @module decoders/nonce
|
|
7
|
+
* @since 1.1.0
|
|
8
|
+
*/
|
|
9
|
+
import type { Pubkey } from '../core/types';
|
|
10
|
+
/** Nonce account state. @since 1.1.0 */
|
|
11
|
+
export type NonceState = 'uninitialized' | 'initialized';
|
|
12
|
+
/**
|
|
13
|
+
* Decoded Solana Nonce Account (80 bytes).
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const nonce = decodeNonceAccount(rawBytes);
|
|
18
|
+
* console.log(`Blockhash: ${nonce.blockhash}, Authority: ${nonce.authority}`);
|
|
19
|
+
* ```
|
|
20
|
+
* @since 1.1.0
|
|
21
|
+
*/
|
|
22
|
+
export interface DecodedNonceAccount {
|
|
23
|
+
/** Nonce version discriminant (0 = Legacy, 1 = Current). Most nonces are Current (1). */
|
|
24
|
+
version: number;
|
|
25
|
+
/** Account state. */
|
|
26
|
+
state: NonceState;
|
|
27
|
+
/** Authority that can advance the nonce. */
|
|
28
|
+
authority: Pubkey;
|
|
29
|
+
/** Stored durable blockhash. */
|
|
30
|
+
blockhash: string;
|
|
31
|
+
/** Fee calculator lamports per signature at the stored blockhash. */
|
|
32
|
+
lamportsPerSignature: bigint;
|
|
33
|
+
}
|
|
34
|
+
/** System Program ID. @since 1.1.0 */
|
|
35
|
+
export declare const SYSTEM_PROGRAM_ID = "11111111111111111111111111111111";
|
|
36
|
+
/** Nonce account data size. @since 1.1.0 */
|
|
37
|
+
export declare const NONCE_ACCOUNT_SIZE = 80;
|
|
38
|
+
/**
|
|
39
|
+
* Decode a Solana nonce account from raw bytes.
|
|
40
|
+
*
|
|
41
|
+
* Layout (80 bytes):
|
|
42
|
+
* - [0..4] u32 — version (0=Legacy, 1=Current)
|
|
43
|
+
* - [4..8] u32 — state (0=uninitialized, 1=initialized)
|
|
44
|
+
* - [8..40] [u8;32] — authority pubkey
|
|
45
|
+
* - [40..72] [u8;32] — durable blockhash
|
|
46
|
+
* - [72..80] u64 — lamports per signature
|
|
47
|
+
*
|
|
48
|
+
* @param data - Raw account data (must be >= 80 bytes).
|
|
49
|
+
* @returns Decoded nonce account.
|
|
50
|
+
* @throws {Error} If data is too short.
|
|
51
|
+
* @since 1.1.0
|
|
52
|
+
*/
|
|
53
|
+
export declare function decodeNonceAccount(data: Uint8Array): DecodedNonceAccount;
|
|
54
|
+
//# sourceMappingURL=nonce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonce.d.ts","sourceRoot":"","sources":["../../../src/decoders/nonce.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,wCAAwC;AACxC,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,aAAa,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,yFAAyF;IACzF,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,KAAK,EAAE,UAAU,CAAC;IAClB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAID,sCAAsC;AACtC,eAAO,MAAM,iBAAiB,qCAAqC,CAAC;AAEpE,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAIrC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,mBAAmB,CAiBxE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Solana Nonce Account decoder.
|
|
4
|
+
*
|
|
5
|
+
* Decodes durable nonce accounts used for offline/delayed transaction signing.
|
|
6
|
+
*
|
|
7
|
+
* @module decoders/nonce
|
|
8
|
+
* @since 1.1.0
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.NONCE_ACCOUNT_SIZE = exports.SYSTEM_PROGRAM_ID = void 0;
|
|
12
|
+
exports.decodeNonceAccount = decodeNonceAccount;
|
|
13
|
+
const layout_1 = require("./layout");
|
|
14
|
+
// ── Constants ──────────────────────────────────────────────────
|
|
15
|
+
/** System Program ID. @since 1.1.0 */
|
|
16
|
+
exports.SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';
|
|
17
|
+
/** Nonce account data size. @since 1.1.0 */
|
|
18
|
+
exports.NONCE_ACCOUNT_SIZE = 80;
|
|
19
|
+
// ── Decoder ────────────────────────────────────────────────────
|
|
20
|
+
/**
|
|
21
|
+
* Decode a Solana nonce account from raw bytes.
|
|
22
|
+
*
|
|
23
|
+
* Layout (80 bytes):
|
|
24
|
+
* - [0..4] u32 — version (0=Legacy, 1=Current)
|
|
25
|
+
* - [4..8] u32 — state (0=uninitialized, 1=initialized)
|
|
26
|
+
* - [8..40] [u8;32] — authority pubkey
|
|
27
|
+
* - [40..72] [u8;32] — durable blockhash
|
|
28
|
+
* - [72..80] u64 — lamports per signature
|
|
29
|
+
*
|
|
30
|
+
* @param data - Raw account data (must be >= 80 bytes).
|
|
31
|
+
* @returns Decoded nonce account.
|
|
32
|
+
* @throws {Error} If data is too short.
|
|
33
|
+
* @since 1.1.0
|
|
34
|
+
*/
|
|
35
|
+
function decodeNonceAccount(data) {
|
|
36
|
+
if (data.length < exports.NONCE_ACCOUNT_SIZE) {
|
|
37
|
+
throw new Error(`Nonce account data too short: expected >= ${exports.NONCE_ACCOUNT_SIZE} bytes, got ${data.length}`);
|
|
38
|
+
}
|
|
39
|
+
const r = new layout_1.AccountReader(data);
|
|
40
|
+
const version = r.u32(); // [0..4]
|
|
41
|
+
const stateVal = r.u32(); // [4..8]
|
|
42
|
+
const state = stateVal === 1 ? 'initialized' : 'uninitialized';
|
|
43
|
+
const authority = r.pubkey(); // [8..40]
|
|
44
|
+
const blockhash = r.hash(); // [40..72]
|
|
45
|
+
const lamportsPerSignature = r.u64(); // [72..80]
|
|
46
|
+
return { version, state, authority, blockhash, lamportsPerSignature };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=nonce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonce.js","sourceRoot":"","sources":["../../../src/decoders/nonce.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA0DH,gDAiBC;AAxED,qCAAyC;AA8BzC,kEAAkE;AAElE,sCAAsC;AACzB,QAAA,iBAAiB,GAAG,kCAAkC,CAAC;AAEpE,4CAA4C;AAC/B,QAAA,kBAAkB,GAAG,EAAE,CAAC;AAErC,kEAAkE;AAElE;;;;;;;;;;;;;;GAcG;AACH,SAAgB,kBAAkB,CAAC,IAAgB;IACjD,IAAI,IAAI,CAAC,MAAM,GAAG,0BAAkB,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,6CAA6C,0BAAkB,eAAe,IAAI,CAAC,MAAM,EAAE,CAC5F,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,IAAI,sBAAa,CAAC,IAAI,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAA2B,SAAS;IAC5D,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAA0B,SAAS;IAC5D,MAAM,KAAK,GAAe,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC;IAC3E,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAsB,UAAU;IAC7D,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAwB,WAAW;IAC9D,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAc,WAAW;IAE9D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solana Stake Account decoder.
|
|
3
|
+
*
|
|
4
|
+
* Decodes the native stake program account layout into typed objects,
|
|
5
|
+
* including meta (authorized, lockup) and delegation fields.
|
|
6
|
+
*
|
|
7
|
+
* @module decoders/stake
|
|
8
|
+
* @since 1.1.0
|
|
9
|
+
*/
|
|
10
|
+
import type { Pubkey } from '../core/types';
|
|
11
|
+
/** Stake account type discriminator. @since 1.1.0 */
|
|
12
|
+
export type StakeAccountType = 'uninitialized' | 'initialized' | 'delegated' | 'rewardsPool';
|
|
13
|
+
/** Authorized staker and withdrawer. @since 1.1.0 */
|
|
14
|
+
export interface StakeAuthorized {
|
|
15
|
+
staker: Pubkey;
|
|
16
|
+
withdrawer: Pubkey;
|
|
17
|
+
}
|
|
18
|
+
/** Lockup configuration. @since 1.1.0 */
|
|
19
|
+
export interface StakeLockup {
|
|
20
|
+
/** Unix timestamp until which stake is locked. 0 = no time lock. */
|
|
21
|
+
unixTimestamp: bigint;
|
|
22
|
+
/** Epoch until which stake is locked. 0 = no epoch lock. */
|
|
23
|
+
epoch: bigint;
|
|
24
|
+
/** Custodian who can override the lockup. */
|
|
25
|
+
custodian: Pubkey;
|
|
26
|
+
}
|
|
27
|
+
/** Stake account metadata (always present after initialization). @since 1.1.0 */
|
|
28
|
+
export interface StakeMeta {
|
|
29
|
+
rentExemptReserve: bigint;
|
|
30
|
+
authorized: StakeAuthorized;
|
|
31
|
+
lockup: StakeLockup;
|
|
32
|
+
}
|
|
33
|
+
/** Stake delegation information (only present when type = 'delegated'). @since 1.1.0 */
|
|
34
|
+
export interface StakeDelegation {
|
|
35
|
+
voterPubkey: Pubkey;
|
|
36
|
+
stake: bigint;
|
|
37
|
+
activationEpoch: bigint;
|
|
38
|
+
deactivationEpoch: bigint;
|
|
39
|
+
/** @deprecated Unused in modern Solana runtime, always 0.25 */
|
|
40
|
+
warmupCooldownRate: number;
|
|
41
|
+
}
|
|
42
|
+
/** Fully decoded stake account. @since 1.1.0 */
|
|
43
|
+
export interface DecodedStakeAccount {
|
|
44
|
+
type: StakeAccountType;
|
|
45
|
+
meta: StakeMeta | null;
|
|
46
|
+
stake: StakeDelegation | null;
|
|
47
|
+
creditsObserved: bigint | null;
|
|
48
|
+
}
|
|
49
|
+
/** Stake Program ID. @since 1.1.0 */
|
|
50
|
+
export declare const STAKE_PROGRAM_ID = "Stake11111111111111111111111111111111111111";
|
|
51
|
+
/**
|
|
52
|
+
* Decode a Solana stake account from raw bytes.
|
|
53
|
+
*
|
|
54
|
+
* Layout (200 bytes for delegated):
|
|
55
|
+
* - [0..4] u32 — discriminator (0=uninit, 1=init, 2=stake, 3=rewards)
|
|
56
|
+
* - [4..124] meta — rentExemptReserve(8) + authorized(64) + lockup(48)
|
|
57
|
+
* - [124..200] stake — delegation(72) + creditsObserved(8) [only if type=2]
|
|
58
|
+
*
|
|
59
|
+
* @param data - Raw stake account data.
|
|
60
|
+
* @returns Decoded stake account.
|
|
61
|
+
* @throws {Error} If data is too short.
|
|
62
|
+
* @since 1.1.0
|
|
63
|
+
*/
|
|
64
|
+
export declare function decodeStakeAccount(data: Uint8Array): DecodedStakeAccount;
|
|
65
|
+
//# sourceMappingURL=stake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stake.d.ts","sourceRoot":"","sources":["../../../src/decoders/stake.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,qDAAqD;AACrD,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,CAAC;AAQ7F,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iFAAiF;AACjF,MAAM,WAAW,SAAS;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,wFAAwF;AACxF,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAID,qCAAqC;AACrC,eAAO,MAAM,gBAAgB,gDAAgD,CAAC;AAI9E;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,mBAAmB,CAgExE"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Solana Stake Account decoder.
|
|
4
|
+
*
|
|
5
|
+
* Decodes the native stake program account layout into typed objects,
|
|
6
|
+
* including meta (authorized, lockup) and delegation fields.
|
|
7
|
+
*
|
|
8
|
+
* @module decoders/stake
|
|
9
|
+
* @since 1.1.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.STAKE_PROGRAM_ID = void 0;
|
|
13
|
+
exports.decodeStakeAccount = decodeStakeAccount;
|
|
14
|
+
const layout_1 = require("./layout");
|
|
15
|
+
const STAKE_TYPES = [
|
|
16
|
+
'uninitialized', 'initialized', 'delegated', 'rewardsPool',
|
|
17
|
+
];
|
|
18
|
+
// ── Constants ──────────────────────────────────────────────────
|
|
19
|
+
/** Stake Program ID. @since 1.1.0 */
|
|
20
|
+
exports.STAKE_PROGRAM_ID = 'Stake11111111111111111111111111111111111111';
|
|
21
|
+
// ── Decoder ────────────────────────────────────────────────────
|
|
22
|
+
/**
|
|
23
|
+
* Decode a Solana stake account from raw bytes.
|
|
24
|
+
*
|
|
25
|
+
* Layout (200 bytes for delegated):
|
|
26
|
+
* - [0..4] u32 — discriminator (0=uninit, 1=init, 2=stake, 3=rewards)
|
|
27
|
+
* - [4..124] meta — rentExemptReserve(8) + authorized(64) + lockup(48)
|
|
28
|
+
* - [124..200] stake — delegation(72) + creditsObserved(8) [only if type=2]
|
|
29
|
+
*
|
|
30
|
+
* @param data - Raw stake account data.
|
|
31
|
+
* @returns Decoded stake account.
|
|
32
|
+
* @throws {Error} If data is too short.
|
|
33
|
+
* @since 1.1.0
|
|
34
|
+
*/
|
|
35
|
+
function decodeStakeAccount(data) {
|
|
36
|
+
if (data.length < 4) {
|
|
37
|
+
throw new Error(`Stake account data too short: expected >= 4 bytes, got ${data.length}`);
|
|
38
|
+
}
|
|
39
|
+
const r = new layout_1.AccountReader(data);
|
|
40
|
+
const typeIdx = r.u32(); // [0..4]
|
|
41
|
+
const type = STAKE_TYPES[typeIdx] ?? 'uninitialized';
|
|
42
|
+
if (type === 'uninitialized') {
|
|
43
|
+
return { type, meta: null, stake: null, creditsObserved: null };
|
|
44
|
+
}
|
|
45
|
+
// Meta is always present for initialized/delegated/rewardsPool
|
|
46
|
+
if (data.length < 124) {
|
|
47
|
+
throw new Error(`Stake account data too short for meta: expected >= 124 bytes, got ${data.length}`);
|
|
48
|
+
}
|
|
49
|
+
const rentExemptReserve = r.u64(); // [4..12]
|
|
50
|
+
const staker = r.pubkey(); // [12..44]
|
|
51
|
+
const withdrawer = r.pubkey(); // [44..76]
|
|
52
|
+
const unixTimestamp = r.i64(); // [76..84]
|
|
53
|
+
const epoch = r.u64(); // [84..92]
|
|
54
|
+
const custodian = r.pubkey(); // [92..124]
|
|
55
|
+
const meta = {
|
|
56
|
+
rentExemptReserve,
|
|
57
|
+
authorized: { staker, withdrawer },
|
|
58
|
+
lockup: { unixTimestamp, epoch, custodian },
|
|
59
|
+
};
|
|
60
|
+
if (type !== 'delegated') {
|
|
61
|
+
return { type, meta, stake: null, creditsObserved: null };
|
|
62
|
+
}
|
|
63
|
+
// Delegation is present for type=2 (delegated)
|
|
64
|
+
if (data.length < 200) {
|
|
65
|
+
throw new Error(`Stake account data too short for delegation: expected >= 200 bytes, got ${data.length}`);
|
|
66
|
+
}
|
|
67
|
+
const voterPubkey = r.pubkey(); // [124..156]
|
|
68
|
+
const stakeAmount = r.u64(); // [156..164]
|
|
69
|
+
const activationEpoch = r.u64(); // [164..172]
|
|
70
|
+
const deactivationEpoch = r.u64(); // [172..180]
|
|
71
|
+
const warmupCooldownRate = r.f64(); // [180..188]
|
|
72
|
+
const creditsObserved = r.u64(); // [188..196]
|
|
73
|
+
return {
|
|
74
|
+
type,
|
|
75
|
+
meta,
|
|
76
|
+
stake: {
|
|
77
|
+
voterPubkey,
|
|
78
|
+
stake: stakeAmount,
|
|
79
|
+
activationEpoch,
|
|
80
|
+
deactivationEpoch,
|
|
81
|
+
warmupCooldownRate,
|
|
82
|
+
},
|
|
83
|
+
creditsObserved,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=stake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stake.js","sourceRoot":"","sources":["../../../src/decoders/stake.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPL Token-2022 (Token Extensions) decoder.
|
|
3
|
+
*
|
|
4
|
+
* Parses TLV (Type-Length-Value) extensions appended after the standard
|
|
5
|
+
* 165-byte token account or 82-byte mint layout.
|
|
6
|
+
*
|
|
7
|
+
* @module decoders/token-2022
|
|
8
|
+
* @since 1.1.0
|
|
9
|
+
*/
|
|
10
|
+
import type { DecodedTokenAccount, DecodedMint } from './token';
|
|
11
|
+
import type { Pubkey } from '../core/types';
|
|
12
|
+
/** Known Token-2022 extension types. @since 1.1.0 */
|
|
13
|
+
export declare enum TokenExtensionType {
|
|
14
|
+
Uninitialized = 0,
|
|
15
|
+
TransferFeeConfig = 1,
|
|
16
|
+
TransferFeeAmount = 2,
|
|
17
|
+
MintCloseAuthority = 3,
|
|
18
|
+
ConfidentialTransferMint = 4,
|
|
19
|
+
ConfidentialTransferAccount = 5,
|
|
20
|
+
DefaultAccountState = 6,
|
|
21
|
+
ImmutableOwner = 7,
|
|
22
|
+
MemoTransfer = 8,
|
|
23
|
+
NonTransferable = 9,
|
|
24
|
+
InterestBearingConfig = 10,
|
|
25
|
+
CpiGuard = 11,
|
|
26
|
+
PermanentDelegate = 12,
|
|
27
|
+
NonTransferableAccount = 13,
|
|
28
|
+
TransferHook = 14,
|
|
29
|
+
TransferHookAccount = 15,
|
|
30
|
+
MetadataPointer = 18,
|
|
31
|
+
TokenMetadata = 19,
|
|
32
|
+
GroupPointer = 20,
|
|
33
|
+
GroupMemberPointer = 22
|
|
34
|
+
}
|
|
35
|
+
/** Transfer fee configuration extension. @since 1.1.0 */
|
|
36
|
+
export interface TransferFeeConfig {
|
|
37
|
+
type: 'TransferFeeConfig';
|
|
38
|
+
transferFeeConfigAuthority: Pubkey;
|
|
39
|
+
withdrawWithheldAuthority: Pubkey;
|
|
40
|
+
withheldAmount: bigint;
|
|
41
|
+
olderTransferFee: {
|
|
42
|
+
epoch: bigint;
|
|
43
|
+
maximumFee: bigint;
|
|
44
|
+
transferFeeBasisPoints: number;
|
|
45
|
+
};
|
|
46
|
+
newerTransferFee: {
|
|
47
|
+
epoch: bigint;
|
|
48
|
+
maximumFee: bigint;
|
|
49
|
+
transferFeeBasisPoints: number;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** Transfer fee amount (on token accounts). @since 1.1.0 */
|
|
53
|
+
export interface TransferFeeAmount {
|
|
54
|
+
type: 'TransferFeeAmount';
|
|
55
|
+
withheldAmount: bigint;
|
|
56
|
+
}
|
|
57
|
+
/** Mint close authority extension. @since 1.1.0 */
|
|
58
|
+
export interface MintCloseAuthorityExt {
|
|
59
|
+
type: 'MintCloseAuthority';
|
|
60
|
+
closeAuthority: Pubkey;
|
|
61
|
+
}
|
|
62
|
+
/** Default account state extension. @since 1.1.0 */
|
|
63
|
+
export interface DefaultAccountStateExt {
|
|
64
|
+
type: 'DefaultAccountState';
|
|
65
|
+
state: number;
|
|
66
|
+
}
|
|
67
|
+
/** Immutable owner extension (marker, no data). @since 1.1.0 */
|
|
68
|
+
export interface ImmutableOwnerExt {
|
|
69
|
+
type: 'ImmutableOwner';
|
|
70
|
+
}
|
|
71
|
+
/** Memo transfer extension. @since 1.1.0 */
|
|
72
|
+
export interface MemoTransferExt {
|
|
73
|
+
type: 'MemoTransfer';
|
|
74
|
+
requireIncomingTransferMemos: boolean;
|
|
75
|
+
}
|
|
76
|
+
/** Non-transferable extension (marker). @since 1.1.0 */
|
|
77
|
+
export interface NonTransferableExt {
|
|
78
|
+
type: 'NonTransferable';
|
|
79
|
+
}
|
|
80
|
+
/** Interest-bearing config extension. @since 1.1.0 */
|
|
81
|
+
export interface InterestBearingConfigExt {
|
|
82
|
+
type: 'InterestBearingConfig';
|
|
83
|
+
rateAuthority: Pubkey;
|
|
84
|
+
initializationTimestamp: bigint;
|
|
85
|
+
preUpdateAverageRate: number;
|
|
86
|
+
lastUpdateTimestamp: bigint;
|
|
87
|
+
currentRate: number;
|
|
88
|
+
}
|
|
89
|
+
/** Permanent delegate extension. @since 1.1.0 */
|
|
90
|
+
export interface PermanentDelegateExt {
|
|
91
|
+
type: 'PermanentDelegate';
|
|
92
|
+
delegate: Pubkey;
|
|
93
|
+
}
|
|
94
|
+
/** Metadata pointer extension. @since 1.1.0 */
|
|
95
|
+
export interface MetadataPointerExt {
|
|
96
|
+
type: 'MetadataPointer';
|
|
97
|
+
authority: Pubkey;
|
|
98
|
+
metadataAddress: Pubkey;
|
|
99
|
+
}
|
|
100
|
+
/** Unknown / unrecognized extension. @since 1.1.0 */
|
|
101
|
+
export interface UnknownExtension {
|
|
102
|
+
type: 'Unknown';
|
|
103
|
+
extensionType: number;
|
|
104
|
+
data: Uint8Array;
|
|
105
|
+
}
|
|
106
|
+
/** Union of all decoded extensions. @since 1.1.0 */
|
|
107
|
+
export type DecodedExtension = TransferFeeConfig | TransferFeeAmount | MintCloseAuthorityExt | DefaultAccountStateExt | ImmutableOwnerExt | MemoTransferExt | NonTransferableExt | InterestBearingConfigExt | PermanentDelegateExt | MetadataPointerExt | UnknownExtension;
|
|
108
|
+
/** Decoded Token-2022 account with extensions. @since 1.1.0 */
|
|
109
|
+
export interface DecodedToken2022Account extends DecodedTokenAccount {
|
|
110
|
+
extensions: DecodedExtension[];
|
|
111
|
+
}
|
|
112
|
+
/** Decoded Token-2022 mint with extensions. @since 1.1.0 */
|
|
113
|
+
export interface DecodedToken2022Mint extends DecodedMint {
|
|
114
|
+
extensions: DecodedExtension[];
|
|
115
|
+
}
|
|
116
|
+
/** SPL Token-2022 Program ID. @since 1.1.0 */
|
|
117
|
+
export declare const TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
|
|
118
|
+
/**
|
|
119
|
+
* Decode a Token-2022 token account (base layout + TLV extensions).
|
|
120
|
+
*
|
|
121
|
+
* @param data - Raw account data (>= 165 bytes).
|
|
122
|
+
* @returns Decoded account with parsed extensions.
|
|
123
|
+
* @since 1.1.0
|
|
124
|
+
*/
|
|
125
|
+
export declare function decodeToken2022Account(data: Uint8Array): DecodedToken2022Account;
|
|
126
|
+
/**
|
|
127
|
+
* Decode a Token-2022 mint (base layout + TLV extensions).
|
|
128
|
+
*
|
|
129
|
+
* @param data - Raw account data (>= 82 bytes).
|
|
130
|
+
* @returns Decoded mint with parsed extensions.
|
|
131
|
+
* @since 1.1.0
|
|
132
|
+
*/
|
|
133
|
+
export declare function decodeToken2022Mint(data: Uint8Array): DecodedToken2022Mint;
|
|
134
|
+
//# sourceMappingURL=token-2022.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-2022.d.ts","sourceRoot":"","sources":["../../../src/decoders/token-2022.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SPL Token-2022 (Token Extensions) decoder.
|
|
4
|
+
*
|
|
5
|
+
* Parses TLV (Type-Length-Value) extensions appended after the standard
|
|
6
|
+
* 165-byte token account or 82-byte mint layout.
|
|
7
|
+
*
|
|
8
|
+
* @module decoders/token-2022
|
|
9
|
+
* @since 1.1.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TOKEN_2022_PROGRAM_ID = exports.TokenExtensionType = void 0;
|
|
13
|
+
exports.decodeToken2022Account = decodeToken2022Account;
|
|
14
|
+
exports.decodeToken2022Mint = decodeToken2022Mint;
|
|
15
|
+
const layout_1 = require("./layout");
|
|
16
|
+
const token_1 = require("./token");
|
|
17
|
+
// ── Extension type enum ────────────────────────────────────────
|
|
18
|
+
/** Known Token-2022 extension types. @since 1.1.0 */
|
|
19
|
+
var TokenExtensionType;
|
|
20
|
+
(function (TokenExtensionType) {
|
|
21
|
+
TokenExtensionType[TokenExtensionType["Uninitialized"] = 0] = "Uninitialized";
|
|
22
|
+
TokenExtensionType[TokenExtensionType["TransferFeeConfig"] = 1] = "TransferFeeConfig";
|
|
23
|
+
TokenExtensionType[TokenExtensionType["TransferFeeAmount"] = 2] = "TransferFeeAmount";
|
|
24
|
+
TokenExtensionType[TokenExtensionType["MintCloseAuthority"] = 3] = "MintCloseAuthority";
|
|
25
|
+
TokenExtensionType[TokenExtensionType["ConfidentialTransferMint"] = 4] = "ConfidentialTransferMint";
|
|
26
|
+
TokenExtensionType[TokenExtensionType["ConfidentialTransferAccount"] = 5] = "ConfidentialTransferAccount";
|
|
27
|
+
TokenExtensionType[TokenExtensionType["DefaultAccountState"] = 6] = "DefaultAccountState";
|
|
28
|
+
TokenExtensionType[TokenExtensionType["ImmutableOwner"] = 7] = "ImmutableOwner";
|
|
29
|
+
TokenExtensionType[TokenExtensionType["MemoTransfer"] = 8] = "MemoTransfer";
|
|
30
|
+
TokenExtensionType[TokenExtensionType["NonTransferable"] = 9] = "NonTransferable";
|
|
31
|
+
TokenExtensionType[TokenExtensionType["InterestBearingConfig"] = 10] = "InterestBearingConfig";
|
|
32
|
+
TokenExtensionType[TokenExtensionType["CpiGuard"] = 11] = "CpiGuard";
|
|
33
|
+
TokenExtensionType[TokenExtensionType["PermanentDelegate"] = 12] = "PermanentDelegate";
|
|
34
|
+
TokenExtensionType[TokenExtensionType["NonTransferableAccount"] = 13] = "NonTransferableAccount";
|
|
35
|
+
TokenExtensionType[TokenExtensionType["TransferHook"] = 14] = "TransferHook";
|
|
36
|
+
TokenExtensionType[TokenExtensionType["TransferHookAccount"] = 15] = "TransferHookAccount";
|
|
37
|
+
TokenExtensionType[TokenExtensionType["MetadataPointer"] = 18] = "MetadataPointer";
|
|
38
|
+
TokenExtensionType[TokenExtensionType["TokenMetadata"] = 19] = "TokenMetadata";
|
|
39
|
+
TokenExtensionType[TokenExtensionType["GroupPointer"] = 20] = "GroupPointer";
|
|
40
|
+
TokenExtensionType[TokenExtensionType["GroupMemberPointer"] = 22] = "GroupMemberPointer";
|
|
41
|
+
})(TokenExtensionType || (exports.TokenExtensionType = TokenExtensionType = {}));
|
|
42
|
+
/** SPL Token-2022 Program ID. @since 1.1.0 */
|
|
43
|
+
exports.TOKEN_2022_PROGRAM_ID = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
|
|
44
|
+
// ── TLV parser ─────────────────────────────────────────────────
|
|
45
|
+
/**
|
|
46
|
+
* Parse TLV extensions from raw account data.
|
|
47
|
+
*
|
|
48
|
+
* Layout after base account:
|
|
49
|
+
* - 1 byte: AccountType discriminator (1 = Mint, 2 = Account)
|
|
50
|
+
* - TLV entries: [u16 type, u16 length, ...data] repeated
|
|
51
|
+
*
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
function parseTlvExtensions(data, baseSize) {
|
|
55
|
+
const extensions = [];
|
|
56
|
+
// Skip base layout + 1-byte AccountType discriminator
|
|
57
|
+
let offset = baseSize + 1;
|
|
58
|
+
while (offset + 4 <= data.length) {
|
|
59
|
+
const extType = data[offset] | (data[offset + 1] << 8); // u16 LE
|
|
60
|
+
const extLen = data[offset + 2] | (data[offset + 3] << 8); // u16 LE
|
|
61
|
+
offset += 4;
|
|
62
|
+
// End marker: type=0 && length=0
|
|
63
|
+
if (extType === 0 && extLen === 0)
|
|
64
|
+
break;
|
|
65
|
+
if (offset + extLen > data.length)
|
|
66
|
+
break;
|
|
67
|
+
const extData = data.slice(offset, offset + extLen);
|
|
68
|
+
extensions.push(decodeExtension(extType, extData));
|
|
69
|
+
offset += extLen;
|
|
70
|
+
}
|
|
71
|
+
return extensions;
|
|
72
|
+
}
|
|
73
|
+
/** @internal */
|
|
74
|
+
function decodeExtension(extType, data) {
|
|
75
|
+
const r = new layout_1.AccountReader(data);
|
|
76
|
+
switch (extType) {
|
|
77
|
+
case TokenExtensionType.TransferFeeConfig: {
|
|
78
|
+
const transferFeeConfigAuthority = r.pubkey();
|
|
79
|
+
const withdrawWithheldAuthority = r.pubkey();
|
|
80
|
+
const withheldAmount = r.u64();
|
|
81
|
+
const olderEpoch = r.u64();
|
|
82
|
+
const olderMax = r.u64();
|
|
83
|
+
const olderBps = r.u16();
|
|
84
|
+
const newerEpoch = r.u64();
|
|
85
|
+
const newerMax = r.u64();
|
|
86
|
+
const newerBps = r.u16();
|
|
87
|
+
return {
|
|
88
|
+
type: 'TransferFeeConfig',
|
|
89
|
+
transferFeeConfigAuthority,
|
|
90
|
+
withdrawWithheldAuthority,
|
|
91
|
+
withheldAmount,
|
|
92
|
+
olderTransferFee: { epoch: olderEpoch, maximumFee: olderMax, transferFeeBasisPoints: olderBps },
|
|
93
|
+
newerTransferFee: { epoch: newerEpoch, maximumFee: newerMax, transferFeeBasisPoints: newerBps },
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
case TokenExtensionType.TransferFeeAmount:
|
|
97
|
+
return { type: 'TransferFeeAmount', withheldAmount: r.u64() };
|
|
98
|
+
case TokenExtensionType.MintCloseAuthority:
|
|
99
|
+
return { type: 'MintCloseAuthority', closeAuthority: r.pubkey() };
|
|
100
|
+
case TokenExtensionType.DefaultAccountState:
|
|
101
|
+
return { type: 'DefaultAccountState', state: r.u8() };
|
|
102
|
+
case TokenExtensionType.ImmutableOwner:
|
|
103
|
+
return { type: 'ImmutableOwner' };
|
|
104
|
+
case TokenExtensionType.MemoTransfer:
|
|
105
|
+
return { type: 'MemoTransfer', requireIncomingTransferMemos: r.bool() };
|
|
106
|
+
case TokenExtensionType.NonTransferable:
|
|
107
|
+
return { type: 'NonTransferable' };
|
|
108
|
+
case TokenExtensionType.InterestBearingConfig: {
|
|
109
|
+
const rateAuthority = r.pubkey();
|
|
110
|
+
const initializationTimestamp = r.i64();
|
|
111
|
+
const preUpdateAverageRate = r.u16();
|
|
112
|
+
const lastUpdateTimestamp = r.i64();
|
|
113
|
+
const currentRate = r.u16();
|
|
114
|
+
return {
|
|
115
|
+
type: 'InterestBearingConfig',
|
|
116
|
+
rateAuthority,
|
|
117
|
+
initializationTimestamp,
|
|
118
|
+
preUpdateAverageRate,
|
|
119
|
+
lastUpdateTimestamp,
|
|
120
|
+
currentRate,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
case TokenExtensionType.PermanentDelegate:
|
|
124
|
+
return { type: 'PermanentDelegate', delegate: r.pubkey() };
|
|
125
|
+
case TokenExtensionType.MetadataPointer:
|
|
126
|
+
return { type: 'MetadataPointer', authority: r.pubkey(), metadataAddress: r.pubkey() };
|
|
127
|
+
default:
|
|
128
|
+
return { type: 'Unknown', extensionType: extType, data };
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// ── Public decoders ────────────────────────────────────────────
|
|
132
|
+
/**
|
|
133
|
+
* Decode a Token-2022 token account (base layout + TLV extensions).
|
|
134
|
+
*
|
|
135
|
+
* @param data - Raw account data (>= 165 bytes).
|
|
136
|
+
* @returns Decoded account with parsed extensions.
|
|
137
|
+
* @since 1.1.0
|
|
138
|
+
*/
|
|
139
|
+
function decodeToken2022Account(data) {
|
|
140
|
+
const base = (0, token_1.decodeTokenAccount)(data);
|
|
141
|
+
const extensions = data.length > token_1.TOKEN_ACCOUNT_SIZE + 1
|
|
142
|
+
? parseTlvExtensions(data, token_1.TOKEN_ACCOUNT_SIZE)
|
|
143
|
+
: [];
|
|
144
|
+
return { ...base, extensions };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Decode a Token-2022 mint (base layout + TLV extensions).
|
|
148
|
+
*
|
|
149
|
+
* @param data - Raw account data (>= 82 bytes).
|
|
150
|
+
* @returns Decoded mint with parsed extensions.
|
|
151
|
+
* @since 1.1.0
|
|
152
|
+
*/
|
|
153
|
+
function decodeToken2022Mint(data) {
|
|
154
|
+
const base = (0, token_1.decodeMint)(data);
|
|
155
|
+
const extensions = data.length > token_1.MINT_SIZE + 1
|
|
156
|
+
? parseTlvExtensions(data, token_1.MINT_SIZE)
|
|
157
|
+
: [];
|
|
158
|
+
return { ...base, extensions };
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=token-2022.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-2022.js","sourceRoot":"","sources":["../../../src/decoders/token-2022.ts"],"names":[],"mappings":"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"}
|