@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.
Files changed (481) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/cjs/accounts/helpers.d.ts +88 -0
  3. package/dist/cjs/accounts/helpers.d.ts.map +1 -0
  4. package/dist/cjs/accounts/helpers.js +117 -0
  5. package/dist/cjs/accounts/helpers.js.map +1 -0
  6. package/dist/cjs/accounts/index.d.ts +105 -0
  7. package/dist/cjs/accounts/index.d.ts.map +1 -0
  8. package/dist/cjs/accounts/index.js +137 -0
  9. package/dist/cjs/accounts/index.js.map +1 -0
  10. package/dist/cjs/accounts/lookup.d.ts +30 -0
  11. package/dist/cjs/accounts/lookup.d.ts.map +1 -0
  12. package/dist/cjs/accounts/lookup.js +31 -0
  13. package/dist/cjs/accounts/lookup.js.map +1 -0
  14. package/dist/cjs/accounts/nonce.d.ts +30 -0
  15. package/dist/cjs/accounts/nonce.d.ts.map +1 -0
  16. package/dist/cjs/accounts/nonce.js +31 -0
  17. package/dist/cjs/accounts/nonce.js.map +1 -0
  18. package/dist/cjs/accounts/stake.d.ts +33 -0
  19. package/dist/cjs/accounts/stake.d.ts.map +1 -0
  20. package/dist/cjs/accounts/stake.js +34 -0
  21. package/dist/cjs/accounts/stake.js.map +1 -0
  22. package/dist/cjs/accounts/token.d.ts +98 -0
  23. package/dist/cjs/accounts/token.d.ts.map +1 -0
  24. package/dist/cjs/accounts/token.js +126 -0
  25. package/dist/cjs/accounts/token.js.map +1 -0
  26. package/dist/cjs/ai/tools/zod/index.d.ts +1 -1
  27. package/dist/cjs/ai/tools/zod/index.d.ts.map +1 -1
  28. package/dist/cjs/ai/tools/zod/index.js +2 -2
  29. package/dist/cjs/ai/tools/zod/index.js.map +1 -1
  30. package/dist/cjs/ai/tools/zod/types.d.ts +2 -0
  31. package/dist/cjs/ai/tools/zod/types.d.ts.map +1 -1
  32. package/dist/cjs/ai/tools/zod/types.js.map +1 -1
  33. package/dist/cjs/core/client.d.ts +25 -0
  34. package/dist/cjs/core/client.d.ts.map +1 -1
  35. package/dist/cjs/core/client.js +30 -0
  36. package/dist/cjs/core/client.js.map +1 -1
  37. package/dist/cjs/decoders/index.d.ts +36 -0
  38. package/dist/cjs/decoders/index.d.ts.map +1 -0
  39. package/dist/cjs/decoders/index.js +62 -0
  40. package/dist/cjs/decoders/index.js.map +1 -0
  41. package/dist/cjs/decoders/layout.d.ts +105 -0
  42. package/dist/cjs/decoders/layout.d.ts.map +1 -0
  43. package/dist/cjs/decoders/layout.js +188 -0
  44. package/dist/cjs/decoders/layout.js.map +1 -0
  45. package/dist/cjs/decoders/lookup-table.d.ts +60 -0
  46. package/dist/cjs/decoders/lookup-table.d.ts.map +1 -0
  47. package/dist/cjs/decoders/lookup-table.js +75 -0
  48. package/dist/cjs/decoders/lookup-table.js.map +1 -0
  49. package/dist/cjs/decoders/multisig.d.ts +49 -0
  50. package/dist/cjs/decoders/multisig.d.ts.map +1 -0
  51. package/dist/cjs/decoders/multisig.js +50 -0
  52. package/dist/cjs/decoders/multisig.js.map +1 -0
  53. package/dist/cjs/decoders/nonce.d.ts +54 -0
  54. package/dist/cjs/decoders/nonce.d.ts.map +1 -0
  55. package/dist/cjs/decoders/nonce.js +48 -0
  56. package/dist/cjs/decoders/nonce.js.map +1 -0
  57. package/dist/cjs/decoders/stake.d.ts +65 -0
  58. package/dist/cjs/decoders/stake.d.ts.map +1 -0
  59. package/dist/cjs/decoders/stake.js +86 -0
  60. package/dist/cjs/decoders/stake.js.map +1 -0
  61. package/dist/cjs/decoders/token-2022.d.ts +134 -0
  62. package/dist/cjs/decoders/token-2022.d.ts.map +1 -0
  63. package/dist/cjs/decoders/token-2022.js +160 -0
  64. package/dist/cjs/decoders/token-2022.js.map +1 -0
  65. package/dist/cjs/decoders/token.d.ts +87 -0
  66. package/dist/cjs/decoders/token.d.ts.map +1 -0
  67. package/dist/cjs/decoders/token.js +71 -0
  68. package/dist/cjs/decoders/token.js.map +1 -0
  69. package/dist/cjs/index.d.ts +2 -0
  70. package/dist/cjs/index.d.ts.map +1 -1
  71. package/dist/cjs/index.js +4 -0
  72. package/dist/cjs/index.js.map +1 -1
  73. package/dist/docs/assets/navigation.js +1 -1
  74. package/dist/docs/assets/search.js +1 -1
  75. package/dist/docs/classes/AccountReader.html +61 -0
  76. package/dist/docs/classes/AccountsClient.html +43 -0
  77. package/dist/docs/classes/DasClient.html +13 -13
  78. package/dist/docs/classes/GeyserParser.html +17 -17
  79. package/dist/docs/classes/GrpcTransport.html +6 -6
  80. package/dist/docs/classes/HttpTransport.html +4 -4
  81. package/dist/docs/classes/NetworkError.html +5 -5
  82. package/dist/docs/classes/RpcMethodNotFoundError.html +4 -4
  83. package/dist/docs/classes/SolanaRpc.html +55 -55
  84. package/dist/docs/classes/SynapseClient.html +35 -25
  85. package/dist/docs/classes/SynapseError.html +4 -4
  86. package/dist/docs/classes/TimeoutError.html +4 -4
  87. package/dist/docs/classes/UpstreamError.html +6 -6
  88. package/dist/docs/classes/WsClient.html +10 -10
  89. package/dist/docs/enums/SynapseNetwork.html +2 -2
  90. package/dist/docs/enums/SynapseRegion.html +2 -2
  91. package/dist/docs/enums/TokenExtensionType.html +23 -0
  92. package/dist/docs/functions/Epoch-1.html +1 -1
  93. package/dist/docs/functions/Lamports-2.html +1 -1
  94. package/dist/docs/functions/Pubkey-1.html +1 -1
  95. package/dist/docs/functions/Sig.html +1 -1
  96. package/dist/docs/functions/Slot-1.html +1 -1
  97. package/dist/docs/functions/UnixTs.html +1 -1
  98. package/dist/docs/functions/autoSelectRegion.html +1 -1
  99. package/dist/docs/functions/base58Encode.html +1 -1
  100. package/dist/docs/functions/base64ToBytes.html +7 -0
  101. package/dist/docs/functions/chunk.html +1 -1
  102. package/dist/docs/functions/computeBalanceChanges.html +1 -1
  103. package/dist/docs/functions/computeTokenBalanceChanges.html +1 -1
  104. package/dist/docs/functions/createSynapse.html +1 -1
  105. package/dist/docs/functions/decodeLookupTable.html +17 -0
  106. package/dist/docs/functions/decodeMint.html +6 -0
  107. package/dist/docs/functions/decodeMultisig.html +13 -0
  108. package/dist/docs/functions/decodeNonceAccount.html +14 -0
  109. package/dist/docs/functions/decodeStakeAccount.html +12 -0
  110. package/dist/docs/functions/decodeToken2022Account.html +5 -0
  111. package/dist/docs/functions/decodeToken2022Mint.html +5 -0
  112. package/dist/docs/functions/decodeTokenAccount.html +6 -0
  113. package/dist/docs/functions/encodeBase58.html +7 -0
  114. package/dist/docs/functions/fetchLookupTable.html +10 -0
  115. package/dist/docs/functions/fetchMint.html +11 -0
  116. package/dist/docs/functions/fetchNonceAccount.html +10 -0
  117. package/dist/docs/functions/fetchStakeAccount.html +10 -0
  118. package/dist/docs/functions/fetchTokenAccount.html +12 -0
  119. package/dist/docs/functions/fetchTokenAccountsByOwner.html +11 -0
  120. package/dist/docs/functions/fromKitAddress.html +1 -1
  121. package/dist/docs/functions/getAccountInfo.html +1 -1
  122. package/dist/docs/functions/getAsset.html +1 -1
  123. package/dist/docs/functions/getAssetBatch.html +1 -1
  124. package/dist/docs/functions/getAssetProof.html +1 -1
  125. package/dist/docs/functions/getAssetProofBatch.html +1 -1
  126. package/dist/docs/functions/getAssetsByAuthority.html +1 -1
  127. package/dist/docs/functions/getAssetsByCreator.html +1 -1
  128. package/dist/docs/functions/getAssetsByGroup.html +1 -1
  129. package/dist/docs/functions/getAssetsByOwner.html +1 -1
  130. package/dist/docs/functions/getBalance.html +1 -1
  131. package/dist/docs/functions/getBlock.html +1 -1
  132. package/dist/docs/functions/getBlockCommitment.html +1 -1
  133. package/dist/docs/functions/getBlockHeight.html +1 -1
  134. package/dist/docs/functions/getBlockProduction.html +1 -1
  135. package/dist/docs/functions/getBlockTime.html +1 -1
  136. package/dist/docs/functions/getBlocks.html +1 -1
  137. package/dist/docs/functions/getBlocksWithLimit.html +1 -1
  138. package/dist/docs/functions/getClusterNodes.html +1 -1
  139. package/dist/docs/functions/getDecodedAccount.html +14 -0
  140. package/dist/docs/functions/getDecodedAccounts.html +9 -0
  141. package/dist/docs/functions/getEnvironment.html +1 -1
  142. package/dist/docs/functions/getEpochInfo.html +1 -1
  143. package/dist/docs/functions/getEpochSchedule.html +1 -1
  144. package/dist/docs/functions/getFeeForMessage.html +1 -1
  145. package/dist/docs/functions/getFirstAvailableBlock.html +1 -1
  146. package/dist/docs/functions/getGenesisHash.html +1 -1
  147. package/dist/docs/functions/getHealth.html +1 -1
  148. package/dist/docs/functions/getHighestSnapshotSlot.html +1 -1
  149. package/dist/docs/functions/getIdentity.html +1 -1
  150. package/dist/docs/functions/getInflationGovernor.html +1 -1
  151. package/dist/docs/functions/getInflationRate.html +1 -1
  152. package/dist/docs/functions/getInflationReward.html +1 -1
  153. package/dist/docs/functions/getLargestAccounts.html +1 -1
  154. package/dist/docs/functions/getLatestBlockhash.html +1 -1
  155. package/dist/docs/functions/getLeaderSchedule.html +1 -1
  156. package/dist/docs/functions/getMaxRetransmitSlot.html +1 -1
  157. package/dist/docs/functions/getMaxShredInsertSlot.html +1 -1
  158. package/dist/docs/functions/getMinimumBalanceForRentExemption.html +1 -1
  159. package/dist/docs/functions/getMultipleAccounts.html +1 -1
  160. package/dist/docs/functions/getProgramAccounts.html +1 -1
  161. package/dist/docs/functions/getProgramCategory.html +1 -1
  162. package/dist/docs/functions/getRecentPerformanceSamples.html +1 -1
  163. package/dist/docs/functions/getRecentPrioritizationFees.html +1 -1
  164. package/dist/docs/functions/getSignatureStatuses.html +1 -1
  165. package/dist/docs/functions/getSignaturesForAddress.html +1 -1
  166. package/dist/docs/functions/getSignaturesForAsset.html +1 -1
  167. package/dist/docs/functions/getSlot.html +1 -1
  168. package/dist/docs/functions/getSlotLeader.html +1 -1
  169. package/dist/docs/functions/getSlotLeaders.html +1 -1
  170. package/dist/docs/functions/getStakeActivation.html +1 -1
  171. package/dist/docs/functions/getStakeMinimumDelegation.html +1 -1
  172. package/dist/docs/functions/getSupply.html +1 -1
  173. package/dist/docs/functions/getTokenAccountBalance.html +1 -1
  174. package/dist/docs/functions/getTokenAccounts.html +1 -1
  175. package/dist/docs/functions/getTokenAccountsByDelegate.html +1 -1
  176. package/dist/docs/functions/getTokenAccountsByOwner.html +1 -1
  177. package/dist/docs/functions/getTokenLargestAccounts.html +1 -1
  178. package/dist/docs/functions/getTokenSupply.html +1 -1
  179. package/dist/docs/functions/getTransaction.html +1 -1
  180. package/dist/docs/functions/getTransactionCount.html +1 -1
  181. package/dist/docs/functions/getVersion.html +1 -1
  182. package/dist/docs/functions/getVoteAccounts.html +1 -1
  183. package/dist/docs/functions/isBlockhashValid.html +1 -1
  184. package/dist/docs/functions/isBrowser.html +1 -1
  185. package/dist/docs/functions/isProgramInCategory.html +1 -1
  186. package/dist/docs/functions/isServer.html +1 -1
  187. package/dist/docs/functions/isValidPubkey.html +1 -1
  188. package/dist/docs/functions/isValidSignature.html +1 -1
  189. package/dist/docs/functions/lamportsToSol.html +1 -1
  190. package/dist/docs/functions/listEndpoints.html +1 -1
  191. package/dist/docs/functions/listNetworks.html +1 -1
  192. package/dist/docs/functions/listRegions.html +1 -1
  193. package/dist/docs/functions/minimumLedgerSlot.html +1 -1
  194. package/dist/docs/functions/parseAccountUpdate.html +1 -1
  195. package/dist/docs/functions/parseBlockMeta.html +1 -1
  196. package/dist/docs/functions/parseEntry.html +1 -1
  197. package/dist/docs/functions/parseGeyserUpdate.html +1 -1
  198. package/dist/docs/functions/parseSlotUpdate.html +1 -1
  199. package/dist/docs/functions/parseTimestamp.html +1 -1
  200. package/dist/docs/functions/parseTransaction.html +1 -1
  201. package/dist/docs/functions/probeLatency.html +1 -1
  202. package/dist/docs/functions/rawBufferToBase58.html +1 -1
  203. package/dist/docs/functions/rawBufferToBase64.html +1 -1
  204. package/dist/docs/functions/rawBufferToBytes.html +1 -1
  205. package/dist/docs/functions/rawBufferToHex.html +1 -1
  206. package/dist/docs/functions/requestAirdrop.html +1 -1
  207. package/dist/docs/functions/resolveEndpoint.html +1 -1
  208. package/dist/docs/functions/resolveProgram.html +1 -1
  209. package/dist/docs/functions/resolveProgramBatch.html +1 -1
  210. package/dist/docs/functions/retry.html +1 -1
  211. package/dist/docs/functions/searchAssets.html +1 -1
  212. package/dist/docs/functions/sendTransaction.html +1 -1
  213. package/dist/docs/functions/simulateTransaction.html +1 -1
  214. package/dist/docs/functions/sleep.html +1 -1
  215. package/dist/docs/functions/solToLamports.html +1 -1
  216. package/dist/docs/functions/toClientConfig.html +1 -1
  217. package/dist/docs/functions/toKitAddress.html +1 -1
  218. package/dist/docs/functions/toKitLamports.html +1 -1
  219. package/dist/docs/functions/toKitSignatureString.html +1 -1
  220. package/dist/docs/hierarchy.html +1 -1
  221. package/dist/docs/interfaces/AccountInfo.html +7 -7
  222. package/dist/docs/interfaces/AccountNotification.html +2 -2
  223. package/dist/docs/interfaces/AccountSubParams.html +2 -2
  224. package/dist/docs/interfaces/AssetSignatureInfo.html +2 -2
  225. package/dist/docs/interfaces/AssetSignaturesPage.html +2 -2
  226. package/dist/docs/interfaces/BalanceChange.html +6 -6
  227. package/dist/docs/interfaces/BlockProduction.html +3 -3
  228. package/dist/docs/interfaces/BlockResult.html +2 -2
  229. package/dist/docs/interfaces/BlockReward.html +2 -2
  230. package/dist/docs/interfaces/BlockhashResult.html +2 -2
  231. package/dist/docs/interfaces/CallOptions.html +6 -6
  232. package/dist/docs/interfaces/ConfirmedTransaction.html +6 -6
  233. package/dist/docs/interfaces/ContactInfo.html +2 -2
  234. package/dist/docs/interfaces/DasAsset.html +2 -2
  235. package/dist/docs/interfaces/DasAssetProof.html +2 -2
  236. package/dist/docs/interfaces/DasAuthority.html +2 -2
  237. package/dist/docs/interfaces/DasCompression.html +2 -2
  238. package/dist/docs/interfaces/DasContent.html +2 -2
  239. package/dist/docs/interfaces/DasCreator.html +2 -2
  240. package/dist/docs/interfaces/DasFile.html +2 -2
  241. package/dist/docs/interfaces/DasGrouping.html +2 -2
  242. package/dist/docs/interfaces/DasOpts.html +2 -2
  243. package/dist/docs/interfaces/DasOwnership.html +2 -2
  244. package/dist/docs/interfaces/DasPage.html +2 -2
  245. package/dist/docs/interfaces/DasRoyalty.html +2 -2
  246. package/dist/docs/interfaces/DasSearchParams.html +2 -2
  247. package/dist/docs/interfaces/DasSupply.html +2 -2
  248. package/dist/docs/interfaces/DataSlice.html +3 -3
  249. package/dist/docs/interfaces/DecodedAccountResult.html +10 -0
  250. package/dist/docs/interfaces/DecodedLookupTable.html +20 -0
  251. package/dist/docs/interfaces/DecodedMint.html +16 -0
  252. package/dist/docs/interfaces/DecodedMultisig.html +14 -0
  253. package/dist/docs/interfaces/DecodedNonceAccount.html +16 -0
  254. package/dist/docs/interfaces/DecodedStakeAccount.html +7 -0
  255. package/dist/docs/interfaces/DecodedToken2022Account.html +20 -0
  256. package/dist/docs/interfaces/DecodedToken2022Mint.html +14 -0
  257. package/dist/docs/interfaces/DecodedTokenAccount.html +22 -0
  258. package/dist/docs/interfaces/DefaultAccountStateExt.html +5 -0
  259. package/dist/docs/interfaces/EndpointConnectConfig.html +5 -5
  260. package/dist/docs/interfaces/EpochInfo.html +7 -7
  261. package/dist/docs/interfaces/EpochSchedule.html +2 -2
  262. package/dist/docs/interfaces/FetchedMint.html +13 -0
  263. package/dist/docs/interfaces/FetchedTokenAccount.html +13 -0
  264. package/dist/docs/interfaces/GetAccountInfoOpts.html +6 -6
  265. package/dist/docs/interfaces/GetAssetsByAuthorityParams.html +2 -2
  266. package/dist/docs/interfaces/GetAssetsByCreatorParams.html +2 -2
  267. package/dist/docs/interfaces/GetAssetsByGroupParams.html +2 -2
  268. package/dist/docs/interfaces/GetAssetsByOwnerParams.html +2 -2
  269. package/dist/docs/interfaces/GetBlockOpts.html +6 -6
  270. package/dist/docs/interfaces/GetBlockProductionOpts.html +6 -6
  271. package/dist/docs/interfaces/GetMultipleAccountsOpts.html +6 -6
  272. package/dist/docs/interfaces/GetProgramAccountsOpts.html +6 -6
  273. package/dist/docs/interfaces/GetSignatureStatusesOpts.html +6 -6
  274. package/dist/docs/interfaces/GetSignaturesOpts.html +7 -7
  275. package/dist/docs/interfaces/GetTokenAccountsParams.html +2 -2
  276. package/dist/docs/interfaces/GetTransactionOpts.html +6 -6
  277. package/dist/docs/interfaces/GeyserParserConfig.html +6 -6
  278. package/dist/docs/interfaces/GeyserParserEvents.html +9 -9
  279. package/dist/docs/interfaces/GeyserParserStats.html +2 -2
  280. package/dist/docs/interfaces/GrpcCallOptions.html +2 -2
  281. package/dist/docs/interfaces/GrpcTransportConfig.html +6 -6
  282. package/dist/docs/interfaces/ImmutableOwnerExt.html +4 -0
  283. package/dist/docs/interfaces/InflationGovernor.html +2 -2
  284. package/dist/docs/interfaces/InflationRate.html +2 -2
  285. package/dist/docs/interfaces/InflationReward.html +2 -2
  286. package/dist/docs/interfaces/InterestBearingConfigExt.html +9 -0
  287. package/dist/docs/interfaces/LatencyProbeResult.html +2 -2
  288. package/dist/docs/interfaces/LogsNotification.html +2 -2
  289. package/dist/docs/interfaces/LogsSubParams.html +2 -2
  290. package/dist/docs/interfaces/MemoTransferExt.html +5 -0
  291. package/dist/docs/interfaces/MetadataPointerExt.html +6 -0
  292. package/dist/docs/interfaces/MintCloseAuthorityExt.html +5 -0
  293. package/dist/docs/interfaces/NonTransferableExt.html +4 -0
  294. package/dist/docs/interfaces/PaginationOpts.html +2 -2
  295. package/dist/docs/interfaces/ParsedAccountUpdate.html +16 -16
  296. package/dist/docs/interfaces/ParsedBlockMeta.html +2 -2
  297. package/dist/docs/interfaces/ParsedEntry.html +2 -2
  298. package/dist/docs/interfaces/ParsedInstruction.html +9 -9
  299. package/dist/docs/interfaces/ParsedSlotUpdate.html +3 -3
  300. package/dist/docs/interfaces/ParsedTransaction.html +19 -19
  301. package/dist/docs/interfaces/PerfSample.html +2 -2
  302. package/dist/docs/interfaces/PermanentDelegateExt.html +5 -0
  303. package/dist/docs/interfaces/ProgramAccount.html +2 -2
  304. package/dist/docs/interfaces/ProgramNotification.html +2 -2
  305. package/dist/docs/interfaces/ProgramSubParams.html +2 -2
  306. package/dist/docs/interfaces/RawAccountInfo.html +2 -2
  307. package/dist/docs/interfaces/RawBlockMeta.html +2 -2
  308. package/dist/docs/interfaces/RawBuffer.html +2 -2
  309. package/dist/docs/interfaces/RawCompiledInstruction.html +2 -2
  310. package/dist/docs/interfaces/RawEntry.html +2 -2
  311. package/dist/docs/interfaces/RawGeyserUpdate.html +2 -2
  312. package/dist/docs/interfaces/RawInnerInstruction.html +2 -2
  313. package/dist/docs/interfaces/RawSlotInfo.html +2 -2
  314. package/dist/docs/interfaces/RawTimestamp.html +2 -2
  315. package/dist/docs/interfaces/RawTokenBalance.html +2 -2
  316. package/dist/docs/interfaces/RawTransactionInfo.html +2 -2
  317. package/dist/docs/interfaces/RootNotification.html +2 -2
  318. package/dist/docs/interfaces/RootSubParams.html +1 -1
  319. package/dist/docs/interfaces/RpcContext.html +2 -2
  320. package/dist/docs/interfaces/RpcError.html +4 -4
  321. package/dist/docs/interfaces/RpcRequest.html +2 -2
  322. package/dist/docs/interfaces/RpcResponse.html +2 -2
  323. package/dist/docs/interfaces/SendTransactionOpts.html +6 -6
  324. package/dist/docs/interfaces/SignatureInfo.html +7 -7
  325. package/dist/docs/interfaces/SignatureNotification.html +2 -2
  326. package/dist/docs/interfaces/SignatureStatus.html +5 -5
  327. package/dist/docs/interfaces/SignatureSubParams.html +2 -2
  328. package/dist/docs/interfaces/SignaturesForAssetParams.html +2 -2
  329. package/dist/docs/interfaces/SimulateResult.html +2 -2
  330. package/dist/docs/interfaces/SimulateTransactionOpts.html +7 -7
  331. package/dist/docs/interfaces/SlotNotification.html +2 -2
  332. package/dist/docs/interfaces/SlotSubParams.html +1 -1
  333. package/dist/docs/interfaces/SortOpts.html +2 -2
  334. package/dist/docs/interfaces/StakeAuthorized.html +5 -0
  335. package/dist/docs/interfaces/StakeDelegation.html +9 -0
  336. package/dist/docs/interfaces/StakeLockup.html +9 -0
  337. package/dist/docs/interfaces/StakeMeta.html +6 -0
  338. package/dist/docs/interfaces/Supply.html +5 -5
  339. package/dist/docs/interfaces/SynapseClientConfig.html +9 -9
  340. package/dist/docs/interfaces/SynapseEndpoint.html +7 -7
  341. package/dist/docs/interfaces/TokenAccount.html +3 -3
  342. package/dist/docs/interfaces/TokenAccountsByOwnerResult.html +2 -2
  343. package/dist/docs/interfaces/TokenAmount.html +5 -5
  344. package/dist/docs/interfaces/TokenBalanceChange.html +2 -2
  345. package/dist/docs/interfaces/TransactionMeta.html +11 -11
  346. package/dist/docs/interfaces/TransferFeeAmount.html +5 -0
  347. package/dist/docs/interfaces/TransferFeeConfig.html +9 -0
  348. package/dist/docs/interfaces/TransportConfig.html +7 -7
  349. package/dist/docs/interfaces/UnknownExtension.html +6 -0
  350. package/dist/docs/interfaces/VoteAccount.html +9 -9
  351. package/dist/docs/interfaces/VoteAccountsResult.html +3 -3
  352. package/dist/docs/interfaces/WsConfig.html +6 -6
  353. package/dist/docs/media/CHANGELOG.md +32 -0
  354. package/dist/docs/modules.html +65 -2
  355. package/dist/docs/types/AccountFetchOpts.html +3 -0
  356. package/dist/docs/types/AccountFilter.html +1 -1
  357. package/dist/docs/types/Base58.html +1 -1
  358. package/dist/docs/types/Brand.html +1 -1
  359. package/dist/docs/types/Commitment.html +1 -1
  360. package/dist/docs/types/DasSortBy.html +1 -1
  361. package/dist/docs/types/DasSortDirection.html +1 -1
  362. package/dist/docs/types/DataSizeFilter.html +1 -1
  363. package/dist/docs/types/DecodedExtension.html +3 -0
  364. package/dist/docs/types/Encoding.html +1 -1
  365. package/dist/docs/types/Epoch.html +1 -1
  366. package/dist/docs/types/Lamports.html +1 -1
  367. package/dist/docs/types/LogsFilter.html +1 -1
  368. package/dist/docs/types/MemcmpFilter.html +1 -1
  369. package/dist/docs/types/NonceState.html +3 -0
  370. package/dist/docs/types/ParsedGeyserUpdate.html +1 -1
  371. package/dist/docs/types/Pubkey.html +1 -1
  372. package/dist/docs/types/RuntimeEnv.html +1 -1
  373. package/dist/docs/types/Signature.html +1 -1
  374. package/dist/docs/types/Slot.html +1 -1
  375. package/dist/docs/types/StakeAccountType.html +3 -0
  376. package/dist/docs/types/SubscriptionId.html +1 -1
  377. package/dist/docs/types/TokenAccountState.html +3 -0
  378. package/dist/docs/types/TransactionDetail.html +1 -1
  379. package/dist/docs/types/UnaryMethod.html +1 -1
  380. package/dist/docs/types/UnixTimestamp.html +1 -1
  381. package/dist/docs/types/WsNotification.html +1 -1
  382. package/dist/docs/variables/JUPITER_PROGRAMS.html +1 -1
  383. package/dist/docs/variables/KNOWN_PROGRAMS.html +1 -1
  384. package/dist/docs/variables/KNOWN_PROGRAMS_COUNT.html +1 -1
  385. package/dist/docs/variables/LOOKUP_TABLE_HEADER_SIZE.html +3 -0
  386. package/dist/docs/variables/LOOKUP_TABLE_PROGRAM_ID.html +3 -0
  387. package/dist/docs/variables/MARINADE_PROGRAMS.html +1 -1
  388. package/dist/docs/variables/MAX_MULTISIG_SIGNERS.html +3 -0
  389. package/dist/docs/variables/METAPLEX_PROGRAMS.html +1 -1
  390. package/dist/docs/variables/METEORA_PROGRAMS.html +1 -1
  391. package/dist/docs/variables/MINT_SIZE.html +3 -0
  392. package/dist/docs/variables/MULTISIG_SIZE.html +3 -0
  393. package/dist/docs/variables/NONCE_ACCOUNT_SIZE.html +3 -0
  394. package/dist/docs/variables/ORCA_PROGRAMS.html +1 -1
  395. package/dist/docs/variables/OTHER_PROGRAMS.html +1 -1
  396. package/dist/docs/variables/RAYDIUM_PROGRAMS.html +1 -1
  397. package/dist/docs/variables/SDK_USER_AGENT.html +1 -1
  398. package/dist/docs/variables/SPL_PROGRAMS.html +1 -1
  399. package/dist/docs/variables/STAKE_PROGRAM_ID.html +3 -0
  400. package/dist/docs/variables/SYNAPSE_DEVNET_EU.html +1 -1
  401. package/dist/docs/variables/SYNAPSE_DEVNET_US.html +1 -1
  402. package/dist/docs/variables/SYNAPSE_ENDPOINTS.html +1 -1
  403. package/dist/docs/variables/SYNAPSE_MAINNET_EU.html +1 -1
  404. package/dist/docs/variables/SYNAPSE_MAINNET_US.html +1 -1
  405. package/dist/docs/variables/SYSTEM_PROGRAMS.html +1 -1
  406. package/dist/docs/variables/SYSTEM_PROGRAM_ID.html +3 -0
  407. package/dist/docs/variables/TOKEN_2022_PROGRAM_ID.html +3 -0
  408. package/dist/docs/variables/TOKEN_ACCOUNT_SIZE.html +3 -0
  409. package/dist/docs/variables/TOKEN_PROGRAM_ID.html +3 -0
  410. package/dist/esm/accounts/helpers.d.ts +88 -0
  411. package/dist/esm/accounts/helpers.d.ts.map +1 -0
  412. package/dist/esm/accounts/helpers.js +112 -0
  413. package/dist/esm/accounts/helpers.js.map +1 -0
  414. package/dist/esm/accounts/index.d.ts +105 -0
  415. package/dist/esm/accounts/index.d.ts.map +1 -0
  416. package/dist/esm/accounts/index.js +124 -0
  417. package/dist/esm/accounts/index.js.map +1 -0
  418. package/dist/esm/accounts/lookup.d.ts +30 -0
  419. package/dist/esm/accounts/lookup.d.ts.map +1 -0
  420. package/dist/esm/accounts/lookup.js +28 -0
  421. package/dist/esm/accounts/lookup.js.map +1 -0
  422. package/dist/esm/accounts/nonce.d.ts +30 -0
  423. package/dist/esm/accounts/nonce.d.ts.map +1 -0
  424. package/dist/esm/accounts/nonce.js +28 -0
  425. package/dist/esm/accounts/nonce.js.map +1 -0
  426. package/dist/esm/accounts/stake.d.ts +33 -0
  427. package/dist/esm/accounts/stake.d.ts.map +1 -0
  428. package/dist/esm/accounts/stake.js +31 -0
  429. package/dist/esm/accounts/stake.js.map +1 -0
  430. package/dist/esm/accounts/token.d.ts +98 -0
  431. package/dist/esm/accounts/token.d.ts.map +1 -0
  432. package/dist/esm/accounts/token.js +121 -0
  433. package/dist/esm/accounts/token.js.map +1 -0
  434. package/dist/esm/ai/tools/zod/index.d.ts +1 -1
  435. package/dist/esm/ai/tools/zod/index.d.ts.map +1 -1
  436. package/dist/esm/ai/tools/zod/index.js +2 -2
  437. package/dist/esm/ai/tools/zod/index.js.map +1 -1
  438. package/dist/esm/ai/tools/zod/types.d.ts +2 -0
  439. package/dist/esm/ai/tools/zod/types.d.ts.map +1 -1
  440. package/dist/esm/ai/tools/zod/types.js.map +1 -1
  441. package/dist/esm/core/client.d.ts +25 -0
  442. package/dist/esm/core/client.d.ts.map +1 -1
  443. package/dist/esm/core/client.js +30 -0
  444. package/dist/esm/core/client.js.map +1 -1
  445. package/dist/esm/decoders/index.d.ts +36 -0
  446. package/dist/esm/decoders/index.d.ts.map +1 -0
  447. package/dist/esm/decoders/index.js +37 -0
  448. package/dist/esm/decoders/index.js.map +1 -0
  449. package/dist/esm/decoders/layout.d.ts +105 -0
  450. package/dist/esm/decoders/layout.d.ts.map +1 -0
  451. package/dist/esm/decoders/layout.js +183 -0
  452. package/dist/esm/decoders/layout.js.map +1 -0
  453. package/dist/esm/decoders/lookup-table.d.ts +60 -0
  454. package/dist/esm/decoders/lookup-table.d.ts.map +1 -0
  455. package/dist/esm/decoders/lookup-table.js +71 -0
  456. package/dist/esm/decoders/lookup-table.js.map +1 -0
  457. package/dist/esm/decoders/multisig.d.ts +49 -0
  458. package/dist/esm/decoders/multisig.d.ts.map +1 -0
  459. package/dist/esm/decoders/multisig.js +46 -0
  460. package/dist/esm/decoders/multisig.js.map +1 -0
  461. package/dist/esm/decoders/nonce.d.ts +54 -0
  462. package/dist/esm/decoders/nonce.d.ts.map +1 -0
  463. package/dist/esm/decoders/nonce.js +44 -0
  464. package/dist/esm/decoders/nonce.js.map +1 -0
  465. package/dist/esm/decoders/stake.d.ts +65 -0
  466. package/dist/esm/decoders/stake.d.ts.map +1 -0
  467. package/dist/esm/decoders/stake.js +82 -0
  468. package/dist/esm/decoders/stake.js.map +1 -0
  469. package/dist/esm/decoders/token-2022.d.ts +134 -0
  470. package/dist/esm/decoders/token-2022.d.ts.map +1 -0
  471. package/dist/esm/decoders/token-2022.js +155 -0
  472. package/dist/esm/decoders/token-2022.js.map +1 -0
  473. package/dist/esm/decoders/token.d.ts +87 -0
  474. package/dist/esm/decoders/token.d.ts.map +1 -0
  475. package/dist/esm/decoders/token.js +66 -0
  476. package/dist/esm/decoders/token.js.map +1 -0
  477. package/dist/esm/index.d.ts +2 -0
  478. package/dist/esm/index.d.ts.map +1 -1
  479. package/dist/esm/index.js +4 -0
  480. package/dist/esm/index.js.map +1 -1
  481. package/package.json +11 -1
@@ -0,0 +1,105 @@
1
+ /**
2
+ * AccountReader — zero-dependency DataView-based binary reader for Solana account data.
3
+ *
4
+ * Provides typed reading primitives (u8, u16, u32, u64, i64, f64, pubkey, bool)
5
+ * with automatic offset tracking and little-endian byte order (Solana standard).
6
+ *
7
+ * @module decoders/layout
8
+ * @since 1.1.0
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { AccountReader } from '@oobe-protocol-labs/synapse-client-sdk/decoders';
13
+ *
14
+ * const reader = new AccountReader(rawBytes);
15
+ * const mint = reader.pubkey();
16
+ * const owner = reader.pubkey();
17
+ * const amount = reader.u64();
18
+ * ```
19
+ */
20
+ import { Pubkey } from '../core/types';
21
+ /**
22
+ * Encode a Uint8Array to a base58 string.
23
+ *
24
+ * Used internally for converting 32-byte pubkey buffers to base58.
25
+ * Self-contained — no external dependencies.
26
+ *
27
+ * @param bytes - Raw byte array to encode.
28
+ * @returns Base58-encoded string.
29
+ * @since 1.1.0
30
+ */
31
+ export declare function encodeBase58(bytes: Uint8Array): string;
32
+ /**
33
+ * Zero-allocation binary reader for Solana account data.
34
+ *
35
+ * Reads little-endian integers, pubkeys, booleans, and COption fields
36
+ * from a Uint8Array with automatic offset tracking. All reads advance
37
+ * the internal cursor.
38
+ *
39
+ * @since 1.1.0
40
+ */
41
+ export declare class AccountReader {
42
+ private offset;
43
+ private readonly view;
44
+ private readonly bytes;
45
+ constructor(data: Uint8Array);
46
+ /** Current read position. @since 1.1.0 */
47
+ get position(): number;
48
+ /** Total data length. @since 1.1.0 */
49
+ get length(): number;
50
+ /** Remaining bytes after current position. @since 1.1.0 */
51
+ get remaining(): number;
52
+ /** Read an unsigned 8-bit integer. @since 1.1.0 */
53
+ u8(): number;
54
+ /** Read an unsigned 16-bit integer (little-endian). @since 1.1.0 */
55
+ u16(): number;
56
+ /** Read an unsigned 32-bit integer (little-endian). @since 1.1.0 */
57
+ u32(): number;
58
+ /** Read an unsigned 64-bit integer (little-endian). @since 1.1.0 */
59
+ u64(): bigint;
60
+ /** Read a signed 64-bit integer (little-endian). @since 1.1.0 */
61
+ i64(): bigint;
62
+ /** Read a 64-bit float (little-endian). @since 1.1.0 */
63
+ f64(): number;
64
+ /** Read a boolean (1 byte, 0 = false, non-zero = true). @since 1.1.0 */
65
+ bool(): boolean;
66
+ /**
67
+ * Read a 32-byte Solana public key and return as branded {@link Pubkey}.
68
+ * @since 1.1.0
69
+ */
70
+ pubkey(): Pubkey;
71
+ /**
72
+ * Read a 32-byte hash and return as base58 string.
73
+ * @since 1.1.0
74
+ */
75
+ hash(): string;
76
+ /**
77
+ * Read a raw byte slice of the given length.
78
+ * @since 1.1.0
79
+ */
80
+ slice(length: number): Uint8Array;
81
+ /**
82
+ * Read a Solana COption — 4-byte discriminator (0 = None, 1 = Some)
83
+ * followed by the inner value.
84
+ *
85
+ * **Important:** The reader function is ALWAYS called to advance the
86
+ * offset past the fixed-size data region (C ABI: data is always present,
87
+ * only the tag indicates validity).
88
+ *
89
+ * @param reader - Function to read the inner value.
90
+ * @returns The inner value or `null` if tag is 0 (None).
91
+ * @since 1.1.0
92
+ */
93
+ coption<T>(reader: () => T): T | null;
94
+ /**
95
+ * Skip N bytes without reading.
96
+ * @since 1.1.0
97
+ */
98
+ skip(n: number): void;
99
+ /**
100
+ * Seek to an absolute offset.
101
+ * @since 1.1.0
102
+ */
103
+ seek(offset: number): void;
104
+ }
105
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/decoders/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAMvC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CA2BtD;AAID;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;gBAEvB,IAAI,EAAE,UAAU;IAK5B,0CAA0C;IAC1C,IAAI,QAAQ,IAAI,MAAM,CAAwB;IAE9C,sCAAsC;IACtC,IAAI,MAAM,IAAI,MAAM,CAAkC;IAEtD,2DAA2D;IAC3D,IAAI,SAAS,IAAI,MAAM,CAAgD;IAEvE,mDAAmD;IACnD,EAAE,IAAI,MAAM;IAMZ,oEAAoE;IACpE,GAAG,IAAI,MAAM;IAMb,oEAAoE;IACpE,GAAG,IAAI,MAAM;IAMb,oEAAoE;IACpE,GAAG,IAAI,MAAM;IAMb,iEAAiE;IACjE,GAAG,IAAI,MAAM;IAMb,wDAAwD;IACxD,GAAG,IAAI,MAAM;IAMb,wEAAwE;IACxE,IAAI,IAAI,OAAO;IAIf;;;OAGG;IACH,MAAM,IAAI,MAAM;IAMhB;;;OAGG;IACH,IAAI,IAAI,MAAM;IAMd;;;OAGG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAMjC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;IAMrC;;;OAGG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIrB;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAG3B"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * AccountReader — zero-dependency DataView-based binary reader for Solana account data.
3
+ *
4
+ * Provides typed reading primitives (u8, u16, u32, u64, i64, f64, pubkey, bool)
5
+ * with automatic offset tracking and little-endian byte order (Solana standard).
6
+ *
7
+ * @module decoders/layout
8
+ * @since 1.1.0
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { AccountReader } from '@oobe-protocol-labs/synapse-client-sdk/decoders';
13
+ *
14
+ * const reader = new AccountReader(rawBytes);
15
+ * const mint = reader.pubkey();
16
+ * const owner = reader.pubkey();
17
+ * const amount = reader.u64();
18
+ * ```
19
+ */
20
+ import { Pubkey } from '../core/types.js';
21
+ // ── Minimal base58 encoder (self-contained, no deps) ──────────
22
+ const B58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
23
+ /**
24
+ * Encode a Uint8Array to a base58 string.
25
+ *
26
+ * Used internally for converting 32-byte pubkey buffers to base58.
27
+ * Self-contained — no external dependencies.
28
+ *
29
+ * @param bytes - Raw byte array to encode.
30
+ * @returns Base58-encoded string.
31
+ * @since 1.1.0
32
+ */
33
+ export function encodeBase58(bytes) {
34
+ if (bytes.length === 0)
35
+ return '';
36
+ let zeros = 0;
37
+ while (zeros < bytes.length && bytes[zeros] === 0)
38
+ zeros++;
39
+ const size = ((bytes.length - zeros) * 138 / 100 + 1) >>> 0;
40
+ const b58 = new Uint8Array(size);
41
+ let length = 0;
42
+ for (let i = zeros; i < bytes.length; i++) {
43
+ let carry = bytes[i];
44
+ let j = 0;
45
+ for (let k = size - 1; (carry !== 0 || j < length) && k >= 0; k--, j++) {
46
+ carry += 256 * b58[k];
47
+ b58[k] = carry % 58;
48
+ carry = (carry / 58) >>> 0;
49
+ }
50
+ length = j;
51
+ }
52
+ let idx = size - length;
53
+ while (idx < size && b58[idx] === 0)
54
+ idx++;
55
+ let str = '1'.repeat(zeros);
56
+ for (; idx < size; idx++)
57
+ str += B58_ALPHABET[b58[idx]];
58
+ return str;
59
+ }
60
+ // ── AccountReader ──────────────────────────────────────────────
61
+ /**
62
+ * Zero-allocation binary reader for Solana account data.
63
+ *
64
+ * Reads little-endian integers, pubkeys, booleans, and COption fields
65
+ * from a Uint8Array with automatic offset tracking. All reads advance
66
+ * the internal cursor.
67
+ *
68
+ * @since 1.1.0
69
+ */
70
+ export class AccountReader {
71
+ offset = 0;
72
+ view;
73
+ bytes;
74
+ constructor(data) {
75
+ this.bytes = data;
76
+ this.view = new DataView(data.buffer, data.byteOffset, data.byteLength);
77
+ }
78
+ /** Current read position. @since 1.1.0 */
79
+ get position() { return this.offset; }
80
+ /** Total data length. @since 1.1.0 */
81
+ get length() { return this.bytes.byteLength; }
82
+ /** Remaining bytes after current position. @since 1.1.0 */
83
+ get remaining() { return this.bytes.byteLength - this.offset; }
84
+ /** Read an unsigned 8-bit integer. @since 1.1.0 */
85
+ u8() {
86
+ const v = this.view.getUint8(this.offset);
87
+ this.offset += 1;
88
+ return v;
89
+ }
90
+ /** Read an unsigned 16-bit integer (little-endian). @since 1.1.0 */
91
+ u16() {
92
+ const v = this.view.getUint16(this.offset, true);
93
+ this.offset += 2;
94
+ return v;
95
+ }
96
+ /** Read an unsigned 32-bit integer (little-endian). @since 1.1.0 */
97
+ u32() {
98
+ const v = this.view.getUint32(this.offset, true);
99
+ this.offset += 4;
100
+ return v;
101
+ }
102
+ /** Read an unsigned 64-bit integer (little-endian). @since 1.1.0 */
103
+ u64() {
104
+ const v = this.view.getBigUint64(this.offset, true);
105
+ this.offset += 8;
106
+ return v;
107
+ }
108
+ /** Read a signed 64-bit integer (little-endian). @since 1.1.0 */
109
+ i64() {
110
+ const v = this.view.getBigInt64(this.offset, true);
111
+ this.offset += 8;
112
+ return v;
113
+ }
114
+ /** Read a 64-bit float (little-endian). @since 1.1.0 */
115
+ f64() {
116
+ const v = this.view.getFloat64(this.offset, true);
117
+ this.offset += 8;
118
+ return v;
119
+ }
120
+ /** Read a boolean (1 byte, 0 = false, non-zero = true). @since 1.1.0 */
121
+ bool() {
122
+ return this.u8() !== 0;
123
+ }
124
+ /**
125
+ * Read a 32-byte Solana public key and return as branded {@link Pubkey}.
126
+ * @since 1.1.0
127
+ */
128
+ pubkey() {
129
+ const slice = this.bytes.slice(this.offset, this.offset + 32);
130
+ this.offset += 32;
131
+ return Pubkey(encodeBase58(slice));
132
+ }
133
+ /**
134
+ * Read a 32-byte hash and return as base58 string.
135
+ * @since 1.1.0
136
+ */
137
+ hash() {
138
+ const slice = this.bytes.slice(this.offset, this.offset + 32);
139
+ this.offset += 32;
140
+ return encodeBase58(slice);
141
+ }
142
+ /**
143
+ * Read a raw byte slice of the given length.
144
+ * @since 1.1.0
145
+ */
146
+ slice(length) {
147
+ const s = this.bytes.slice(this.offset, this.offset + length);
148
+ this.offset += length;
149
+ return s;
150
+ }
151
+ /**
152
+ * Read a Solana COption — 4-byte discriminator (0 = None, 1 = Some)
153
+ * followed by the inner value.
154
+ *
155
+ * **Important:** The reader function is ALWAYS called to advance the
156
+ * offset past the fixed-size data region (C ABI: data is always present,
157
+ * only the tag indicates validity).
158
+ *
159
+ * @param reader - Function to read the inner value.
160
+ * @returns The inner value or `null` if tag is 0 (None).
161
+ * @since 1.1.0
162
+ */
163
+ coption(reader) {
164
+ const tag = this.u32();
165
+ const value = reader(); // Always read to advance offset past fixed-size data
166
+ return tag === 0 ? null : value;
167
+ }
168
+ /**
169
+ * Skip N bytes without reading.
170
+ * @since 1.1.0
171
+ */
172
+ skip(n) {
173
+ this.offset += n;
174
+ }
175
+ /**
176
+ * Seek to an absolute offset.
177
+ * @since 1.1.0
178
+ */
179
+ seek(offset) {
180
+ this.offset = offset;
181
+ }
182
+ }
183
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/decoders/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,iEAAiE;AAEjE,MAAM,YAAY,GAAG,4DAA4D,CAAC;AAElF;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,CAAC;IAE3D,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACvE,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACtB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACpB,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,GAAG,CAAC,CAAC;IACb,CAAC;IAED,IAAI,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;IACxB,OAAO,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,CAAC;IAE3C,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE;QAAE,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kEAAkE;AAElE;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,GAAG,CAAC,CAAC;IACF,IAAI,CAAW;IACf,KAAK,CAAa;IAEnC,YAAY,IAAgB;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1E,CAAC;IAED,0CAA0C;IAC1C,IAAI,QAAQ,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9C,sCAAsC;IACtC,IAAI,MAAM,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAEtD,2DAA2D;IAC3D,IAAI,SAAS,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvE,mDAAmD;IACnD,EAAE;QACA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,oEAAoE;IACpE,GAAG;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,oEAAoE;IACpE,GAAG;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,oEAAoE;IACpE,GAAG;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iEAAiE;IACjE,GAAG;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,wDAAwD;IACxD,GAAG;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,wEAAwE;IACxE,IAAI;QACF,OAAO,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAClB,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAc;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;;;;;;;OAWG;IACH,OAAO,CAAI,MAAe;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,qDAAqD;QAC7E,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,CAAS;QACZ,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,MAAc;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Address Lookup Table decoder.
3
+ *
4
+ * Decodes v0 transaction lookup table accounts used for compressing
5
+ * transaction address lists.
6
+ *
7
+ * @module decoders/lookup-table
8
+ * @since 1.1.0
9
+ */
10
+ import type { Pubkey } from '../core/types';
11
+ /**
12
+ * Decoded Address Lookup Table account.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const lut = decodeLookupTable(rawBytes);
17
+ * console.log(`Addresses: ${lut.addresses.length}, Active: ${!lut.isDeactivated}`);
18
+ * ```
19
+ * @since 1.1.0
20
+ */
21
+ export interface DecodedLookupTable {
22
+ /** Discriminator (always 1 for lookup tables). */
23
+ discriminator: number;
24
+ /** Slot at which deactivation was requested. `MAX_U64` if still active. */
25
+ deactivationSlot: bigint;
26
+ /** Last slot during which the table was extended. */
27
+ lastExtendedSlot: bigint;
28
+ /** Start index within the last extension batch. */
29
+ lastExtendedSlotStartIndex: number;
30
+ /** Authority that can extend/close the table. `null` if frozen. */
31
+ authority: Pubkey | null;
32
+ /** List of addresses stored in the table. */
33
+ addresses: Pubkey[];
34
+ /** Whether the table has been deactivated. */
35
+ isDeactivated: boolean;
36
+ }
37
+ /** Address Lookup Table Program ID. @since 1.1.0 */
38
+ export declare const LOOKUP_TABLE_PROGRAM_ID = "AddressLookupTab1e1111111111111111111111111";
39
+ /** Header size of a lookup table account. @since 1.1.0 */
40
+ export declare const LOOKUP_TABLE_HEADER_SIZE = 56;
41
+ /**
42
+ * Decode an Address Lookup Table account from raw bytes.
43
+ *
44
+ * Layout:
45
+ * - [0..4] u32 — discriminator (always 1)
46
+ * - [4..12] u64 — deactivation slot (MAX_U64 = active)
47
+ * - [12..20] u64 — last extended slot
48
+ * - [20] u8 — last extended slot start index
49
+ * - [21] u8 — has authority (0 or 1)
50
+ * - [22..24] [u8;2] — padding
51
+ * - [24..56] [u8;32] — authority (meaningful only if has_authority=1)
52
+ * - [56..] [Pubkey] — addresses (32 bytes each)
53
+ *
54
+ * @param data - Raw account data (must be >= 56 bytes).
55
+ * @returns Decoded lookup table.
56
+ * @throws {Error} If data is too short.
57
+ * @since 1.1.0
58
+ */
59
+ export declare function decodeLookupTable(data: Uint8Array): DecodedLookupTable;
60
+ //# sourceMappingURL=lookup-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup-table.d.ts","sourceRoot":"","sources":["../../../src/decoders/lookup-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAM5C;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,0BAA0B,EAAE,MAAM,CAAC;IACnC,mEAAmE;IACnE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;CACxB;AAID,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,gDAAgD,CAAC;AAErF,0DAA0D;AAC1D,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAO3C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB,CAwCtE"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Address Lookup Table decoder.
3
+ *
4
+ * Decodes v0 transaction lookup table accounts used for compressing
5
+ * transaction address lists.
6
+ *
7
+ * @module decoders/lookup-table
8
+ * @since 1.1.0
9
+ */
10
+ import { Pubkey as mkPubkey } from '../core/types.js';
11
+ import { AccountReader, encodeBase58 } from './layout.js';
12
+ // ── Constants ──────────────────────────────────────────────────
13
+ /** Address Lookup Table Program ID. @since 1.1.0 */
14
+ export const LOOKUP_TABLE_PROGRAM_ID = 'AddressLookupTab1e1111111111111111111111111';
15
+ /** Header size of a lookup table account. @since 1.1.0 */
16
+ export const LOOKUP_TABLE_HEADER_SIZE = 56;
17
+ /** Sentinel value for "no deactivation scheduled". @since 1.1.0 */
18
+ const MAX_U64 = 0xffffffffffffffffn;
19
+ // ── Decoder ────────────────────────────────────────────────────
20
+ /**
21
+ * Decode an Address Lookup Table account from raw bytes.
22
+ *
23
+ * Layout:
24
+ * - [0..4] u32 — discriminator (always 1)
25
+ * - [4..12] u64 — deactivation slot (MAX_U64 = active)
26
+ * - [12..20] u64 — last extended slot
27
+ * - [20] u8 — last extended slot start index
28
+ * - [21] u8 — has authority (0 or 1)
29
+ * - [22..24] [u8;2] — padding
30
+ * - [24..56] [u8;32] — authority (meaningful only if has_authority=1)
31
+ * - [56..] [Pubkey] — addresses (32 bytes each)
32
+ *
33
+ * @param data - Raw account data (must be >= 56 bytes).
34
+ * @returns Decoded lookup table.
35
+ * @throws {Error} If data is too short.
36
+ * @since 1.1.0
37
+ */
38
+ export function decodeLookupTable(data) {
39
+ if (data.length < LOOKUP_TABLE_HEADER_SIZE) {
40
+ throw new Error(`Lookup table data too short: expected >= ${LOOKUP_TABLE_HEADER_SIZE} bytes, got ${data.length}`);
41
+ }
42
+ const r = new AccountReader(data);
43
+ const discriminator = r.u32(); // [0..4]
44
+ const deactivationSlot = r.u64(); // [4..12]
45
+ const lastExtendedSlot = r.u64(); // [12..20]
46
+ const lastExtendedSlotStartIndex = r.u8(); // [20]
47
+ const hasAuthority = r.u8(); // [21]
48
+ r.skip(2); // [22..24] padding
49
+ const authorityPubkey = r.pubkey(); // [24..56]
50
+ const authority = hasAuthority === 1 ? authorityPubkey : null;
51
+ const isDeactivated = deactivationSlot !== MAX_U64;
52
+ // Parse addresses (remaining data, 32 bytes each)
53
+ const addressesData = data.slice(LOOKUP_TABLE_HEADER_SIZE);
54
+ const numAddresses = Math.floor(addressesData.length / 32);
55
+ const addresses = [];
56
+ for (let i = 0; i < numAddresses; i++) {
57
+ const offset = i * 32;
58
+ const addrBytes = addressesData.slice(offset, offset + 32);
59
+ addresses.push(mkPubkey(encodeBase58(addrBytes)));
60
+ }
61
+ return {
62
+ discriminator,
63
+ deactivationSlot,
64
+ lastExtendedSlot,
65
+ lastExtendedSlotStartIndex,
66
+ authority,
67
+ addresses,
68
+ isDeactivated,
69
+ };
70
+ }
71
+ //# sourceMappingURL=lookup-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup-table.js","sourceRoot":"","sources":["../../../src/decoders/lookup-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA+BvD,kEAAkE;AAElE,oDAAoD;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,6CAA6C,CAAC;AAErF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAE3C,mEAAmE;AACnE,MAAM,OAAO,GAAG,mBAAmB,CAAC;AAEpC,kEAAkE;AAElE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,IAAI,IAAI,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,4CAA4C,wBAAwB,eAAe,IAAI,CAAC,MAAM,EAAE,CACjG,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IAElC,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAuB,SAAS;IAC9D,MAAM,gBAAgB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAoB,UAAU;IAC/D,MAAM,gBAAgB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAoB,WAAW;IAChE,MAAM,0BAA0B,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAW,OAAO;IAC5D,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAyB,OAAO;IAC5D,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAA2C,mBAAmB;IACxE,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAkB,WAAW;IAEhE,MAAM,SAAS,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,MAAM,aAAa,GAAG,gBAAgB,KAAK,OAAO,CAAC;IAEnD,kDAAkD;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;QAC3D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,0BAA0B;QAC1B,SAAS;QACT,SAAS;QACT,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * SPL Token Multisig account decoder.
3
+ *
4
+ * Decodes the SPL Token multisig account layout (355 bytes).
5
+ *
6
+ * @module decoders/multisig
7
+ * @since 1.1.0
8
+ */
9
+ import type { Pubkey } from '../core/types';
10
+ /**
11
+ * Decoded SPL Multisig account (355 bytes).
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const ms = decodeMultisig(rawBytes);
16
+ * console.log(`Threshold: ${ms.m} of ${ms.n}, Signers: ${ms.signers.length}`);
17
+ * ```
18
+ * @since 1.1.0
19
+ */
20
+ export interface DecodedMultisig {
21
+ /** Number of signers required (threshold). */
22
+ m: number;
23
+ /** Number of valid signers in the list. */
24
+ n: number;
25
+ /** Whether the multisig is initialized. */
26
+ isInitialized: boolean;
27
+ /** List of valid signer public keys (up to 11). */
28
+ signers: Pubkey[];
29
+ }
30
+ /** Maximum number of signers in a multisig. @since 1.1.0 */
31
+ export declare const MAX_MULTISIG_SIGNERS = 11;
32
+ /** SPL Multisig account size. @since 1.1.0 */
33
+ export declare const MULTISIG_SIZE = 355;
34
+ /**
35
+ * Decode an SPL Token Multisig account from raw bytes.
36
+ *
37
+ * Layout (355 bytes):
38
+ * - [0] u8 — m (threshold)
39
+ * - [1] u8 — n (total valid signers)
40
+ * - [2] u8 — is_initialized
41
+ * - [3..355] [Pubkey;11] — signer slots (32 bytes each, only first n are valid)
42
+ *
43
+ * @param data - Raw account data (must be >= 355 bytes).
44
+ * @returns Decoded multisig account.
45
+ * @throws {Error} If data is too short.
46
+ * @since 1.1.0
47
+ */
48
+ export declare function decodeMultisig(data: Uint8Array): DecodedMultisig;
49
+ //# sourceMappingURL=multisig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig.d.ts","sourceRoot":"","sources":["../../../src/decoders/multisig.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,CAAC,EAAE,MAAM,CAAC;IACV,2CAA2C;IAC3C,CAAC,EAAE,MAAM,CAAC;IACV,2CAA2C;IAC3C,aAAa,EAAE,OAAO,CAAC;IACvB,mDAAmD;IACnD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAID,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,8CAA8C;AAC9C,eAAO,MAAM,aAAa,MAAM,CAAC;AAIjC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAoBhE"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * SPL Token Multisig account decoder.
3
+ *
4
+ * Decodes the SPL Token multisig account layout (355 bytes).
5
+ *
6
+ * @module decoders/multisig
7
+ * @since 1.1.0
8
+ */
9
+ import { AccountReader } from './layout.js';
10
+ // ── Constants ──────────────────────────────────────────────────
11
+ /** Maximum number of signers in a multisig. @since 1.1.0 */
12
+ export const MAX_MULTISIG_SIGNERS = 11;
13
+ /** SPL Multisig account size. @since 1.1.0 */
14
+ export const MULTISIG_SIZE = 355;
15
+ // ── Decoder ────────────────────────────────────────────────────
16
+ /**
17
+ * Decode an SPL Token Multisig account from raw bytes.
18
+ *
19
+ * Layout (355 bytes):
20
+ * - [0] u8 — m (threshold)
21
+ * - [1] u8 — n (total valid signers)
22
+ * - [2] u8 — is_initialized
23
+ * - [3..355] [Pubkey;11] — signer slots (32 bytes each, only first n are valid)
24
+ *
25
+ * @param data - Raw account data (must be >= 355 bytes).
26
+ * @returns Decoded multisig account.
27
+ * @throws {Error} If data is too short.
28
+ * @since 1.1.0
29
+ */
30
+ export function decodeMultisig(data) {
31
+ if (data.length < MULTISIG_SIZE) {
32
+ throw new Error(`Multisig data too short: expected >= ${MULTISIG_SIZE} bytes, got ${data.length}`);
33
+ }
34
+ const r = new AccountReader(data);
35
+ const m = r.u8(); // [0]
36
+ const n = r.u8(); // [1]
37
+ const isInitialized = r.bool(); // [2]
38
+ const signers = [];
39
+ for (let i = 0; i < MAX_MULTISIG_SIGNERS; i++) {
40
+ const pk = r.pubkey();
41
+ if (i < n)
42
+ signers.push(pk);
43
+ }
44
+ return { m, n, isInitialized, signers };
45
+ }
46
+ //# sourceMappingURL=multisig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig.js","sourceRoot":"","sources":["../../../src/decoders/multisig.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAyBzC,kEAAkE;AAElE,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,kEAAkE;AAElE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,IAAgB;IAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,wCAAwC,aAAa,eAAe,IAAI,CAAC,MAAM,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IAElC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAc,MAAM;IACrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAc,MAAM;IACrC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM;IAEtC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AAC1C,CAAC"}
@@ -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,44 @@
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 { AccountReader } from './layout.js';
10
+ // ── Constants ──────────────────────────────────────────────────
11
+ /** System Program ID. @since 1.1.0 */
12
+ export const SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';
13
+ /** Nonce account data size. @since 1.1.0 */
14
+ export const NONCE_ACCOUNT_SIZE = 80;
15
+ // ── Decoder ────────────────────────────────────────────────────
16
+ /**
17
+ * Decode a Solana nonce account from raw bytes.
18
+ *
19
+ * Layout (80 bytes):
20
+ * - [0..4] u32 — version (0=Legacy, 1=Current)
21
+ * - [4..8] u32 — state (0=uninitialized, 1=initialized)
22
+ * - [8..40] [u8;32] — authority pubkey
23
+ * - [40..72] [u8;32] — durable blockhash
24
+ * - [72..80] u64 — lamports per signature
25
+ *
26
+ * @param data - Raw account data (must be >= 80 bytes).
27
+ * @returns Decoded nonce account.
28
+ * @throws {Error} If data is too short.
29
+ * @since 1.1.0
30
+ */
31
+ export function decodeNonceAccount(data) {
32
+ if (data.length < NONCE_ACCOUNT_SIZE) {
33
+ throw new Error(`Nonce account data too short: expected >= ${NONCE_ACCOUNT_SIZE} bytes, got ${data.length}`);
34
+ }
35
+ const r = new AccountReader(data);
36
+ const version = r.u32(); // [0..4]
37
+ const stateVal = r.u32(); // [4..8]
38
+ const state = stateVal === 1 ? 'initialized' : 'uninitialized';
39
+ const authority = r.pubkey(); // [8..40]
40
+ const blockhash = r.hash(); // [40..72]
41
+ const lamportsPerSignature = r.u64(); // [72..80]
42
+ return { version, state, authority, blockhash, lamportsPerSignature };
43
+ }
44
+ //# sourceMappingURL=nonce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonce.js","sourceRoot":"","sources":["../../../src/decoders/nonce.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA8BzC,kEAAkE;AAElE,sCAAsC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,kCAAkC,CAAC;AAEpE,4CAA4C;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,kEAAkE;AAElE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,IAAI,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,6CAA6C,kBAAkB,eAAe,IAAI,CAAC,MAAM,EAAE,CAC5F,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,IAAI,aAAa,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"}