@ar.io/sdk 3.24.0 → 4.0.0-solana.10

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 (547) hide show
  1. package/README.md +143 -23
  2. package/lib/esm/cli/cli.js +200 -40
  3. package/lib/esm/cli/commands/antCommands.js +40 -14
  4. package/lib/esm/cli/commands/arnsPurchaseCommands.js +46 -7
  5. package/lib/esm/cli/commands/escrowCommands.js +208 -0
  6. package/lib/esm/cli/commands/gatewayWriteCommands.js +132 -22
  7. package/lib/esm/cli/commands/pruneCommands.js +166 -0
  8. package/lib/esm/cli/commands/readCommands.js +10 -2
  9. package/lib/esm/cli/commands/transfer.js +6 -6
  10. package/lib/esm/cli/options.js +141 -2
  11. package/lib/esm/cli/utils.js +280 -39
  12. package/lib/esm/common/ant-registry.js +25 -3
  13. package/lib/esm/common/ant.js +50 -5
  14. package/lib/esm/common/contracts/ao-process.js +4 -6
  15. package/lib/esm/common/io.js +41 -0
  16. package/lib/esm/common/marketplace.js +24 -79
  17. package/lib/esm/constants.js +13 -1
  18. package/lib/esm/solana/ant-readable.js +387 -0
  19. package/lib/esm/solana/ant-registry-readable.js +118 -0
  20. package/lib/esm/solana/ant-registry-writeable.js +457 -0
  21. package/lib/esm/solana/ant-writeable.js +352 -0
  22. package/lib/esm/solana/ata.js +55 -0
  23. package/lib/esm/solana/canonical-message.js +92 -0
  24. package/lib/esm/solana/clusters.js +62 -0
  25. package/lib/esm/solana/constants.js +130 -0
  26. package/lib/esm/solana/delegation-math.js +63 -0
  27. package/lib/esm/solana/deserialize.js +1182 -0
  28. package/lib/esm/solana/escrow.js +797 -0
  29. package/lib/esm/solana/events.js +210 -0
  30. package/lib/esm/solana/funding-plan.js +682 -0
  31. package/lib/esm/solana/generated/ant/events/aclEntryAddedEvent.js +21 -0
  32. package/lib/esm/solana/generated/ant/events/aclEntryRemovedEvent.js +21 -0
  33. package/lib/esm/solana/generated/ant/events/antMetadataUpdatedEvent.js +21 -0
  34. package/lib/esm/solana/generated/ant/events/antReconciledEvent.js +21 -0
  35. package/lib/esm/solana/generated/ant/events/antTransferredEvent.js +21 -0
  36. package/lib/esm/solana/generated/ant/events/attributesClearedEvent.js +21 -0
  37. package/lib/esm/solana/generated/ant/events/attributesSyncedEvent.js +21 -0
  38. package/lib/esm/solana/generated/ant/events/controllerAddedEvent.js +21 -0
  39. package/lib/esm/solana/generated/ant/events/controllerRemovedEvent.js +21 -0
  40. package/lib/esm/solana/generated/ant/events/index.js +16 -0
  41. package/lib/esm/solana/generated/ant/events/recordMetadataPrunedEvent.js +21 -0
  42. package/lib/esm/solana/generated/ant/events/recordMetadataRemovedEvent.js +21 -0
  43. package/lib/esm/solana/generated/ant/events/recordMetadataUpdatedEvent.js +21 -0
  44. package/lib/esm/solana/generated/ant/events/recordRemovedEvent.js +21 -0
  45. package/lib/esm/solana/generated/ant/events/recordSetEvent.js +21 -0
  46. package/lib/esm/solana/generated/ant/events/recordTransferredEvent.js +21 -0
  47. package/lib/esm/solana/generated/ant-escrow/events/escrowCancelledEvent.js +21 -0
  48. package/lib/esm/solana/generated/ant-escrow/events/escrowClaimedEvent.js +21 -0
  49. package/lib/esm/solana/generated/ant-escrow/events/escrowDepositedEvent.js +21 -0
  50. package/lib/esm/solana/generated/ant-escrow/events/escrowRecipientUpdatedEvent.js +21 -0
  51. package/lib/esm/solana/generated/ant-escrow/events/index.js +5 -0
  52. package/lib/esm/solana/generated/arns/events/demandFactorUpdatedEvent.js +21 -0
  53. package/lib/esm/solana/generated/arns/events/index.js +13 -0
  54. package/lib/esm/solana/generated/arns/events/leaseExtendedEvent.js +21 -0
  55. package/lib/esm/solana/generated/arns/events/namePurchasedEvent.js +21 -0
  56. package/lib/esm/solana/generated/arns/events/nameReassignedEvent.js +21 -0
  57. package/lib/esm/solana/generated/arns/events/nameReleasedEvent.js +21 -0
  58. package/lib/esm/solana/generated/arns/events/nameReservedEvent.js +21 -0
  59. package/lib/esm/solana/generated/arns/events/nameUnreservedEvent.js +21 -0
  60. package/lib/esm/solana/generated/arns/events/nameUpgradedEvent.js +21 -0
  61. package/lib/esm/solana/generated/arns/events/namesPrunedEvent.js +21 -0
  62. package/lib/esm/solana/generated/arns/events/reservedNameClaimedEvent.js +21 -0
  63. package/lib/esm/solana/generated/arns/events/returnedNamePurchasedEvent.js +21 -0
  64. package/lib/esm/solana/generated/arns/events/undernameIncreasedEvent.js +21 -0
  65. package/lib/esm/solana/generated/core/events/configUpdatedEvent.js +21 -0
  66. package/lib/esm/solana/generated/core/events/coreMigrationFinalizedEvent.js +21 -0
  67. package/lib/esm/solana/generated/core/events/index.js +14 -0
  68. package/lib/esm/solana/generated/core/events/primaryNameRemovedEvent.js +21 -0
  69. package/lib/esm/solana/generated/core/events/primaryNameRequestExpiredEvent.js +21 -0
  70. package/lib/esm/solana/generated/core/events/primaryNameRequestedEvent.js +21 -0
  71. package/lib/esm/solana/generated/core/events/primaryNameSetEvent.js +21 -0
  72. package/lib/esm/solana/generated/core/events/supplyFinalizedEvent.js +21 -0
  73. package/lib/esm/solana/generated/core/events/transferEvent.js +21 -0
  74. package/lib/esm/solana/generated/core/events/vaultCreatedEvent.js +21 -0
  75. package/lib/esm/solana/generated/core/events/vaultExtendedEvent.js +21 -0
  76. package/lib/esm/solana/generated/core/events/vaultIncreasedEvent.js +21 -0
  77. package/lib/esm/solana/generated/core/events/vaultReleasedEvent.js +21 -0
  78. package/lib/esm/solana/generated/core/events/vaultRevokedEvent.js +21 -0
  79. package/lib/esm/solana/generated/gar/events/allowlistToggledEvent.js +21 -0
  80. package/lib/esm/solana/generated/gar/events/delegateAllowlistedEvent.js +21 -0
  81. package/lib/esm/solana/generated/gar/events/delegationClosedEvent.js +21 -0
  82. package/lib/esm/solana/generated/gar/events/delegationDecreasedEvent.js +21 -0
  83. package/lib/esm/solana/generated/gar/events/delegationEvent.js +21 -0
  84. package/lib/esm/solana/generated/gar/events/epochClosedEvent.js +21 -0
  85. package/lib/esm/solana/generated/gar/events/epochCreatedEvent.js +21 -0
  86. package/lib/esm/solana/generated/gar/events/epochDistributedEvent.js +21 -0
  87. package/lib/esm/solana/generated/gar/events/epochPrescribedEvent.js +21 -0
  88. package/lib/esm/solana/generated/gar/events/epochWeightsTalliedEvent.js +21 -0
  89. package/lib/esm/solana/generated/gar/events/epochsToggledEvent.js +21 -0
  90. package/lib/esm/solana/generated/gar/events/fundingPlanAppliedEvent.js +21 -0
  91. package/lib/esm/solana/generated/gar/events/garMigrationFinalizedEvent.js +21 -0
  92. package/lib/esm/solana/generated/gar/events/gatewayFinalizedEvent.js +21 -0
  93. package/lib/esm/solana/generated/gar/events/gatewayJoinedEvent.js +21 -0
  94. package/lib/esm/solana/generated/gar/events/gatewayLeavingEvent.js +21 -0
  95. package/lib/esm/solana/generated/gar/events/gatewayPrunedEvent.js +21 -0
  96. package/lib/esm/solana/generated/gar/events/gatewaySettingsUpdatedEvent.js +21 -0
  97. package/lib/esm/solana/generated/gar/events/index.js +31 -0
  98. package/lib/esm/solana/generated/gar/events/instantWithdrawalEvent.js +21 -0
  99. package/lib/esm/solana/generated/gar/events/observationSubmittedEvent.js +21 -0
  100. package/lib/esm/solana/generated/gar/events/observerAddressUpdatedEvent.js +21 -0
  101. package/lib/esm/solana/generated/gar/events/operatorStakeIncreasedEvent.js +21 -0
  102. package/lib/esm/solana/generated/gar/events/redelegationEvent.js +21 -0
  103. package/lib/esm/solana/generated/gar/events/residueVaultCreatedEvent.js +21 -0
  104. package/lib/esm/solana/generated/gar/events/rewardsCompoundedEvent.js +21 -0
  105. package/lib/esm/solana/generated/gar/events/stakePaymentEvent.js +21 -0
  106. package/lib/esm/solana/generated/gar/events/withdrawalCancelledEvent.js +21 -0
  107. package/lib/esm/solana/generated/gar/events/withdrawalClaimedEvent.js +21 -0
  108. package/lib/esm/solana/generated/gar/events/withdrawalCreatedEvent.js +21 -0
  109. package/lib/esm/solana/generated/gar/events/withdrawalPaymentEvent.js +21 -0
  110. package/lib/esm/solana/generated/mpl-core/accounts/assetV1.js +42 -0
  111. package/lib/esm/solana/generated/mpl-core/accounts/collectionV1.js +42 -0
  112. package/lib/esm/solana/generated/mpl-core/accounts/hashedAssetV1.js +45 -0
  113. package/lib/esm/solana/generated/mpl-core/accounts/index.js +12 -0
  114. package/lib/esm/solana/generated/mpl-core/accounts/pluginHeaderV1.js +45 -0
  115. package/lib/esm/solana/generated/mpl-core/accounts/pluginRegistryV1.js +42 -0
  116. package/lib/esm/solana/generated/mpl-core/errors/index.js +8 -0
  117. package/lib/esm/solana/generated/mpl-core/errors/mplCore.js +136 -0
  118. package/lib/esm/solana/generated/mpl-core/index.js +8 -0
  119. package/lib/esm/solana/generated/mpl-core/instructions/addCollectionExternalPluginAdapterV1.js +53 -0
  120. package/lib/esm/solana/generated/mpl-core/instructions/addCollectionPluginV1.js +53 -0
  121. package/lib/esm/solana/generated/mpl-core/instructions/addExternalPluginAdapterV1.js +53 -0
  122. package/lib/esm/solana/generated/mpl-core/instructions/addPluginV1.js +53 -0
  123. package/lib/esm/solana/generated/mpl-core/instructions/approveCollectionPluginAuthorityV1.js +53 -0
  124. package/lib/esm/solana/generated/mpl-core/instructions/approvePluginAuthorityV1.js +53 -0
  125. package/lib/esm/solana/generated/mpl-core/instructions/burnCollectionV1.js +49 -0
  126. package/lib/esm/solana/generated/mpl-core/instructions/burnV1.js +49 -0
  127. package/lib/esm/solana/generated/mpl-core/instructions/collect.js +42 -0
  128. package/lib/esm/solana/generated/mpl-core/instructions/compressV1.js +50 -0
  129. package/lib/esm/solana/generated/mpl-core/instructions/createCollectionV1.js +53 -0
  130. package/lib/esm/solana/generated/mpl-core/instructions/createCollectionV2.js +53 -0
  131. package/lib/esm/solana/generated/mpl-core/instructions/createV1.js +53 -0
  132. package/lib/esm/solana/generated/mpl-core/instructions/createV2.js +53 -0
  133. package/lib/esm/solana/generated/mpl-core/instructions/decompressV1.js +53 -0
  134. package/lib/esm/solana/generated/mpl-core/instructions/executeV1.js +56 -0
  135. package/lib/esm/solana/generated/mpl-core/instructions/index.js +40 -0
  136. package/lib/esm/solana/generated/mpl-core/instructions/removeCollectionExternalPluginAdapterV1.js +53 -0
  137. package/lib/esm/solana/generated/mpl-core/instructions/removeCollectionPluginV1.js +53 -0
  138. package/lib/esm/solana/generated/mpl-core/instructions/removeExternalPluginAdapterV1.js +53 -0
  139. package/lib/esm/solana/generated/mpl-core/instructions/removePluginV1.js +53 -0
  140. package/lib/esm/solana/generated/mpl-core/instructions/revokeCollectionPluginAuthorityV1.js +53 -0
  141. package/lib/esm/solana/generated/mpl-core/instructions/revokePluginAuthorityV1.js +53 -0
  142. package/lib/esm/solana/generated/mpl-core/instructions/transferV1.js +49 -0
  143. package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionExternalPluginAdapterV1.js +53 -0
  144. package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionInfoV1.js +45 -0
  145. package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionPluginV1.js +53 -0
  146. package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionV1.js +52 -0
  147. package/lib/esm/solana/generated/mpl-core/instructions/updateExternalPluginAdapterV1.js +53 -0
  148. package/lib/esm/solana/generated/mpl-core/instructions/updatePluginV1.js +53 -0
  149. package/lib/esm/solana/generated/mpl-core/instructions/updateV1.js +53 -0
  150. package/lib/esm/solana/generated/mpl-core/instructions/updateV2.js +53 -0
  151. package/lib/esm/solana/generated/mpl-core/instructions/writeCollectionExternalPluginAdapterDataV1.js +53 -0
  152. package/lib/esm/solana/generated/mpl-core/instructions/writeExternalPluginAdapterDataV1.js +53 -0
  153. package/lib/esm/solana/generated/mpl-core/program-address.js +1 -0
  154. package/lib/esm/solana/generated/mpl-core/types/addAssetsToGroupV1Args.js +17 -0
  155. package/lib/esm/solana/generated/mpl-core/types/addBlocker.js +17 -0
  156. package/lib/esm/solana/generated/mpl-core/types/addCollectionsToGroupV1Args.js +17 -0
  157. package/lib/esm/solana/generated/mpl-core/types/addGroupsToGroupV1Args.js +17 -0
  158. package/lib/esm/solana/generated/mpl-core/types/agentIdentity.js +17 -0
  159. package/lib/esm/solana/generated/mpl-core/types/agentIdentityInitInfo.js +18 -0
  160. package/lib/esm/solana/generated/mpl-core/types/agentIdentityUpdateInfo.js +18 -0
  161. package/lib/esm/solana/generated/mpl-core/types/appData.js +18 -0
  162. package/lib/esm/solana/generated/mpl-core/types/appDataInitInfo.js +18 -0
  163. package/lib/esm/solana/generated/mpl-core/types/appDataUpdateInfo.js +18 -0
  164. package/lib/esm/solana/generated/mpl-core/types/attribute.js +17 -0
  165. package/lib/esm/solana/generated/mpl-core/types/attributes.js +18 -0
  166. package/lib/esm/solana/generated/mpl-core/types/authority.js +24 -0
  167. package/lib/esm/solana/generated/mpl-core/types/autograph.js +18 -0
  168. package/lib/esm/solana/generated/mpl-core/types/autographSignature.js +17 -0
  169. package/lib/esm/solana/generated/mpl-core/types/bubblegumV2.js +17 -0
  170. package/lib/esm/solana/generated/mpl-core/types/burnDelegate.js +17 -0
  171. package/lib/esm/solana/generated/mpl-core/types/closeGroupV1Args.js +17 -0
  172. package/lib/esm/solana/generated/mpl-core/types/compressionProof.js +18 -0
  173. package/lib/esm/solana/generated/mpl-core/types/creator.js +17 -0
  174. package/lib/esm/solana/generated/mpl-core/types/dataSection.js +18 -0
  175. package/lib/esm/solana/generated/mpl-core/types/dataSectionInitInfo.js +18 -0
  176. package/lib/esm/solana/generated/mpl-core/types/dataSectionUpdateInfo.js +17 -0
  177. package/lib/esm/solana/generated/mpl-core/types/dataState.js +23 -0
  178. package/lib/esm/solana/generated/mpl-core/types/edition.js +17 -0
  179. package/lib/esm/solana/generated/mpl-core/types/externalCheckResult.js +17 -0
  180. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapter.js +25 -0
  181. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterInitInfo.js +25 -0
  182. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterKey.js +25 -0
  183. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterSchema.js +24 -0
  184. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterType.js +28 -0
  185. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterUpdateInfo.js +25 -0
  186. package/lib/esm/solana/generated/mpl-core/types/externalRegistryRecord.js +18 -0
  187. package/lib/esm/solana/generated/mpl-core/types/externalValidationResult.js +24 -0
  188. package/lib/esm/solana/generated/mpl-core/types/extraAccount.js +25 -0
  189. package/lib/esm/solana/generated/mpl-core/types/freezeDelegate.js +17 -0
  190. package/lib/esm/solana/generated/mpl-core/types/freezeExecute.js +17 -0
  191. package/lib/esm/solana/generated/mpl-core/types/groups.js +17 -0
  192. package/lib/esm/solana/generated/mpl-core/types/hashablePluginSchema.js +18 -0
  193. package/lib/esm/solana/generated/mpl-core/types/hashedAssetSchema.js +17 -0
  194. package/lib/esm/solana/generated/mpl-core/types/hookableLifecycleEvent.js +26 -0
  195. package/lib/esm/solana/generated/mpl-core/types/immutableMetadata.js +17 -0
  196. package/lib/esm/solana/generated/mpl-core/types/index.js +89 -0
  197. package/lib/esm/solana/generated/mpl-core/types/key.js +28 -0
  198. package/lib/esm/solana/generated/mpl-core/types/lifecycleHook.js +18 -0
  199. package/lib/esm/solana/generated/mpl-core/types/lifecycleHookInitInfo.js +18 -0
  200. package/lib/esm/solana/generated/mpl-core/types/lifecycleHookUpdateInfo.js +18 -0
  201. package/lib/esm/solana/generated/mpl-core/types/linkedAppData.js +18 -0
  202. package/lib/esm/solana/generated/mpl-core/types/linkedAppDataInitInfo.js +18 -0
  203. package/lib/esm/solana/generated/mpl-core/types/linkedAppDataUpdateInfo.js +18 -0
  204. package/lib/esm/solana/generated/mpl-core/types/linkedDataKey.js +25 -0
  205. package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHook.js +18 -0
  206. package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHookInitInfo.js +18 -0
  207. package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHookUpdateInfo.js +18 -0
  208. package/lib/esm/solana/generated/mpl-core/types/masterEdition.js +17 -0
  209. package/lib/esm/solana/generated/mpl-core/types/oracle.js +18 -0
  210. package/lib/esm/solana/generated/mpl-core/types/oracleInitInfo.js +18 -0
  211. package/lib/esm/solana/generated/mpl-core/types/oracleUpdateInfo.js +18 -0
  212. package/lib/esm/solana/generated/mpl-core/types/oracleValidation.js +25 -0
  213. package/lib/esm/solana/generated/mpl-core/types/permanentBurnDelegate.js +17 -0
  214. package/lib/esm/solana/generated/mpl-core/types/permanentFreezeDelegate.js +17 -0
  215. package/lib/esm/solana/generated/mpl-core/types/permanentFreezeExecute.js +17 -0
  216. package/lib/esm/solana/generated/mpl-core/types/permanentTransferDelegate.js +17 -0
  217. package/lib/esm/solana/generated/mpl-core/types/plugin.js +25 -0
  218. package/lib/esm/solana/generated/mpl-core/types/pluginAuthorityPair.js +18 -0
  219. package/lib/esm/solana/generated/mpl-core/types/pluginType.js +40 -0
  220. package/lib/esm/solana/generated/mpl-core/types/registryRecord.js +18 -0
  221. package/lib/esm/solana/generated/mpl-core/types/relationshipKind.js +25 -0
  222. package/lib/esm/solana/generated/mpl-core/types/removeAssetsFromGroupV1Args.js +17 -0
  223. package/lib/esm/solana/generated/mpl-core/types/removeCollectionsFromGroupV1Args.js +17 -0
  224. package/lib/esm/solana/generated/mpl-core/types/removeGroupsFromGroupV1Args.js +17 -0
  225. package/lib/esm/solana/generated/mpl-core/types/royalties.js +18 -0
  226. package/lib/esm/solana/generated/mpl-core/types/ruleSet.js +24 -0
  227. package/lib/esm/solana/generated/mpl-core/types/seed.js +24 -0
  228. package/lib/esm/solana/generated/mpl-core/types/transferDelegate.js +17 -0
  229. package/lib/esm/solana/generated/mpl-core/types/updateAuthority.js +24 -0
  230. package/lib/esm/solana/generated/mpl-core/types/updateDelegate.js +17 -0
  231. package/lib/esm/solana/generated/mpl-core/types/updateGroupV1Args.js +17 -0
  232. package/lib/esm/solana/generated/mpl-core/types/updateType.js +24 -0
  233. package/lib/esm/solana/generated/mpl-core/types/validationResult.js +25 -0
  234. package/lib/esm/solana/generated/mpl-core/types/validationResultsOffset.js +24 -0
  235. package/lib/esm/solana/generated/mpl-core/types/verifiedCreators.js +18 -0
  236. package/lib/esm/solana/generated/mpl-core/types/verifiedCreatorsSignature.js +17 -0
  237. package/lib/esm/solana/index.js +85 -0
  238. package/lib/esm/solana/instruction.js +24 -0
  239. package/lib/esm/solana/io-readable.js +1752 -0
  240. package/lib/esm/solana/io-writeable.js +2215 -0
  241. package/lib/esm/solana/json-rpc.js +74 -0
  242. package/lib/esm/solana/metadata.js +66 -0
  243. package/lib/esm/solana/mpl-core.js +142 -0
  244. package/lib/esm/solana/pda.js +317 -0
  245. package/lib/esm/solana/send.js +117 -0
  246. package/lib/esm/solana/spawn-ant.js +210 -0
  247. package/lib/esm/solana/types.js +1 -0
  248. package/lib/esm/types/ant.js +19 -7
  249. package/lib/esm/types/io.js +8 -1
  250. package/lib/esm/utils/ant.js +1 -0
  251. package/lib/esm/utils/ao.js +1 -0
  252. package/lib/esm/version.js +1 -1
  253. package/lib/types/cli/commands/antCommands.d.ts +2 -7
  254. package/lib/types/cli/commands/arnsPurchaseCommands.d.ts +12 -0
  255. package/lib/types/cli/commands/escrowCommands.d.ts +62 -0
  256. package/lib/types/cli/commands/pruneCommands.d.ts +31 -0
  257. package/lib/types/cli/commands/readCommands.d.ts +2 -0
  258. package/lib/types/cli/options.d.ts +112 -0
  259. package/lib/types/cli/types.d.ts +6 -0
  260. package/lib/types/cli/utils.d.ts +43 -5
  261. package/lib/types/common/ant-registry.d.ts +41 -0
  262. package/lib/types/common/ant.d.ts +35 -2
  263. package/lib/types/common/contracts/ao-process.d.ts +2 -16
  264. package/lib/types/common/io.d.ts +42 -2
  265. package/lib/types/common/marketplace.d.ts +2 -14
  266. package/lib/types/constants.d.ts +11 -1
  267. package/lib/types/solana/ant-readable.d.ts +121 -0
  268. package/lib/types/solana/ant-registry-readable.d.ts +90 -0
  269. package/lib/types/solana/ant-registry-writeable.d.ts +234 -0
  270. package/lib/types/solana/ant-writeable.d.ts +162 -0
  271. package/lib/types/solana/ata.d.ts +29 -0
  272. package/lib/types/solana/canonical-message.d.ts +82 -0
  273. package/lib/types/solana/clusters.d.ts +62 -0
  274. package/lib/types/solana/constants.d.ts +103 -0
  275. package/lib/types/solana/delegation-math.d.ts +20 -0
  276. package/lib/types/solana/deserialize.d.ts +440 -0
  277. package/lib/types/solana/escrow.d.ts +403 -0
  278. package/lib/types/solana/events.d.ts +156 -0
  279. package/lib/types/solana/funding-plan.d.ts +210 -0
  280. package/lib/types/solana/generated/ant/events/aclEntryAddedEvent.d.ts +26 -0
  281. package/lib/types/solana/generated/ant/events/aclEntryRemovedEvent.d.ts +26 -0
  282. package/lib/types/solana/generated/ant/events/antMetadataUpdatedEvent.d.ts +28 -0
  283. package/lib/types/solana/generated/ant/events/antReconciledEvent.d.ts +28 -0
  284. package/lib/types/solana/generated/ant/events/antTransferredEvent.d.ts +26 -0
  285. package/lib/types/solana/generated/ant/events/attributesClearedEvent.d.ts +26 -0
  286. package/lib/types/solana/generated/ant/events/attributesSyncedEvent.d.ts +24 -0
  287. package/lib/types/solana/generated/ant/events/controllerAddedEvent.d.ts +26 -0
  288. package/lib/types/solana/generated/ant/events/controllerRemovedEvent.d.ts +26 -0
  289. package/lib/types/solana/generated/ant/events/index.d.ts +15 -0
  290. package/lib/types/solana/generated/ant/events/recordMetadataPrunedEvent.d.ts +26 -0
  291. package/lib/types/solana/generated/ant/events/recordMetadataRemovedEvent.d.ts +26 -0
  292. package/lib/types/solana/generated/ant/events/recordMetadataUpdatedEvent.d.ts +28 -0
  293. package/lib/types/solana/generated/ant/events/recordRemovedEvent.d.ts +26 -0
  294. package/lib/types/solana/generated/ant/events/recordSetEvent.d.ts +34 -0
  295. package/lib/types/solana/generated/ant/events/recordTransferredEvent.d.ts +30 -0
  296. package/lib/types/solana/generated/ant-escrow/events/escrowCancelledEvent.d.ts +28 -0
  297. package/lib/types/solana/generated/ant-escrow/events/escrowClaimedEvent.d.ts +32 -0
  298. package/lib/types/solana/generated/ant-escrow/events/escrowDepositedEvent.d.ts +36 -0
  299. package/lib/types/solana/generated/ant-escrow/events/escrowRecipientUpdatedEvent.d.ts +26 -0
  300. package/lib/types/solana/generated/ant-escrow/events/index.d.ts +4 -0
  301. package/lib/types/solana/generated/arns/events/demandFactorUpdatedEvent.d.ts +28 -0
  302. package/lib/types/solana/generated/arns/events/index.d.ts +12 -0
  303. package/lib/types/solana/generated/arns/events/leaseExtendedEvent.d.ts +32 -0
  304. package/lib/types/solana/generated/arns/events/namePurchasedEvent.d.ts +34 -0
  305. package/lib/types/solana/generated/arns/events/nameReassignedEvent.d.ts +28 -0
  306. package/lib/types/solana/generated/arns/events/nameReleasedEvent.d.ts +24 -0
  307. package/lib/types/solana/generated/arns/events/nameReservedEvent.d.ts +28 -0
  308. package/lib/types/solana/generated/arns/events/nameUnreservedEvent.d.ts +24 -0
  309. package/lib/types/solana/generated/arns/events/nameUpgradedEvent.d.ts +28 -0
  310. package/lib/types/solana/generated/arns/events/namesPrunedEvent.d.ts +26 -0
  311. package/lib/types/solana/generated/arns/events/reservedNameClaimedEvent.d.ts +24 -0
  312. package/lib/types/solana/generated/arns/events/returnedNamePurchasedEvent.d.ts +32 -0
  313. package/lib/types/solana/generated/arns/events/undernameIncreasedEvent.d.ts +32 -0
  314. package/lib/types/solana/generated/core/events/configUpdatedEvent.d.ts +26 -0
  315. package/lib/types/solana/generated/core/events/coreMigrationFinalizedEvent.d.ts +26 -0
  316. package/lib/types/solana/generated/core/events/index.d.ts +13 -0
  317. package/lib/types/solana/generated/core/events/primaryNameRemovedEvent.d.ts +26 -0
  318. package/lib/types/solana/generated/core/events/primaryNameRequestExpiredEvent.d.ts +26 -0
  319. package/lib/types/solana/generated/core/events/primaryNameRequestedEvent.d.ts +30 -0
  320. package/lib/types/solana/generated/core/events/primaryNameSetEvent.d.ts +24 -0
  321. package/lib/types/solana/generated/core/events/supplyFinalizedEvent.d.ts +26 -0
  322. package/lib/types/solana/generated/core/events/transferEvent.d.ts +26 -0
  323. package/lib/types/solana/generated/core/events/vaultCreatedEvent.d.ts +28 -0
  324. package/lib/types/solana/generated/core/events/vaultExtendedEvent.d.ts +26 -0
  325. package/lib/types/solana/generated/core/events/vaultIncreasedEvent.d.ts +28 -0
  326. package/lib/types/solana/generated/core/events/vaultReleasedEvent.d.ts +26 -0
  327. package/lib/types/solana/generated/core/events/vaultRevokedEvent.d.ts +28 -0
  328. package/lib/types/solana/generated/gar/events/allowlistToggledEvent.d.ts +24 -0
  329. package/lib/types/solana/generated/gar/events/delegateAllowlistedEvent.d.ts +26 -0
  330. package/lib/types/solana/generated/gar/events/delegationClosedEvent.d.ts +24 -0
  331. package/lib/types/solana/generated/gar/events/delegationDecreasedEvent.d.ts +28 -0
  332. package/lib/types/solana/generated/gar/events/delegationEvent.d.ts +28 -0
  333. package/lib/types/solana/generated/gar/events/epochClosedEvent.d.ts +24 -0
  334. package/lib/types/solana/generated/gar/events/epochCreatedEvent.d.ts +26 -0
  335. package/lib/types/solana/generated/gar/events/epochDistributedEvent.d.ts +26 -0
  336. package/lib/types/solana/generated/gar/events/epochPrescribedEvent.d.ts +28 -0
  337. package/lib/types/solana/generated/gar/events/epochWeightsTalliedEvent.d.ts +26 -0
  338. package/lib/types/solana/generated/gar/events/epochsToggledEvent.d.ts +24 -0
  339. package/lib/types/solana/generated/gar/events/fundingPlanAppliedEvent.d.ts +28 -0
  340. package/lib/types/solana/generated/gar/events/garMigrationFinalizedEvent.d.ts +26 -0
  341. package/lib/types/solana/generated/gar/events/gatewayFinalizedEvent.d.ts +24 -0
  342. package/lib/types/solana/generated/gar/events/gatewayJoinedEvent.d.ts +26 -0
  343. package/lib/types/solana/generated/gar/events/gatewayLeavingEvent.d.ts +22 -0
  344. package/lib/types/solana/generated/gar/events/gatewayPrunedEvent.d.ts +26 -0
  345. package/lib/types/solana/generated/gar/events/gatewaySettingsUpdatedEvent.d.ts +24 -0
  346. package/lib/types/solana/generated/gar/events/index.d.ts +30 -0
  347. package/lib/types/solana/generated/gar/events/instantWithdrawalEvent.d.ts +30 -0
  348. package/lib/types/solana/generated/gar/events/observationSubmittedEvent.d.ts +28 -0
  349. package/lib/types/solana/generated/gar/events/observerAddressUpdatedEvent.d.ts +24 -0
  350. package/lib/types/solana/generated/gar/events/operatorStakeIncreasedEvent.d.ts +26 -0
  351. package/lib/types/solana/generated/gar/events/redelegationEvent.d.ts +30 -0
  352. package/lib/types/solana/generated/gar/events/residueVaultCreatedEvent.d.ts +30 -0
  353. package/lib/types/solana/generated/gar/events/rewardsCompoundedEvent.d.ts +26 -0
  354. package/lib/types/solana/generated/gar/events/stakePaymentEvent.d.ts +28 -0
  355. package/lib/types/solana/generated/gar/events/withdrawalCancelledEvent.d.ts +30 -0
  356. package/lib/types/solana/generated/gar/events/withdrawalClaimedEvent.d.ts +26 -0
  357. package/lib/types/solana/generated/gar/events/withdrawalCreatedEvent.d.ts +28 -0
  358. package/lib/types/solana/generated/gar/events/withdrawalPaymentEvent.d.ts +28 -0
  359. package/lib/types/solana/generated/mpl-core/accounts/assetV1.d.ts +37 -0
  360. package/lib/types/solana/generated/mpl-core/accounts/collectionV1.d.ts +37 -0
  361. package/lib/types/solana/generated/mpl-core/accounts/hashedAssetV1.d.ts +30 -0
  362. package/lib/types/solana/generated/mpl-core/accounts/index.d.ts +12 -0
  363. package/lib/types/solana/generated/mpl-core/accounts/pluginHeaderV1.d.ts +30 -0
  364. package/lib/types/solana/generated/mpl-core/accounts/pluginRegistryV1.d.ts +31 -0
  365. package/lib/types/solana/generated/mpl-core/errors/index.d.ts +8 -0
  366. package/lib/types/solana/generated/mpl-core/errors/mplCore.d.ts +133 -0
  367. package/lib/types/solana/generated/mpl-core/index.d.ts +8 -0
  368. package/lib/types/solana/generated/mpl-core/instructions/addCollectionExternalPluginAdapterV1.d.ts +56 -0
  369. package/lib/types/solana/generated/mpl-core/instructions/addCollectionPluginV1.d.ts +59 -0
  370. package/lib/types/solana/generated/mpl-core/instructions/addExternalPluginAdapterV1.d.ts +60 -0
  371. package/lib/types/solana/generated/mpl-core/instructions/addPluginV1.d.ts +63 -0
  372. package/lib/types/solana/generated/mpl-core/instructions/approveCollectionPluginAuthorityV1.d.ts +59 -0
  373. package/lib/types/solana/generated/mpl-core/instructions/approvePluginAuthorityV1.d.ts +63 -0
  374. package/lib/types/solana/generated/mpl-core/instructions/burnCollectionV1.d.ts +52 -0
  375. package/lib/types/solana/generated/mpl-core/instructions/burnV1.d.ts +60 -0
  376. package/lib/types/solana/generated/mpl-core/instructions/collect.d.ts +39 -0
  377. package/lib/types/solana/generated/mpl-core/instructions/compressV1.d.ts +55 -0
  378. package/lib/types/solana/generated/mpl-core/instructions/createCollectionV1.d.ts +58 -0
  379. package/lib/types/solana/generated/mpl-core/instructions/createCollectionV2.d.ts +61 -0
  380. package/lib/types/solana/generated/mpl-core/instructions/createV1.d.ts +77 -0
  381. package/lib/types/solana/generated/mpl-core/instructions/createV2.d.ts +80 -0
  382. package/lib/types/solana/generated/mpl-core/instructions/decompressV1.d.ts +60 -0
  383. package/lib/types/solana/generated/mpl-core/instructions/executeV1.d.ts +63 -0
  384. package/lib/types/solana/generated/mpl-core/instructions/index.d.ts +40 -0
  385. package/lib/types/solana/generated/mpl-core/instructions/removeCollectionExternalPluginAdapterV1.d.ts +56 -0
  386. package/lib/types/solana/generated/mpl-core/instructions/removeCollectionPluginV1.d.ts +56 -0
  387. package/lib/types/solana/generated/mpl-core/instructions/removeExternalPluginAdapterV1.d.ts +60 -0
  388. package/lib/types/solana/generated/mpl-core/instructions/removePluginV1.d.ts +60 -0
  389. package/lib/types/solana/generated/mpl-core/instructions/revokeCollectionPluginAuthorityV1.d.ts +56 -0
  390. package/lib/types/solana/generated/mpl-core/instructions/revokePluginAuthorityV1.d.ts +60 -0
  391. package/lib/types/solana/generated/mpl-core/instructions/transferV1.d.ts +64 -0
  392. package/lib/types/solana/generated/mpl-core/instructions/updateCollectionExternalPluginAdapterV1.d.ts +59 -0
  393. package/lib/types/solana/generated/mpl-core/instructions/updateCollectionInfoV1.d.ts +47 -0
  394. package/lib/types/solana/generated/mpl-core/instructions/updateCollectionPluginV1.d.ts +56 -0
  395. package/lib/types/solana/generated/mpl-core/instructions/updateCollectionV1.d.ts +62 -0
  396. package/lib/types/solana/generated/mpl-core/instructions/updateExternalPluginAdapterV1.d.ts +63 -0
  397. package/lib/types/solana/generated/mpl-core/instructions/updatePluginV1.d.ts +60 -0
  398. package/lib/types/solana/generated/mpl-core/instructions/updateV1.d.ts +66 -0
  399. package/lib/types/solana/generated/mpl-core/instructions/updateV2.d.ts +70 -0
  400. package/lib/types/solana/generated/mpl-core/instructions/writeCollectionExternalPluginAdapterDataV1.d.ts +63 -0
  401. package/lib/types/solana/generated/mpl-core/instructions/writeExternalPluginAdapterDataV1.d.ts +67 -0
  402. package/lib/types/solana/generated/mpl-core/program-address.d.ts +7 -0
  403. package/lib/types/solana/generated/mpl-core/types/addAssetsToGroupV1Args.d.ts +13 -0
  404. package/lib/types/solana/generated/mpl-core/types/addBlocker.d.ts +13 -0
  405. package/lib/types/solana/generated/mpl-core/types/addCollectionsToGroupV1Args.d.ts +13 -0
  406. package/lib/types/solana/generated/mpl-core/types/addGroupsToGroupV1Args.d.ts +15 -0
  407. package/lib/types/solana/generated/mpl-core/types/agentIdentity.d.ts +15 -0
  408. package/lib/types/solana/generated/mpl-core/types/agentIdentityInitInfo.d.ts +22 -0
  409. package/lib/types/solana/generated/mpl-core/types/agentIdentityUpdateInfo.d.ts +20 -0
  410. package/lib/types/solana/generated/mpl-core/types/appData.d.ts +20 -0
  411. package/lib/types/solana/generated/mpl-core/types/appDataInitInfo.d.ts +22 -0
  412. package/lib/types/solana/generated/mpl-core/types/appDataUpdateInfo.d.ts +18 -0
  413. package/lib/types/solana/generated/mpl-core/types/attribute.d.ts +16 -0
  414. package/lib/types/solana/generated/mpl-core/types/attributes.d.ts +18 -0
  415. package/lib/types/solana/generated/mpl-core/types/authority.d.ts +29 -0
  416. package/lib/types/solana/generated/mpl-core/types/autograph.d.ts +18 -0
  417. package/lib/types/solana/generated/mpl-core/types/autographSignature.d.ts +16 -0
  418. package/lib/types/solana/generated/mpl-core/types/bubblegumV2.d.ts +13 -0
  419. package/lib/types/solana/generated/mpl-core/types/burnDelegate.d.ts +13 -0
  420. package/lib/types/solana/generated/mpl-core/types/closeGroupV1Args.d.ts +13 -0
  421. package/lib/types/solana/generated/mpl-core/types/compressionProof.d.ts +28 -0
  422. package/lib/types/solana/generated/mpl-core/types/creator.d.ts +16 -0
  423. package/lib/types/solana/generated/mpl-core/types/dataSection.d.ts +20 -0
  424. package/lib/types/solana/generated/mpl-core/types/dataSectionInitInfo.d.ts +20 -0
  425. package/lib/types/solana/generated/mpl-core/types/dataSectionUpdateInfo.d.ts +13 -0
  426. package/lib/types/solana/generated/mpl-core/types/dataState.d.ts +16 -0
  427. package/lib/types/solana/generated/mpl-core/types/edition.d.ts +15 -0
  428. package/lib/types/solana/generated/mpl-core/types/externalCheckResult.d.ts +15 -0
  429. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapter.d.ts +66 -0
  430. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterInitInfo.d.ts +66 -0
  431. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterKey.d.ts +64 -0
  432. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterSchema.d.ts +17 -0
  433. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterType.d.ts +21 -0
  434. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterUpdateInfo.d.ts +59 -0
  435. package/lib/types/solana/generated/mpl-core/types/externalRegistryRecord.d.ts +28 -0
  436. package/lib/types/solana/generated/mpl-core/types/externalValidationResult.d.ts +17 -0
  437. package/lib/types/solana/generated/mpl-core/types/extraAccount.d.ts +86 -0
  438. package/lib/types/solana/generated/mpl-core/types/freezeDelegate.d.ts +15 -0
  439. package/lib/types/solana/generated/mpl-core/types/freezeExecute.d.ts +15 -0
  440. package/lib/types/solana/generated/mpl-core/types/groups.d.ts +15 -0
  441. package/lib/types/solana/generated/mpl-core/types/hashablePluginSchema.d.ts +22 -0
  442. package/lib/types/solana/generated/mpl-core/types/hashedAssetSchema.d.ts +16 -0
  443. package/lib/types/solana/generated/mpl-core/types/hookableLifecycleEvent.d.ts +19 -0
  444. package/lib/types/solana/generated/mpl-core/types/immutableMetadata.d.ts +13 -0
  445. package/lib/types/solana/generated/mpl-core/types/index.d.ts +89 -0
  446. package/lib/types/solana/generated/mpl-core/types/key.d.ts +21 -0
  447. package/lib/types/solana/generated/mpl-core/types/lifecycleHook.d.ts +24 -0
  448. package/lib/types/solana/generated/mpl-core/types/lifecycleHookInitInfo.d.ts +28 -0
  449. package/lib/types/solana/generated/mpl-core/types/lifecycleHookUpdateInfo.d.ts +22 -0
  450. package/lib/types/solana/generated/mpl-core/types/linkedAppData.d.ts +20 -0
  451. package/lib/types/solana/generated/mpl-core/types/linkedAppDataInitInfo.d.ts +22 -0
  452. package/lib/types/solana/generated/mpl-core/types/linkedAppDataUpdateInfo.d.ts +18 -0
  453. package/lib/types/solana/generated/mpl-core/types/linkedDataKey.d.ts +31 -0
  454. package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHook.d.ts +24 -0
  455. package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHookInitInfo.d.ts +28 -0
  456. package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHookUpdateInfo.d.ts +22 -0
  457. package/lib/types/solana/generated/mpl-core/types/masterEdition.d.ts +21 -0
  458. package/lib/types/solana/generated/mpl-core/types/oracle.d.ts +22 -0
  459. package/lib/types/solana/generated/mpl-core/types/oracleInitInfo.d.ts +26 -0
  460. package/lib/types/solana/generated/mpl-core/types/oracleUpdateInfo.d.ts +22 -0
  461. package/lib/types/solana/generated/mpl-core/types/oracleValidation.d.ts +35 -0
  462. package/lib/types/solana/generated/mpl-core/types/permanentBurnDelegate.d.ts +13 -0
  463. package/lib/types/solana/generated/mpl-core/types/permanentFreezeDelegate.d.ts +15 -0
  464. package/lib/types/solana/generated/mpl-core/types/permanentFreezeExecute.d.ts +15 -0
  465. package/lib/types/solana/generated/mpl-core/types/permanentTransferDelegate.d.ts +13 -0
  466. package/lib/types/solana/generated/mpl-core/types/plugin.d.ts +150 -0
  467. package/lib/types/solana/generated/mpl-core/types/pluginAuthorityPair.d.ts +20 -0
  468. package/lib/types/solana/generated/mpl-core/types/pluginType.d.ts +33 -0
  469. package/lib/types/solana/generated/mpl-core/types/registryRecord.d.ts +22 -0
  470. package/lib/types/solana/generated/mpl-core/types/relationshipKind.d.ts +18 -0
  471. package/lib/types/solana/generated/mpl-core/types/removeAssetsFromGroupV1Args.d.ts +15 -0
  472. package/lib/types/solana/generated/mpl-core/types/removeCollectionsFromGroupV1Args.d.ts +15 -0
  473. package/lib/types/solana/generated/mpl-core/types/removeGroupsFromGroupV1Args.d.ts +15 -0
  474. package/lib/types/solana/generated/mpl-core/types/royalties.d.ts +22 -0
  475. package/lib/types/solana/generated/mpl-core/types/ruleSet.d.ts +27 -0
  476. package/lib/types/solana/generated/mpl-core/types/seed.d.ts +36 -0
  477. package/lib/types/solana/generated/mpl-core/types/transferDelegate.d.ts +13 -0
  478. package/lib/types/solana/generated/mpl-core/types/updateAuthority.d.ts +27 -0
  479. package/lib/types/solana/generated/mpl-core/types/updateDelegate.d.ts +15 -0
  480. package/lib/types/solana/generated/mpl-core/types/updateGroupV1Args.d.ts +19 -0
  481. package/lib/types/solana/generated/mpl-core/types/updateType.d.ts +17 -0
  482. package/lib/types/solana/generated/mpl-core/types/validationResult.d.ts +18 -0
  483. package/lib/types/solana/generated/mpl-core/types/validationResultsOffset.d.ts +33 -0
  484. package/lib/types/solana/generated/mpl-core/types/verifiedCreators.d.ts +18 -0
  485. package/lib/types/solana/generated/mpl-core/types/verifiedCreatorsSignature.d.ts +16 -0
  486. package/lib/types/solana/index.d.ts +63 -0
  487. package/lib/types/solana/instruction.d.ts +24 -0
  488. package/lib/types/solana/io-readable.d.ts +360 -0
  489. package/lib/types/solana/io-writeable.d.ts +533 -0
  490. package/lib/types/solana/json-rpc.d.ts +32 -0
  491. package/lib/types/solana/metadata.d.ts +69 -0
  492. package/lib/types/solana/mpl-core.d.ts +76 -0
  493. package/lib/types/solana/pda.d.ts +95 -0
  494. package/lib/types/solana/send.d.ts +16 -0
  495. package/lib/types/solana/spawn-ant.d.ts +130 -0
  496. package/lib/types/solana/types.d.ts +67 -0
  497. package/lib/types/types/ant-registry.d.ts +39 -0
  498. package/lib/types/types/ant.d.ts +22 -4
  499. package/lib/types/types/io.d.ts +56 -1
  500. package/lib/types/version.d.ts +1 -1
  501. package/package.json +33 -16
  502. package/lib/cjs/cli/cli.js +0 -822
  503. package/lib/cjs/cli/commands/antCommands.js +0 -113
  504. package/lib/cjs/cli/commands/arnsPurchaseCommands.js +0 -212
  505. package/lib/cjs/cli/commands/gatewayWriteCommands.js +0 -210
  506. package/lib/cjs/cli/commands/readCommands.js +0 -215
  507. package/lib/cjs/cli/commands/transfer.js +0 -159
  508. package/lib/cjs/cli/options.js +0 -470
  509. package/lib/cjs/cli/types.js +0 -2
  510. package/lib/cjs/cli/utils.js +0 -639
  511. package/lib/cjs/common/ant-registry.js +0 -155
  512. package/lib/cjs/common/ant-versions.js +0 -93
  513. package/lib/cjs/common/ant.js +0 -1182
  514. package/lib/cjs/common/arweave.js +0 -27
  515. package/lib/cjs/common/contracts/ao-process.js +0 -224
  516. package/lib/cjs/common/error.js +0 -64
  517. package/lib/cjs/common/faucet.js +0 -150
  518. package/lib/cjs/common/hyperbeam/hb.js +0 -173
  519. package/lib/cjs/common/index.js +0 -42
  520. package/lib/cjs/common/io.js +0 -1423
  521. package/lib/cjs/common/logger.js +0 -83
  522. package/lib/cjs/common/loggers/winston.js +0 -68
  523. package/lib/cjs/common/marketplace.js +0 -731
  524. package/lib/cjs/common/turbo.js +0 -223
  525. package/lib/cjs/constants.js +0 -41
  526. package/lib/cjs/node/index.js +0 -39
  527. package/lib/cjs/package.json +0 -1
  528. package/lib/cjs/types/ant-registry.js +0 -2
  529. package/lib/cjs/types/ant.js +0 -168
  530. package/lib/cjs/types/common.js +0 -2
  531. package/lib/cjs/types/faucet.js +0 -2
  532. package/lib/cjs/types/index.js +0 -37
  533. package/lib/cjs/types/io.js +0 -51
  534. package/lib/cjs/types/token.js +0 -116
  535. package/lib/cjs/utils/ant.js +0 -108
  536. package/lib/cjs/utils/ao.js +0 -432
  537. package/lib/cjs/utils/arweave.js +0 -285
  538. package/lib/cjs/utils/base64.js +0 -62
  539. package/lib/cjs/utils/hash.js +0 -56
  540. package/lib/cjs/utils/index.js +0 -38
  541. package/lib/cjs/utils/json.js +0 -26
  542. package/lib/cjs/utils/processes.js +0 -173
  543. package/lib/cjs/utils/random.js +0 -30
  544. package/lib/cjs/utils/schema.js +0 -15
  545. package/lib/cjs/utils/url.js +0 -37
  546. package/lib/cjs/version.js +0 -20
  547. package/lib/cjs/web/index.js +0 -41
@@ -0,0 +1,1182 @@
1
+ /**
2
+ * Account deserialization for AR.IO Solana programs.
3
+ *
4
+ * Reads raw account data (Borsh-encoded by Anchor) and returns SDK-compatible
5
+ * types. Each function skips the 8-byte Anchor discriminator, then reads
6
+ * fields in the exact order defined in the Rust structs.
7
+ *
8
+ * NOTE on discriminators: this module no longer exports a hand-rolled
9
+ * discriminator table. The Codama-generated account modules under
10
+ * `./generated/<program>/accounts/` already export
11
+ * `<NAME>_DISCRIMINATOR: Uint8Array` constants pulled directly from each
12
+ * IDL, so they're guaranteed to match the on-chain struct names.
13
+ * Use those at the call site (see `io-readable.ts` for the
14
+ * `getAccountsByDiscriminator` helper that bs58-encodes them for
15
+ * `getProgramAccounts` memcmp filters).
16
+ *
17
+ * Borsh encoding rules (Anchor default):
18
+ * - u8/bool: 1 byte
19
+ * - u16: 2 bytes LE
20
+ * - u32: 4 bytes LE
21
+ * - u64: 8 bytes LE
22
+ * - u128: 16 bytes LE
23
+ * - i64: 8 bytes LE (signed)
24
+ * - Pubkey: 32 bytes
25
+ * - String: 4-byte LE length prefix + UTF-8 bytes
26
+ * - Option<T>: 1-byte tag (0=None, 1=Some) + T if Some
27
+ * - Vec<T>: 4-byte LE length + T[] elements
28
+ * - Enum: 1-byte variant index
29
+ */
30
+ import { getAddressDecoder, getAddressEncoder, } from '@solana/kit';
31
+ import { getBalanceDecoder } from '@ar.io/solana-contracts/core';
32
+ import { getEpochDecoder } from '@ar.io/solana-contracts/gar';
33
+ import { RATE_SCALE } from './constants.js';
34
+ const addressDecoder = getAddressDecoder();
35
+ const addressEncoder = getAddressEncoder();
36
+ // =========================================
37
+ // Buffer reader helper
38
+ // =========================================
39
+ class BorshReader {
40
+ data;
41
+ offset;
42
+ constructor(data, startOffset = 0) {
43
+ this.data = data;
44
+ this.offset = startOffset;
45
+ }
46
+ readU8() {
47
+ const val = this.data.readUInt8(this.offset);
48
+ this.offset += 1;
49
+ return val;
50
+ }
51
+ readBool() {
52
+ return this.readU8() !== 0;
53
+ }
54
+ readU16() {
55
+ const val = this.data.readUInt16LE(this.offset);
56
+ this.offset += 2;
57
+ return val;
58
+ }
59
+ readU32() {
60
+ const val = this.data.readUInt32LE(this.offset);
61
+ this.offset += 4;
62
+ return val;
63
+ }
64
+ readU64() {
65
+ const val = this.data.readBigUInt64LE(this.offset);
66
+ this.offset += 8;
67
+ return val;
68
+ }
69
+ readU64AsNumber() {
70
+ return Number(this.readU64());
71
+ }
72
+ readI64() {
73
+ const val = this.data.readBigInt64LE(this.offset);
74
+ this.offset += 8;
75
+ return val;
76
+ }
77
+ readI64AsNumber() {
78
+ return Number(this.readI64());
79
+ }
80
+ readU128() {
81
+ const lo = this.data.readBigUInt64LE(this.offset);
82
+ const hi = this.data.readBigUInt64LE(this.offset + 8);
83
+ this.offset += 16;
84
+ return (hi << 64n) | lo;
85
+ }
86
+ readPubkey() {
87
+ const bytes = this.data.subarray(this.offset, this.offset + 32);
88
+ this.offset += 32;
89
+ return addressDecoder.decode(bytes);
90
+ }
91
+ readString() {
92
+ const len = this.readU32();
93
+ const str = this.data.toString('utf8', this.offset, this.offset + len);
94
+ this.offset += len;
95
+ return str;
96
+ }
97
+ readOptionI64() {
98
+ const tag = this.readU8();
99
+ if (tag === 0)
100
+ return undefined;
101
+ return this.readI64AsNumber();
102
+ }
103
+ readOptionU32() {
104
+ const tag = this.readU8();
105
+ if (tag === 0)
106
+ return undefined;
107
+ return this.readU32();
108
+ }
109
+ skip(bytes) {
110
+ this.offset += bytes;
111
+ }
112
+ getOffset() {
113
+ return this.offset;
114
+ }
115
+ remaining() {
116
+ return this.data.length - this.offset;
117
+ }
118
+ readOptionPubkey() {
119
+ const tag = this.readU8();
120
+ if (tag === 0)
121
+ return undefined;
122
+ return this.readPubkey();
123
+ }
124
+ readOptionString() {
125
+ const tag = this.readU8();
126
+ if (tag === 0)
127
+ return undefined;
128
+ return this.readString();
129
+ }
130
+ readVecString() {
131
+ const count = this.readU32();
132
+ const result = [];
133
+ for (let i = 0; i < count; i++) {
134
+ result.push(this.readString());
135
+ }
136
+ return result;
137
+ }
138
+ readOptionVecString() {
139
+ const tag = this.readU8();
140
+ if (tag === 0)
141
+ return undefined;
142
+ return this.readVecString();
143
+ }
144
+ readVecPubkey() {
145
+ const count = this.readU32();
146
+ const result = [];
147
+ for (let i = 0; i < count; i++) {
148
+ result.push(this.readPubkey());
149
+ }
150
+ return result;
151
+ }
152
+ readFixedU64Array(count) {
153
+ const result = [];
154
+ for (let i = 0; i < count; i++) {
155
+ result.push(this.readU64AsNumber());
156
+ }
157
+ return result;
158
+ }
159
+ readFixedBytes(count) {
160
+ const buf = this.data.subarray(this.offset, this.offset + count);
161
+ this.offset += count;
162
+ return Buffer.from(buf);
163
+ }
164
+ }
165
+ // =========================================
166
+ // Buffer writer helper
167
+ // =========================================
168
+ class BorshWriter {
169
+ buf;
170
+ offset;
171
+ constructor(size) {
172
+ this.buf = Buffer.alloc(size);
173
+ this.offset = 0;
174
+ }
175
+ writeU8(val) {
176
+ this.buf.writeUInt8(val, this.offset);
177
+ this.offset += 1;
178
+ }
179
+ writeBool(val) {
180
+ this.writeU8(val ? 1 : 0);
181
+ }
182
+ writeU16(val) {
183
+ this.buf.writeUInt16LE(val, this.offset);
184
+ this.offset += 2;
185
+ }
186
+ writeU32(val) {
187
+ this.buf.writeUInt32LE(val, this.offset);
188
+ this.offset += 4;
189
+ }
190
+ writeU64(val) {
191
+ this.buf.writeBigUInt64LE(BigInt(val), this.offset);
192
+ this.offset += 8;
193
+ }
194
+ writeI64(val) {
195
+ this.buf.writeBigInt64LE(BigInt(val), this.offset);
196
+ this.offset += 8;
197
+ }
198
+ writePubkey(key) {
199
+ const bytes = addressEncoder.encode(key);
200
+ for (let i = 0; i < 32; i++) {
201
+ this.buf[this.offset + i] = bytes[i];
202
+ }
203
+ this.offset += 32;
204
+ }
205
+ /** Write raw bytes without a length prefix (fixed-size fields). */
206
+ writeFixedBytes(data) {
207
+ for (let i = 0; i < data.length; i++) {
208
+ this.buf[this.offset + i] = data[i];
209
+ }
210
+ this.offset += data.length;
211
+ }
212
+ writeString(str) {
213
+ const encoded = Buffer.from(str, 'utf8');
214
+ this.writeU32(encoded.length);
215
+ encoded.copy(this.buf, this.offset);
216
+ this.offset += encoded.length;
217
+ }
218
+ writeOptionI64(val) {
219
+ if (val === undefined) {
220
+ this.writeU8(0);
221
+ }
222
+ else {
223
+ this.writeU8(1);
224
+ this.writeI64(val);
225
+ }
226
+ }
227
+ writeOptionU32(val) {
228
+ if (val === undefined) {
229
+ this.writeU8(0);
230
+ }
231
+ else {
232
+ this.writeU8(1);
233
+ this.writeU32(val);
234
+ }
235
+ }
236
+ writeOptionPubkey(key) {
237
+ if (key === undefined) {
238
+ this.writeU8(0);
239
+ }
240
+ else {
241
+ this.writeU8(1);
242
+ this.writePubkey(key);
243
+ }
244
+ }
245
+ writeOptionString(val) {
246
+ if (val === undefined) {
247
+ this.writeU8(0);
248
+ }
249
+ else {
250
+ this.writeU8(1);
251
+ this.writeString(val);
252
+ }
253
+ }
254
+ /** Borsh `Option<Vec<String>>`: 0/1 tag, then u32 length + each string. */
255
+ writeOptionStringVec(val) {
256
+ if (val === undefined) {
257
+ this.writeU8(0);
258
+ }
259
+ else {
260
+ this.writeU8(1);
261
+ this.writeU32(val.length);
262
+ for (const s of val)
263
+ this.writeString(s);
264
+ }
265
+ }
266
+ toBuffer() {
267
+ return this.buf.subarray(0, this.offset);
268
+ }
269
+ getOffset() {
270
+ return this.offset;
271
+ }
272
+ }
273
+ // =========================================
274
+ // Helper: scale factor -> float
275
+ // =========================================
276
+ /** Convert a RATE_SCALE-encoded u64 to a float (e.g., 1_000_000 -> 1.0) */
277
+ function scaleToFloat(value, scale = RATE_SCALE) {
278
+ return value / scale;
279
+ }
280
+ // =========================================
281
+ // Gateway deserialization
282
+ // =========================================
283
+ /**
284
+ * Internal variant of {@link deserializeGateway} that additionally surfaces
285
+ * the on-chain `cumulative_reward_per_token` u128 accumulator. Used by the
286
+ * live delegation balance pipeline ({@link computeLiveDelegationBalance} via
287
+ * `getGatewayAccumulators` in `io-readable.ts`).
288
+ *
289
+ * Not part of the public AoGateway shape — `bigint` is not JSON-serializable
290
+ * and would leak through `getGateway` / `getGateways`. Prefer
291
+ * {@link deserializeGateway} everywhere except inside live-balance plumbing.
292
+ *
293
+ * PDA: ["gateway", operator_pubkey] in ario-gar program.
294
+ */
295
+ export function deserializeGatewayWithAccumulator(data) {
296
+ const r = new BorshReader(data, 8); // skip 8-byte discriminator
297
+ const operator = r.readPubkey();
298
+ const label = r.readString();
299
+ const fqdn = r.readString();
300
+ const port = r.readU16();
301
+ r.readU8(); // protocolIdx: 0=Http, 1=Https
302
+ const properties = r.readString();
303
+ const note = r.readString();
304
+ const operatorStake = r.readU64AsNumber();
305
+ const totalDelegatedStake = r.readU64AsNumber();
306
+ const statusIdx = r.readU8(); // 0=Joined, 1=Leaving
307
+ const startTimestamp = r.readI64AsNumber();
308
+ const leaveTimestamp = r.readOptionI64();
309
+ // leave_epoch_duration: i64 — snapshot of epoch_settings.epoch_duration captured
310
+ // at leave_network/prune_gateway. Not surfaced on AoGateway; consume to stay aligned.
311
+ r.skip(8);
312
+ // GatewayStats
313
+ const passedEpochCount = r.readU32();
314
+ const failedEpochCount = r.readU32();
315
+ const totalEpochCount = r.readU32();
316
+ const prescribedEpochCount = r.readU32();
317
+ const observedEpochCount = r.readU32();
318
+ const failedConsecutiveEpochs = r.readU8();
319
+ const passedConsecutiveEpochs = r.readU8();
320
+ // GatewayWeights (7 x u64 — 7th is weights_epoch, set by tally_weights)
321
+ const stakeWeight = r.readU64AsNumber();
322
+ const tenureWeight = r.readU64AsNumber();
323
+ const gatewayPerformanceRatio = r.readU64AsNumber();
324
+ const observerPerformanceRatio = r.readU64AsNumber();
325
+ const compositeWeight = r.readU64AsNumber();
326
+ const normalizedCompositeWeight = r.readU64AsNumber();
327
+ r.skip(8); // weights_epoch — not surfaced on AoGatewayWeights
328
+ // GatewaySettings2 (auto_stake removed in cfc7a8b2 — never existed on Solana)
329
+ const allowDelegatedStaking = r.readBool();
330
+ const delegateRewardShareRatio = r.readU16();
331
+ const minDelegatedStake = r.readU64AsNumber();
332
+ const allowlistEnabled = r.readBool();
333
+ // RegistryIndex (index: u32, _reserved: u8 — was is_registered:bool)
334
+ r.readU32(); // registryIndex
335
+ r.readU8(); // _reserved (layout-preserving placeholder for the legacy is_registered byte)
336
+ // observer_address
337
+ const observerAddress = r.readPubkey();
338
+ // cumulative_reward_per_token: u128 — per-share accumulator advanced by
339
+ // distribute_epoch. Combined with each Delegation.reward_debt, this lets
340
+ // off-chain readers compute the live delegate balance without an on-chain
341
+ // settlement call. Not part of the public AoGateway type but surfaced as
342
+ // an extra field on this function's return so internal readers can use it.
343
+ const cumulativeRewardPerToken = r.readU128();
344
+ // bump
345
+ r.skip(1);
346
+ const stats = {
347
+ passedEpochCount,
348
+ failedEpochCount,
349
+ totalEpochCount,
350
+ prescribedEpochCount,
351
+ observedEpochCount,
352
+ passedConsecutiveEpochs,
353
+ failedConsecutiveEpochs,
354
+ };
355
+ const weights = {
356
+ stakeWeight: scaleToFloat(stakeWeight),
357
+ tenureWeight: scaleToFloat(tenureWeight),
358
+ gatewayPerformanceRatio: scaleToFloat(gatewayPerformanceRatio),
359
+ observerPerformanceRatio: scaleToFloat(observerPerformanceRatio),
360
+ gatewayRewardRatioWeight: scaleToFloat(gatewayPerformanceRatio), // deprecated alias
361
+ observerRewardRatioWeight: scaleToFloat(observerPerformanceRatio), // deprecated alias
362
+ compositeWeight: scaleToFloat(compositeWeight),
363
+ normalizedCompositeWeight: scaleToFloat(normalizedCompositeWeight),
364
+ };
365
+ const settings = {
366
+ allowDelegatedStaking: allowlistEnabled
367
+ ? 'allowlist'
368
+ : allowDelegatedStaking,
369
+ delegateRewardShareRatio,
370
+ allowedDelegates: [], // populated separately from allowlist PDAs
371
+ minDelegatedStake,
372
+ autoStake: false, // not an on-chain field on Solana; preserved on AoGatewaySettings for AO parity
373
+ label,
374
+ note,
375
+ properties,
376
+ fqdn,
377
+ port,
378
+ protocol: 'https', // protocolIdx: 0=Http, 1=Https — only HTTPS in practice
379
+ };
380
+ return {
381
+ operator: operator,
382
+ settings,
383
+ stats,
384
+ totalDelegatedStake,
385
+ startTimestamp,
386
+ endTimestamp: leaveTimestamp ?? 0,
387
+ observerAddress: observerAddress,
388
+ operatorStake,
389
+ status: statusIdx === 0 ? 'joined' : 'leaving',
390
+ weights,
391
+ cumulativeRewardPerToken,
392
+ };
393
+ }
394
+ /**
395
+ * Deserialize a Gateway account from raw bytes.
396
+ *
397
+ * Returns the SDK-compatible AoGateway type (plus `operator: string`).
398
+ * The on-chain `cumulative_reward_per_token` u128 is intentionally NOT
399
+ * surfaced on the returned object — `bigint` is not JSON-serializable,
400
+ * and leaking it through `getGateway` / `getGateways` would break
401
+ * downstream consumers that call `JSON.stringify` on results. Use
402
+ * {@link deserializeGatewayWithAccumulator} from within the live-balance
403
+ * pipeline when the accumulator value is actually needed.
404
+ */
405
+ export function deserializeGateway(data) {
406
+ const { cumulativeRewardPerToken: _unused, ...publicShape } = deserializeGatewayWithAccumulator(data);
407
+ return publicShape;
408
+ }
409
+ // =========================================
410
+ // ArNS Record deserialization
411
+ // =========================================
412
+ /**
413
+ * Deserialize an ArNS record account from raw bytes.
414
+ * PDA: ["arns_record", hash(name)] in ario-arns program.
415
+ *
416
+ * Field order is **load-bearing** and mirrors the on-chain
417
+ * `ArnsRecord` struct in `contracts/programs/ario-arns/src/state/mod.rs`.
418
+ * Every fixed-size field appears before the variable-length `name` so
419
+ * `getProgramAccounts` callers can `memcmp`-filter on `ant` (offset
420
+ * 72) — see `ARNS_RECORD_ANT_OFFSET` in `./constants.ts`. If you
421
+ * touch the contract layout, both files have to move in lockstep.
422
+ */
423
+ export function deserializeArnsRecord(data) {
424
+ const r = new BorshReader(data, 8); // skip discriminator
425
+ r.readPubkey(); // 32-byte name hash (used as PDA seed)
426
+ const owner = r.readPubkey();
427
+ const ant = r.readPubkey(); // ANT Metaplex Core asset address
428
+ const typeIdx = r.readU8(); // 0=Lease, 1=Permabuy
429
+ const startTimestamp = r.readI64AsNumber();
430
+ const endTimestamp = r.readOptionI64();
431
+ // u16 on-chain — the prior implementation read u32 here and silently
432
+ // consumed two bytes of `purchase_price`, producing junk for both
433
+ // fields. Caught while reworking the layout for memcmp filtering.
434
+ const undernameLimit = r.readU16();
435
+ const purchasePrice = r.readU64AsNumber();
436
+ r.skip(1); // bump
437
+ const name = r.readString();
438
+ const baseData = {
439
+ name,
440
+ owner: owner,
441
+ processId: ant, // SDK calls ANT address "processId"
442
+ startTimestamp,
443
+ undernameLimit,
444
+ purchasePrice,
445
+ };
446
+ if (typeIdx === 0 && endTimestamp !== undefined) {
447
+ return {
448
+ ...baseData,
449
+ type: 'lease',
450
+ endTimestamp,
451
+ };
452
+ }
453
+ return {
454
+ ...baseData,
455
+ type: 'permabuy',
456
+ };
457
+ }
458
+ // =========================================
459
+ // Vault deserialization
460
+ // =========================================
461
+ /**
462
+ * Deserialize a Vault account from raw bytes.
463
+ * PDA: ["vault", owner, vault_id] in ario-core program.
464
+ *
465
+ * On-chain layout (matches `state::Vault`):
466
+ * disc(8) + owner(Pubkey=32) + vault_id(u64=8) + amount(u64=8)
467
+ * + start_timestamp(i64=8) + end_timestamp(i64=8)
468
+ * + controller(Option<Pubkey>=33) + revocable(bool=1) + bump(u8=1)
469
+ */
470
+ export function deserializeVault(data) {
471
+ const r = new BorshReader(data, 8); // skip discriminator
472
+ const owner = r.readPubkey();
473
+ // The Rust struct has vault_id BEFORE amount — easy to miss because the
474
+ // SDK only surfaces `balance` (the AO interface name for `amount`). The
475
+ // earlier deserializer skipped vault_id and read vault_id-as-balance →
476
+ // `balance` was always 0 for fresh vaults at index 0.
477
+ r.skip(8); // vault_id (recoverable from the PDA seeds; not surfaced)
478
+ const balance = r.readU64AsNumber();
479
+ const startTimestamp = r.readI64AsNumber();
480
+ const endTimestamp = r.readI64AsNumber();
481
+ // controller: Option<Pubkey>
482
+ const hasController = r.readU8();
483
+ const controller = hasController ? r.readPubkey() : undefined;
484
+ // revocable: bool
485
+ r.readBool();
486
+ // bump
487
+ r.skip(1);
488
+ return {
489
+ owner: owner,
490
+ balance,
491
+ startTimestamp,
492
+ endTimestamp,
493
+ controller,
494
+ };
495
+ }
496
+ /**
497
+ * Deserialize a Delegation account from raw bytes.
498
+ * PDA: ["delegation", gateway, delegator] in ario-gar program.
499
+ */
500
+ export function deserializeDelegation(data) {
501
+ const r = new BorshReader(data, 8); // skip discriminator
502
+ const gateway = r.readPubkey();
503
+ const delegator = r.readPubkey();
504
+ const amount = r.readU64AsNumber();
505
+ const startTimestamp = r.readI64AsNumber();
506
+ // reward_debt: u128 — snapshot of gateway.cumulative_reward_per_token at last
507
+ // settlement. Needed (together with the gateway's current accumulator) to
508
+ // compute the live delegate balance via computeLiveDelegationBalance().
509
+ const rewardDebt = r.readU128();
510
+ r.skip(1); // bump
511
+ return {
512
+ gateway: gateway,
513
+ delegator: delegator,
514
+ delegatedStake: amount,
515
+ startTimestamp,
516
+ rewardDebt,
517
+ };
518
+ }
519
+ // =========================================
520
+ // Balance deserialization
521
+ // =========================================
522
+ /**
523
+ * Deserialize a Balance account from raw bytes.
524
+ * PDA: ["balance", owner] in ario-core program.
525
+ *
526
+ * Backed by the Codama-generated decoder so the encoder
527
+ * (`getBalanceEncoder` used by migration/snapshot) and decoder share a single
528
+ * source of truth derived from the `ario_core` IDL.
529
+ */
530
+ export function deserializeBalance(data) {
531
+ const decoded = getBalanceDecoder().decode(data);
532
+ return {
533
+ owner: decoded.owner,
534
+ balance: Number(decoded.amount),
535
+ };
536
+ }
537
+ // =========================================
538
+ // Epoch Settings deserialization
539
+ // =========================================
540
+ export function deserializeEpochSettings(data) {
541
+ const r = new BorshReader(data, 8); // skip discriminator
542
+ r.skip(32); // authority
543
+ const epochDuration = r.readI64AsNumber();
544
+ const maxObservers = r.readU8(); // prescribed_observer_count
545
+ const prescribedNameCount = r.readU8();
546
+ r.skip(8); // min_observer_stake (u64)
547
+ r.skip(2); // slash_rate (u16)
548
+ r.skip(1); // enabled (bool)
549
+ r.skip(8); // current_epoch_index (u64)
550
+ const epochZeroStartTimestamp = r.readI64AsNumber(); // genesis_timestamp
551
+ return {
552
+ // SDK expects milliseconds (matching AO convention), Solana stores
553
+ // seconds — convert both timestamps and durations here.
554
+ epochZeroStartTimestamp: epochZeroStartTimestamp * 1000,
555
+ durationMs: epochDuration * 1000,
556
+ prescribedNameCount,
557
+ maxObservers,
558
+ };
559
+ }
560
+ // =========================================
561
+ // ArIO Config deserialization
562
+ // =========================================
563
+ /**
564
+ * Deserialize an ArioConfig account from raw bytes.
565
+ * PDA: ["ario_config"] in ario-core program.
566
+ */
567
+ export function deserializeArioConfig(data) {
568
+ const r = new BorshReader(data, 8); // skip discriminator
569
+ r.skip(32); // authority
570
+ r.skip(32); // mint
571
+ r.skip(32); // arns_program
572
+ r.skip(32); // treasury
573
+ const totalSupply = r.readU64AsNumber();
574
+ const protocolBalance = r.readU64AsNumber();
575
+ const circulatingSupply = r.readU64AsNumber();
576
+ const lockedSupply = r.readU64AsNumber();
577
+ // remaining fields not needed: min_vault_duration, max_vault_duration,
578
+ // primary_name_request_expiry, migration_active, migration_authority, bump
579
+ return {
580
+ totalSupply,
581
+ protocolBalance,
582
+ circulatingSupply,
583
+ lockedSupply,
584
+ };
585
+ }
586
+ // =========================================
587
+ // Demand Factor deserialization
588
+ // =========================================
589
+ /**
590
+ * Deserialize a DemandFactor account from raw bytes.
591
+ * PDA: ["demand_factor"] in ario-arns program.
592
+ */
593
+ export function deserializeDemandFactor(data) {
594
+ const r = new BorshReader(data, 8); // skip discriminator
595
+ const currentDemandFactorRaw = r.readU64AsNumber();
596
+ const currentPeriod = r.readU64AsNumber();
597
+ r.skip(8); // purchases_this_period (u64)
598
+ r.skip(8); // revenue_this_period (u64)
599
+ const consecutivePeriodsWithMinDemandFactor = r.readU32();
600
+ const trailingPeriodPurchases = r.readFixedU64Array(7);
601
+ const trailingPeriodRevenues = r.readFixedU64Array(7);
602
+ const fees = r.readFixedU64Array(51);
603
+ const periodZeroStartTimestamp = r.readI64AsNumber();
604
+ // criteria: u8, bump: u8 — skip
605
+ return {
606
+ currentDemandFactor: currentDemandFactorRaw / RATE_SCALE,
607
+ currentPeriod,
608
+ periodZeroStartTimestamp,
609
+ consecutivePeriodsWithMinDemandFactor,
610
+ trailingPeriodPurchases,
611
+ trailingPeriodRevenues,
612
+ fees,
613
+ };
614
+ }
615
+ // =========================================
616
+ // Reserved Name deserialization
617
+ // =========================================
618
+ /**
619
+ * Deserialize a ReservedName account from raw bytes.
620
+ * PDA: ["reserved_name", hash(name)] in ario-arns program.
621
+ */
622
+ export function deserializeReservedName(data) {
623
+ const r = new BorshReader(data, 8); // skip discriminator
624
+ const name = r.readString();
625
+ const reservedFor = r.readOptionPubkey();
626
+ const expiresAt = r.readOptionI64();
627
+ // reserved_by: Pubkey, created_at: i64, bump: u8 — not needed
628
+ return {
629
+ name,
630
+ target: reservedFor,
631
+ endTimestamp: expiresAt,
632
+ };
633
+ }
634
+ // =========================================
635
+ // Returned Name deserialization
636
+ // =========================================
637
+ const RETURN_AUCTION_DURATION_SECONDS = 14 * 86_400; // 14 days
638
+ /**
639
+ * Deserialize a ReturnedName account from raw bytes.
640
+ * PDA: ["returned_name", hash(name)] in ario-arns program.
641
+ */
642
+ export function deserializeReturnedName(data) {
643
+ const r = new BorshReader(data, 8); // skip discriminator
644
+ const name = r.readString();
645
+ r.skip(32); // name_hash [u8; 32]
646
+ const initiator = r.readPubkey();
647
+ const returnedAt = r.readI64AsNumber();
648
+ // bump: u8 — skip
649
+ return {
650
+ name,
651
+ startTimestamp: returnedAt,
652
+ endTimestamp: returnedAt + RETURN_AUCTION_DURATION_SECONDS,
653
+ initiator: initiator,
654
+ premiumMultiplier: 1, // calculated at query time from elapsed vs auction duration
655
+ };
656
+ }
657
+ // =========================================
658
+ // Withdrawal deserialization
659
+ // =========================================
660
+ /**
661
+ * Deserialize a Withdrawal account from raw bytes.
662
+ * PDA: ["withdrawal", gateway, owner, withdrawal_id] in ario-gar program.
663
+ */
664
+ export function deserializeWithdrawal(data) {
665
+ const r = new BorshReader(data, 8); // skip discriminator
666
+ const owner = r.readPubkey();
667
+ const withdrawalId = r.readU64AsNumber();
668
+ const gateway = r.readPubkey();
669
+ const amount = r.readU64AsNumber();
670
+ const createdAt = r.readI64AsNumber();
671
+ const availableAt = r.readI64AsNumber();
672
+ const isDelegate = r.readBool();
673
+ // is_exit_vault: bool, bump: u8 — skip
674
+ return {
675
+ owner: owner,
676
+ vaultId: String(withdrawalId),
677
+ gateway: gateway,
678
+ balance: amount,
679
+ startTimestamp: createdAt,
680
+ endTimestamp: availableAt,
681
+ isDelegate,
682
+ };
683
+ }
684
+ // =========================================
685
+ // Redelegation Record deserialization
686
+ // =========================================
687
+ /**
688
+ * Deserialize a RedelegationRecord account from raw bytes.
689
+ * PDA: ["redelegation", delegator] in ario-gar program.
690
+ */
691
+ export function deserializeRedelegationRecord(data) {
692
+ const r = new BorshReader(data, 8); // skip discriminator
693
+ const delegator = r.readPubkey();
694
+ const redelegationCount = r.readU32();
695
+ const lastRedelegationAt = r.readI64AsNumber();
696
+ const feeResetAt = r.readI64AsNumber();
697
+ // bump: u8 — skip
698
+ return {
699
+ delegator: delegator,
700
+ redelegationCount,
701
+ lastRedelegationAt,
702
+ feeResetAt,
703
+ };
704
+ }
705
+ // =========================================
706
+ // Primary Name Request deserialization
707
+ // =========================================
708
+ /**
709
+ * Deserialize a PrimaryNameRequest account from raw bytes.
710
+ * PDA: ["primary_name_request", initiator] in ario-core program.
711
+ */
712
+ export function deserializePrimaryNameRequest(data) {
713
+ const r = new BorshReader(data, 8); // skip discriminator
714
+ const initiator = r.readPubkey();
715
+ const name = r.readString();
716
+ const createdAt = r.readI64AsNumber();
717
+ const expiresAt = r.readI64AsNumber();
718
+ // bump: u8 — skip
719
+ return {
720
+ name,
721
+ initiator: initiator,
722
+ startTimestamp: createdAt,
723
+ endTimestamp: expiresAt,
724
+ };
725
+ }
726
+ // =========================================
727
+ // GAR Settings deserialization (full)
728
+ // =========================================
729
+ /**
730
+ * Deserialize a GarSettings account from raw bytes and return
731
+ * the full AoGatewayRegistrySettings type.
732
+ * PDA: ["gar_settings"] in ario-gar program.
733
+ *
734
+ * Fields not stored in GarSettings are filled with protocol defaults.
735
+ */
736
+ export function deserializeGarSettings(data) {
737
+ const r = new BorshReader(data, 8); // skip discriminator
738
+ r.skip(32); // authority
739
+ r.skip(32); // mint
740
+ const minOperatorStake = r.readU64AsNumber();
741
+ const minDelegateStake = r.readU64AsNumber();
742
+ const withdrawalPeriod = r.readI64AsNumber(); // seconds
743
+ const maxExpeditedWithdrawalPenalty = r.readU64AsNumber();
744
+ const minExpeditedWithdrawalPenalty = r.readU64AsNumber();
745
+ const minExpeditedWithdrawalAmount = r.readU64AsNumber();
746
+ r.readU32(); // max_delegates_per_gateway
747
+ // migration_active: bool, migration_authority: Pubkey, bump: u8 — skip
748
+ const withdrawalPeriodMs = withdrawalPeriod * 1000;
749
+ return {
750
+ delegates: {
751
+ minStake: minDelegateStake,
752
+ withdrawLengthMs: withdrawalPeriodMs,
753
+ },
754
+ observers: {
755
+ tenureWeightDurationMs: 15_552_000_000, // 180 days in ms
756
+ maxTenureWeight: 4,
757
+ },
758
+ operators: {
759
+ minStake: minOperatorStake,
760
+ withdrawLengthMs: withdrawalPeriodMs,
761
+ leaveLengthMs: withdrawalPeriodMs,
762
+ maxDelegateRewardSharePct: 95,
763
+ failedEpochCountMax: 30,
764
+ failedGatewaySlashRate: 0,
765
+ },
766
+ redelegations: {
767
+ minRedelegationPenaltyRate: 0,
768
+ maxRedelegationPenaltyRate: 600_000,
769
+ minRedelegationAmount: 10_000_000,
770
+ redelegationFeeResetIntervalMs: 7 * 86_400 * 1000,
771
+ },
772
+ expeditedWithdrawals: {
773
+ minExpeditedWithdrawalPenaltyRate: minExpeditedWithdrawalPenalty,
774
+ maxExpeditedWithdrawalPenaltyRate: maxExpeditedWithdrawalPenalty,
775
+ minExpeditedWithdrawalAmount: minExpeditedWithdrawalAmount,
776
+ },
777
+ };
778
+ }
779
+ /**
780
+ * Deserialize supply counter fields from GatewaySettings account.
781
+ * These 3 fields were added after arns_program_id, before bump.
782
+ */
783
+ export function deserializeGarSupplyCounters(data) {
784
+ const r = new BorshReader(data, 8); // skip discriminator
785
+ r.skip(32); // authority
786
+ r.skip(32); // mint
787
+ r.skip(8); // min_operator_stake
788
+ r.skip(8); // min_delegate_stake
789
+ r.skip(8); // withdrawal_period
790
+ r.skip(8); // max_expedited_withdrawal_penalty
791
+ r.skip(8); // min_expedited_withdrawal_penalty
792
+ r.skip(8); // min_expedited_withdrawal_amount
793
+ r.skip(4); // max_delegates_per_gateway
794
+ r.skip(1); // migration_active
795
+ r.skip(32); // migration_authority
796
+ r.skip(32); // stake_token_account
797
+ r.skip(32); // protocol_token_account
798
+ r.skip(32); // arns_program_id
799
+ const totalStaked = r.readU64AsNumber();
800
+ const totalDelegated = r.readU64AsNumber();
801
+ const totalWithdrawn = r.readU64AsNumber();
802
+ return { totalStaked, totalDelegated, totalWithdrawn };
803
+ }
804
+ // =========================================
805
+ // Epoch Settings Full deserialization
806
+ // =========================================
807
+ /**
808
+ * Deserialize the full EpochSettings account from raw bytes.
809
+ * Unlike deserializeEpochSettings (which returns 4 fields), this reads
810
+ * all fields from the on-chain struct.
811
+ * PDA: ["epoch_settings"] in ario-gar program.
812
+ */
813
+ export function deserializeEpochSettingsFull(data) {
814
+ const r = new BorshReader(data, 8); // skip discriminator
815
+ r.skip(32); // authority
816
+ const epochDuration = r.readI64AsNumber();
817
+ const prescribedObserverCount = r.readU8();
818
+ const prescribedNameCount = r.readU8();
819
+ r.skip(8); // min_observer_stake (u64)
820
+ r.skip(2); // slash_rate (u16)
821
+ const enabled = r.readU8() !== 0;
822
+ const currentEpochIndex = r.readU64AsNumber();
823
+ const genesisTimestamp = r.readI64AsNumber();
824
+ const tenureWeightDuration = r.readI64AsNumber();
825
+ const maxTenureWeight = r.readU64AsNumber();
826
+ const gatewayRewardRatio = r.readU64AsNumber();
827
+ const observerRewardRatio = r.readU64AsNumber();
828
+ r.skip(8); // missed_observation_penalty_rate (u64)
829
+ r.skip(8); // max_reward_rate (u64)
830
+ r.skip(8); // min_reward_rate (u64)
831
+ r.skip(8); // reward_decay_start_epoch (u64)
832
+ r.skip(8); // reward_decay_last_epoch (u64)
833
+ const maxConsecutiveFailures = r.readU8();
834
+ // failed_gateway_slash_rate: u64, bump: u8 — skip
835
+ return {
836
+ currentEpochIndex,
837
+ genesisTimestamp,
838
+ epochDuration,
839
+ enabled,
840
+ prescribedObserverCount,
841
+ prescribedNameCount,
842
+ tenureWeightDuration,
843
+ maxTenureWeight,
844
+ gatewayRewardRatio,
845
+ observerRewardRatio,
846
+ maxConsecutiveFailures,
847
+ };
848
+ }
849
+ // =========================================
850
+ // Epoch deserialization (zero-copy #[repr(C)])
851
+ // =========================================
852
+ /**
853
+ * Deserialize an Epoch account from raw bytes.
854
+ * PDA: ["epoch", epoch_index_le_bytes] in ario-gar program.
855
+ *
856
+ * This is a zero-copy account with #[repr(C)] layout (not Borsh).
857
+ * Fields are at fixed offsets after the 8-byte discriminator.
858
+ */
859
+ export function deserializeEpoch(data) {
860
+ // Codama-decoded path. Replaces the hand-rolled offset arithmetic
861
+ // below — that broke under cluster cfg changes (e.g. the
862
+ // `--features devnet-shrunk` build cuts the Epoch struct from
863
+ // ~9400 bytes down to ~3472 bytes, but the hand-rolled deser had
864
+ // hardcoded `base + 9388` reads that overshot the buffer). The
865
+ // codama decoder is regenerated from the on-chain IDL on every
866
+ // contract change, so layout drift is impossible by construction.
867
+ // The "old" hand-rolled body is kept below this early return so
868
+ // tests + any downstream consumers that need a specific subset
869
+ // of fields still see the shape they expect.
870
+ try {
871
+ const codamaEpoch = getEpochDecoder().decode(new Uint8Array(data));
872
+ return {
873
+ epochIndex: Number(codamaEpoch.epochIndex),
874
+ startTimestamp: Number(codamaEpoch.startTimestamp),
875
+ endTimestamp: Number(codamaEpoch.endTimestamp),
876
+ totalEligibleRewards: Number(codamaEpoch.totalEligibleRewards),
877
+ perGatewayReward: Number(codamaEpoch.perGatewayReward),
878
+ perObserverReward: Number(codamaEpoch.perObserverReward),
879
+ rewardRate: Number(codamaEpoch.rewardRate),
880
+ activeGatewayCount: codamaEpoch.activeGatewayCount,
881
+ distributionIndex: codamaEpoch.distributionIndex,
882
+ tallyIndex: codamaEpoch.tallyIndex,
883
+ observerCount: codamaEpoch.observerCount,
884
+ nameCount: codamaEpoch.nameCount,
885
+ observationsSubmitted: codamaEpoch.observationsSubmitted,
886
+ rewardsDistributed: codamaEpoch.rewardsDistributed,
887
+ weightsTallied: codamaEpoch.weightsTallied,
888
+ prescriptionsDone: codamaEpoch.prescriptionsDone,
889
+ failureCounts: Uint16Array.from(codamaEpoch.failureCounts),
890
+ prescribedObservers: codamaEpoch.prescribedObservers,
891
+ prescribedObserverGateways: codamaEpoch.prescribedObserverGateways,
892
+ prescribedNameHashes: codamaEpoch.prescribedNames.map((b) => Buffer.from(b)),
893
+ hasObserved: new Uint8Array(codamaEpoch.hasObserved),
894
+ };
895
+ }
896
+ catch (codamaErr) {
897
+ // Fall through to the legacy hand-rolled path so tests/fixtures
898
+ // that synthesize a custom Epoch buffer (e.g.
899
+ // save-observations.test.ts) keep working. Real on-chain data
900
+ // always succeeds via the codama path above.
901
+ void codamaErr;
902
+ }
903
+ // All offsets relative to start of struct (after 8-byte discriminator)
904
+ const base = 8;
905
+ const epochIndex = Number(data.readBigUInt64LE(base + 0));
906
+ const startTimestamp = Number(data.readBigInt64LE(base + 8));
907
+ const endTimestamp = Number(data.readBigInt64LE(base + 16));
908
+ const totalEligibleRewards = Number(data.readBigUInt64LE(base + 24));
909
+ const perGatewayReward = Number(data.readBigUInt64LE(base + 32));
910
+ const perObserverReward = Number(data.readBigUInt64LE(base + 40));
911
+ const rewardRate = Number(data.readBigUInt64LE(base + 48));
912
+ // total_composite_weight_lo/hi at 56, 64 — skip
913
+ // hashchain at 72 — skip (32 bytes)
914
+ const activeGatewayCount = data.readUInt32LE(base + 104);
915
+ const distributionIndex = data.readUInt32LE(base + 108);
916
+ const tallyIndex = data.readUInt32LE(base + 112);
917
+ const observerCount = data.readUInt8(base + 116);
918
+ const nameCount = data.readUInt8(base + 117);
919
+ const observationsSubmitted = data.readUInt8(base + 118);
920
+ const rewardsDistributed = data.readUInt8(base + 119);
921
+ const weightsTallied = data.readUInt8(base + 120);
922
+ const prescriptionsDone = data.readUInt8(base + 121);
923
+ // bump at 122, _padding1 at 123
924
+ // failure_counts: [u16; 3000] at offset 124
925
+ const failureCounts = new Uint16Array(3000);
926
+ for (let i = 0; i < 3000; i++) {
927
+ failureCounts[i] = data.readUInt16LE(base + 124 + i * 2);
928
+ }
929
+ // prescribed_observers: [Pubkey; 50] at offset 6124
930
+ const prescribedObservers = [];
931
+ for (let i = 0; i < 50; i++) {
932
+ const off = base + 6124 + i * 32;
933
+ prescribedObservers.push(addressDecoder.decode(data.subarray(off, off + 32)));
934
+ }
935
+ // prescribed_observer_gateways: [Pubkey; 50] at offset 7724
936
+ const prescribedObserverGateways = [];
937
+ for (let i = 0; i < 50; i++) {
938
+ const off = base + 7724 + i * 32;
939
+ prescribedObserverGateways.push(addressDecoder.decode(data.subarray(off, off + 32)));
940
+ }
941
+ // prescribed_names: [[u8; 32]; 2] at offset 9324
942
+ const prescribedNameHashes = [];
943
+ for (let i = 0; i < 2; i++) {
944
+ const off = base + 9324 + i * 32;
945
+ prescribedNameHashes.push(Buffer.from(data.subarray(off, off + 32)));
946
+ }
947
+ // has_observed: [u8; 7] at offset 9388
948
+ const hasObserved = new Uint8Array(data.subarray(base + 9388, base + 9395));
949
+ return {
950
+ epochIndex,
951
+ startTimestamp,
952
+ endTimestamp,
953
+ totalEligibleRewards,
954
+ perGatewayReward,
955
+ perObserverReward,
956
+ rewardRate,
957
+ activeGatewayCount,
958
+ distributionIndex,
959
+ tallyIndex,
960
+ observerCount,
961
+ nameCount,
962
+ observationsSubmitted,
963
+ rewardsDistributed,
964
+ weightsTallied,
965
+ prescriptionsDone,
966
+ failureCounts,
967
+ prescribedObservers,
968
+ prescribedObserverGateways,
969
+ prescribedNameHashes,
970
+ hasObserved,
971
+ };
972
+ }
973
+ // =========================================
974
+ // Observation deserialization
975
+ // =========================================
976
+ /**
977
+ * Deserialize an Observation account from raw bytes.
978
+ * PDA: ["observation", epoch_index_le_bytes, observer_pubkey] in ario-gar program.
979
+ */
980
+ export function deserializeObservation(data) {
981
+ const r = new BorshReader(data, 8); // skip discriminator
982
+ const epochIndex = r.readU64AsNumber();
983
+ const observer = r.readPubkey();
984
+ const gatewayResults = r.readFixedBytes(375);
985
+ const gatewayCount = r.readU16();
986
+ const reportTxId = r.readFixedBytes(32).toString('base64url');
987
+ const submittedAt = r.readI64AsNumber();
988
+ return {
989
+ epochIndex,
990
+ observer,
991
+ gatewayResults,
992
+ gatewayCount,
993
+ reportTxId,
994
+ submittedAt,
995
+ };
996
+ }
997
+ // =========================================
998
+ // ANT Config deserialization
999
+ // =========================================
1000
+ /**
1001
+ * Deserialize an AntConfig account from raw bytes.
1002
+ * PDA: ["ant_config", mint] in ario-ant program.
1003
+ */
1004
+ export function deserializeAntConfig(data) {
1005
+ const r = new BorshReader(data, 8); // skip discriminator
1006
+ const mint = r.readPubkey();
1007
+ const name = r.readString();
1008
+ const ticker = r.readString();
1009
+ const logo = r.readString();
1010
+ const description = r.readString();
1011
+ const keywords = r.readVecString();
1012
+ const lastKnownOwner = r.readPubkey();
1013
+ r.readU8(); // bump
1014
+ let version = 0;
1015
+ try {
1016
+ version = r.readU8();
1017
+ }
1018
+ catch {
1019
+ /* pre-version accounts default to 0 */
1020
+ }
1021
+ return {
1022
+ mint: mint,
1023
+ name,
1024
+ ticker,
1025
+ logo,
1026
+ description,
1027
+ keywords,
1028
+ owner: lastKnownOwner,
1029
+ version,
1030
+ };
1031
+ }
1032
+ // =========================================
1033
+ // ANT Controllers deserialization
1034
+ // =========================================
1035
+ /**
1036
+ * Deserialize an AntControllers account from raw bytes.
1037
+ * PDA: ["ant_controllers", mint] in ario-ant program.
1038
+ */
1039
+ export function deserializeAntControllers(data) {
1040
+ const r = new BorshReader(data, 8); // skip discriminator
1041
+ const mint = r.readPubkey();
1042
+ const controllers = r.readVecPubkey().map((pk) => pk);
1043
+ // bump: u8 — skip
1044
+ return {
1045
+ mint: mint,
1046
+ controllers,
1047
+ };
1048
+ }
1049
+ // =========================================
1050
+ // ANT Record deserialization
1051
+ // =========================================
1052
+ /**
1053
+ * Deserialize an AntRecord account from raw bytes.
1054
+ * PDA: ["ant_record", mint, hash(undername)] in ario-ant program.
1055
+ */
1056
+ export function deserializeAntRecord(data) {
1057
+ const r = new BorshReader(data, 8); // skip discriminator
1058
+ const mint = r.readPubkey();
1059
+ const undername = r.readString();
1060
+ const transactionId = r.readString(); // on-chain field: target
1061
+ const targetProtocol = r.readU8(); // 0 = Arweave, 1 = IPFS
1062
+ const ttlSeconds = r.readU32();
1063
+ const priority = r.readOptionU32();
1064
+ const ownerPk = r.readOptionPubkey();
1065
+ // last_reconciled_owner: Pubkey, bump: u8 — skip
1066
+ return {
1067
+ mint: mint,
1068
+ undername,
1069
+ transactionId,
1070
+ targetProtocol,
1071
+ ttlSeconds,
1072
+ priority,
1073
+ owner: ownerPk,
1074
+ };
1075
+ }
1076
+ /**
1077
+ * Deserialize an AntRecordMetadata account from raw bytes.
1078
+ * This is a separate PDA that holds optional per-record metadata fields.
1079
+ */
1080
+ export function deserializeAntRecordMetadata(data) {
1081
+ const r = new BorshReader(data, 8); // skip discriminator
1082
+ const mint = r.readPubkey();
1083
+ r.skip(32); // undername_hash — [u8; 32], not needed by callers
1084
+ const displayName = r.readOptionString();
1085
+ const logo = r.readOptionString();
1086
+ const description = r.readOptionString();
1087
+ const keywords = r.readOptionVecString();
1088
+ // bump: u8 — skip
1089
+ return { mint, displayName, logo, description, keywords };
1090
+ }
1091
+ /**
1092
+ * Deserialize an `AclConfig` account (paginated ACL head — ADR-012).
1093
+ * PDA: `["acl_config", user]` in ario-ant program.
1094
+ *
1095
+ * Holds counts but no entries. Read this first, then fan out to each
1096
+ * `AclPage` PDA (`["acl_page", user, page_idx_le]`) for the entries.
1097
+ */
1098
+ export function deserializeAclConfig(data) {
1099
+ const r = new BorshReader(data, 8); // skip discriminator
1100
+ const user = r.readPubkey();
1101
+ const pageCount = r.readU64();
1102
+ const totalEntries = r.readU64();
1103
+ // bump: u8 — managed by Anchor
1104
+ return {
1105
+ user: user,
1106
+ pageCount,
1107
+ totalEntries,
1108
+ };
1109
+ }
1110
+ /**
1111
+ * Deserialize an `AclPage` account (paginated ACL page — ADR-012).
1112
+ * PDA: `["acl_page", user, page_idx_le]` in ario-ant program.
1113
+ *
1114
+ * Stores up to `MAX_ACL_PAGE_ENTRIES` `(asset, role)` entries. Pages can
1115
+ * be sparse mid-life (entries are removed via `swap_remove`) — the SDK's
1116
+ * append path fills the first non-full page to keep density reasonable.
1117
+ */
1118
+ export function deserializeAclPage(data) {
1119
+ const r = new BorshReader(data, 8); // skip discriminator
1120
+ const user = r.readPubkey();
1121
+ const pageIdx = r.readU64();
1122
+ const entryCount = r.readU32();
1123
+ const entries = [];
1124
+ for (let i = 0; i < entryCount; i++) {
1125
+ const asset = r.readPubkey();
1126
+ const role = r.readU8();
1127
+ entries.push({ asset: asset, role });
1128
+ }
1129
+ // bump: u8 — managed by Anchor
1130
+ return {
1131
+ user: user,
1132
+ pageIdx,
1133
+ entries,
1134
+ };
1135
+ }
1136
+ // =========================================
1137
+ // Primary Name deserialization
1138
+ // =========================================
1139
+ /**
1140
+ * Deserialize a PrimaryName account from raw bytes.
1141
+ * PDA: ["primary_name", owner] in ario-core program.
1142
+ *
1143
+ * The on-chain `PrimaryName` (programs/ario-core/src/state/mod.rs) has
1144
+ * **no** `processId` field — only `{owner, name, set_at, bump}`. The ANT
1145
+ * mint that a primary name resolves to lives on the matching `ArnsRecord`
1146
+ * (looked up by `name`), and callers wanting an `AoPrimaryName`-shaped
1147
+ * result MUST enrich this output with that lookup. The previous
1148
+ * implementation read 32 bytes from where `set_at` (i64) + part of `bump`
1149
+ * actually sit and returned a fake `processId` pubkey, which broke every
1150
+ * `assert.equal(pn.processId, antMint)` check downstream.
1151
+ */
1152
+ export function deserializePrimaryName(data) {
1153
+ const r = new BorshReader(data, 8); // skip discriminator
1154
+ const owner = r.readPubkey();
1155
+ const name = r.readString();
1156
+ const startTimestamp = r.readI64AsNumber();
1157
+ // bump: u8 — skip
1158
+ return {
1159
+ owner,
1160
+ name,
1161
+ startTimestamp,
1162
+ };
1163
+ }
1164
+ // =========================================
1165
+ // Allowlist deserialization
1166
+ // =========================================
1167
+ /**
1168
+ * Deserialize an Allowlist entry account from raw bytes.
1169
+ * PDA: ["allowlist", gateway, delegate] in ario-gar program.
1170
+ */
1171
+ export function deserializeAllowlist(data) {
1172
+ const r = new BorshReader(data, 8); // skip discriminator
1173
+ const gateway = r.readPubkey();
1174
+ const delegate = r.readPubkey();
1175
+ // bump: u8 — skip
1176
+ return {
1177
+ gateway: gateway,
1178
+ delegate: delegate,
1179
+ };
1180
+ }
1181
+ // Re-export the reader and writer for custom (de)serialization
1182
+ export { BorshReader, BorshWriter };