@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,797 @@
1
+ /**
2
+ * Solana ANT-escrow and Token-escrow clients — `ario-ant-escrow` program.
3
+ *
4
+ * ANTEscrow holds a Metaplex Core ANT NFT in trustless custody and
5
+ * releases it after on-chain verification of an Arweave RSA-PSS-4096 or
6
+ * Ethereum ECDSA signature over a canonical claim message.
7
+ *
8
+ * TokenEscrow holds ARIO SPL tokens (liquid or vaulted) in trustless
9
+ * custody with the same multi-protocol claim flow.
10
+ *
11
+ * Design: `docs/ANT_ESCROW_DESIGN.md` (account model, canonical message
12
+ * format, threat model). Plan: `docs/ANT_ESCROW_IMPLEMENTATION_PLAN.md`.
13
+ *
14
+ * All instruction encoding is delegated to the Codama-generated builders
15
+ * in `./generated/ant-escrow/instructions/` — they own the discriminator,
16
+ * Borsh codec, and account-meta wiring derived from the on-chain IDL.
17
+ */
18
+ import { fetchMaybeEscrowAnt, fetchMaybeEscrowToken, getCancelDepositInstruction, getCancelTokenDepositInstruction, getCancelVaultDepositInstruction, getClaimAntArweaveAttestedInstruction, getClaimAntEthereumInstruction, getClaimTokensArweaveAttestedInstruction, getClaimTokensEthereumInstruction, getClaimVaultArweaveAttestedInstruction, getClaimVaultEthereumInstruction, getDepositAntInstruction, getDepositTokensInstruction, getDepositVaultInstruction, getUpdateRecipientInstruction, getUpdateTokenRecipientInstruction, getUpdateVaultRecipientInstruction, } from '@ar.io/solana-contracts/ant-escrow';
19
+ import { fetchMaybeVaultCounter, getVaultedTransferInstructionAsync, } from '@ar.io/solana-contracts/core';
20
+ import { Logger } from '../common/logger.js';
21
+ import { getAssociatedTokenAddressKit } from './ata.js';
22
+ import { ARIO_ANT_ESCROW_PROGRAM_ID, ARIO_CORE_PROGRAM_ID, ESCROW_ARWEAVE_PUBKEY_LEN, ESCROW_ASSET_TYPE_VAULT, ESCROW_ETHEREUM_PUBKEY_LEN, ESCROW_PROTOCOL_ARWEAVE, ESCROW_PROTOCOL_ETHEREUM, } from './constants.js';
23
+ import { getEscrowAntPDA, getEscrowTokenPDA, getEscrowVaultPDA, getVaultCounterPDA, getVaultPDA, } from './pda.js';
24
+ import { sendAndConfirm } from './send.js';
25
+ /** Map the Codama-generated `EscrowAnt` raw decoded type to our public
26
+ * `EscrowAntState` with protocol enum + active-prefix pubkey slice. */
27
+ function toEscrowAntState(raw) {
28
+ const recipientProtocol = raw.recipientProtocol === ESCROW_PROTOCOL_ARWEAVE ? 'arweave' : 'ethereum';
29
+ const expectedLen = recipientProtocol === 'arweave'
30
+ ? ESCROW_ARWEAVE_PUBKEY_LEN
31
+ : ESCROW_ETHEREUM_PUBKEY_LEN;
32
+ if (raw.recipientProtocol !== ESCROW_PROTOCOL_ARWEAVE &&
33
+ raw.recipientProtocol !== ESCROW_PROTOCOL_ETHEREUM) {
34
+ throw new Error(`EscrowAnt: unknown protocol byte ${raw.recipientProtocol}`);
35
+ }
36
+ return {
37
+ version: raw.version,
38
+ bump: raw.bump,
39
+ depositor: raw.depositor,
40
+ antMint: raw.antMint,
41
+ recipientProtocol,
42
+ recipientPubkey: new Uint8Array(raw.recipientPubkey.subarray(0, expectedLen)),
43
+ nonce: new Uint8Array(raw.nonce),
44
+ depositSlot: raw.depositSlot,
45
+ };
46
+ }
47
+ function protocolToByte(p) {
48
+ return p === 'arweave' ? ESCROW_PROTOCOL_ARWEAVE : ESCROW_PROTOCOL_ETHEREUM;
49
+ }
50
+ /**
51
+ * Solana-backed client for the trustless ANT-escrow program. All write
52
+ * methods require both `rpcSubscriptions` and `signer`; read methods
53
+ * only need `rpc`.
54
+ */
55
+ export class ANTEscrow {
56
+ rpc;
57
+ rpcSubscriptions;
58
+ signer;
59
+ programId;
60
+ commitment;
61
+ logger;
62
+ constructor(config) {
63
+ this.rpc = config.rpc;
64
+ this.rpcSubscriptions = config.rpcSubscriptions;
65
+ this.signer = config.signer;
66
+ this.programId = config.programId ?? ARIO_ANT_ESCROW_PROGRAM_ID;
67
+ this.commitment = config.commitment ?? 'confirmed';
68
+ this.logger = config.logger ?? Logger.default;
69
+ }
70
+ static init(config) {
71
+ return new ANTEscrow(config);
72
+ }
73
+ // -------------------------------------------------------------------
74
+ // Reads
75
+ // -------------------------------------------------------------------
76
+ /** Fetch the on-chain `EscrowAnt` for an ANT mint, or `null` if no
77
+ * active escrow exists. Uses the Codama-generated decoder. */
78
+ async get(antMint) {
79
+ const [pda] = await getEscrowAntPDA(antMint, this.programId);
80
+ const account = await fetchMaybeEscrowAnt(this.rpc, pda, {
81
+ commitment: this.commitment,
82
+ });
83
+ if (!account.exists)
84
+ return null;
85
+ return toEscrowAntState(account.data);
86
+ }
87
+ /** Address of the EscrowAnt PDA for an ANT mint (no RPC call). */
88
+ async getPda(antMint) {
89
+ const [pda] = await getEscrowAntPDA(antMint, this.programId);
90
+ return pda;
91
+ }
92
+ // -------------------------------------------------------------------
93
+ // Write — depositor-side
94
+ // -------------------------------------------------------------------
95
+ /**
96
+ * Lock an ANT into escrow. The signer (depositor) must currently own
97
+ * the asset; mpl-core's TransferV1 CPI enforces this.
98
+ *
99
+ * `recipient.publicKey` length must match `recipient.protocol`:
100
+ * - `'arweave'` → 512-byte RSA-4096 modulus (the JWK `n` field)
101
+ * - `'ethereum'` → 20-byte address
102
+ */
103
+ async deposit(args) {
104
+ const signer = this.requireSigner('deposit');
105
+ const ix = await this.depositIx(args, signer);
106
+ return this.send([ix]);
107
+ }
108
+ async depositIx(args, depositor) {
109
+ this.assertPubkeyLen(args.recipient);
110
+ const [escrow] = await getEscrowAntPDA(args.antMint, this.programId);
111
+ return getDepositAntInstruction({
112
+ escrow,
113
+ antAsset: args.antMint,
114
+ depositor,
115
+ recipientProtocol: protocolToByte(args.recipient.protocol),
116
+ recipientPubkey: args.recipient.publicKey,
117
+ }, { programAddress: this.programId });
118
+ }
119
+ /**
120
+ * Re-target the escrow at a new recipient identity. Rotates the
121
+ * on-chain nonce, invalidating any in-flight claim signatures bound
122
+ * to the prior recipient.
123
+ */
124
+ async updateRecipient(args) {
125
+ const signer = this.requireSigner('updateRecipient');
126
+ this.assertPubkeyLen(args.newRecipient);
127
+ const [escrow] = await getEscrowAntPDA(args.antMint, this.programId);
128
+ const ix = getUpdateRecipientInstruction({
129
+ escrow,
130
+ depositor: signer,
131
+ newProtocol: protocolToByte(args.newRecipient.protocol),
132
+ newPubkey: args.newRecipient.publicKey,
133
+ }, { programAddress: this.programId });
134
+ return this.send([ix]);
135
+ }
136
+ /**
137
+ * Pull an escrowed ANT back to the depositor. Closes the escrow PDA
138
+ * and refunds rent.
139
+ */
140
+ async cancel(args) {
141
+ const signer = this.requireSigner('cancel');
142
+ const [escrow] = await getEscrowAntPDA(args.antMint, this.programId);
143
+ const ix = getCancelDepositInstruction({
144
+ escrow,
145
+ antAsset: args.antMint,
146
+ depositor: signer,
147
+ }, { programAddress: this.programId });
148
+ return this.send([ix]);
149
+ }
150
+ // -------------------------------------------------------------------
151
+ // Write — claim
152
+ // -------------------------------------------------------------------
153
+ /**
154
+ * Submit an Arweave RSA-PSS-4096 signature to release the ANT.
155
+ * Anyone can submit (the fee payer = `signer`); only `claimant`
156
+ * receives the ANT, and only the original `depositor` receives rent.
157
+ */
158
+ async claimArweave(args) {
159
+ const escrow = await this.requireEscrow(args.antMint);
160
+ if (escrow.recipientProtocol !== 'arweave') {
161
+ throw new Error(`escrow recipient is ${escrow.recipientProtocol}, not arweave`);
162
+ }
163
+ const ix = await this.claimArweaveIx({
164
+ ...args,
165
+ saltLen: args.saltLen ?? 32,
166
+ depositor: escrow.depositor,
167
+ messageNonce: escrow.nonce,
168
+ });
169
+ // RSA-PSS-4096 verification via sol_big_mod_exp is CU-intensive
170
+ // (~200K+ for the full claim including Transfer CPI). Use 400K to
171
+ // provide comfortable headroom.
172
+ return this.send([ix], 400_000);
173
+ }
174
+ /**
175
+ * Build the ANT-claim-via-Arweave-attested instruction.
176
+ *
177
+ * **API note**: this method previously took user-side RSA-PSS params
178
+ * (`signature`, `saltLen`, `messageNonce`). The on-chain ix was
179
+ * renamed to `claim_ant_arweave_attested` (canonical contracts
180
+ * `ar-io-solana-contracts` PR-19+): verification is now via
181
+ * instruction-introspection of a preceding Ed25519 sigverify ix
182
+ * issued by the off-chain attestor (see
183
+ * `migration/attestor/`). Those data args are no longer fed to the
184
+ * builder. Callers MUST prepend the attestor's sigverify ix to the
185
+ * transaction or it will fail on-chain. A higher-level helper that
186
+ * fetches the attestor's signature and assembles the full tx is
187
+ * tracked as a follow-up.
188
+ *
189
+ * @deprecated Args `signature`, `saltLen`, `messageNonce` are
190
+ * ignored. Use the new attested flow.
191
+ */
192
+ async claimArweaveIx(args) {
193
+ if (args.messageNonce.length !== 32) {
194
+ throw new Error('messageNonce must be 32 bytes');
195
+ }
196
+ const signer = this.requireSigner('claimArweave');
197
+ const [escrow] = await getEscrowAntPDA(args.antMint, this.programId);
198
+ return getClaimAntArweaveAttestedInstruction({
199
+ escrow,
200
+ antAsset: args.antMint,
201
+ claimant: args.claimant,
202
+ depositor: args.depositor,
203
+ payer: signer,
204
+ messageNonce: args.messageNonce,
205
+ }, { programAddress: this.programId });
206
+ }
207
+ /** Submit an Ethereum ECDSA secp256k1 + EIP-191 signature. */
208
+ async claimEthereum(args) {
209
+ const escrow = await this.requireEscrow(args.antMint);
210
+ if (escrow.recipientProtocol !== 'ethereum') {
211
+ throw new Error(`escrow recipient is ${escrow.recipientProtocol}, not ethereum`);
212
+ }
213
+ const ix = await this.claimEthereumIx({
214
+ ...args,
215
+ depositor: escrow.depositor,
216
+ messageNonce: escrow.nonce,
217
+ });
218
+ return this.send([ix]);
219
+ }
220
+ async claimEthereumIx(args) {
221
+ if (args.signature.length !== 65) {
222
+ throw new Error('ethereum signature must be 65 bytes (r||s||v)');
223
+ }
224
+ if (args.messageNonce.length !== 32) {
225
+ throw new Error('messageNonce must be 32 bytes');
226
+ }
227
+ const signer = this.requireSigner('claimEthereum');
228
+ const [escrow] = await getEscrowAntPDA(args.antMint, this.programId);
229
+ return getClaimAntEthereumInstruction({
230
+ escrow,
231
+ antAsset: args.antMint,
232
+ claimant: args.claimant,
233
+ depositor: args.depositor,
234
+ payer: signer,
235
+ messageNonce: args.messageNonce,
236
+ signature: args.signature,
237
+ }, { programAddress: this.programId });
238
+ }
239
+ // -------------------------------------------------------------------
240
+ // Internals
241
+ // -------------------------------------------------------------------
242
+ async send(instructions, computeUnitLimit = 200_000) {
243
+ const signer = this.requireSigner('send');
244
+ if (!this.rpcSubscriptions) {
245
+ throw new Error('ANTEscrow: rpcSubscriptions required for write operations');
246
+ }
247
+ return sendAndConfirm({
248
+ rpc: this.rpc,
249
+ rpcSubscriptions: this.rpcSubscriptions,
250
+ signer,
251
+ instructions,
252
+ commitment: this.commitment,
253
+ computeUnitLimit,
254
+ });
255
+ }
256
+ requireSigner(op) {
257
+ if (!this.signer) {
258
+ throw new Error(`ANTEscrow.${op}: signer is required for writes`);
259
+ }
260
+ return this.signer;
261
+ }
262
+ async requireEscrow(antMint) {
263
+ const escrow = await this.get(antMint);
264
+ if (!escrow) {
265
+ throw new Error(`no escrow found for ANT ${antMint}`);
266
+ }
267
+ return escrow;
268
+ }
269
+ assertPubkeyLen(recipient) {
270
+ const expected = recipient.protocol === 'arweave'
271
+ ? ESCROW_ARWEAVE_PUBKEY_LEN
272
+ : ESCROW_ETHEREUM_PUBKEY_LEN;
273
+ if (recipient.publicKey.length !== expected) {
274
+ throw new Error(`recipient.publicKey: expected ${expected} bytes for protocol=${recipient.protocol}, got ${recipient.publicKey.length}`);
275
+ }
276
+ }
277
+ }
278
+ /** Map the Codama-generated `EscrowToken` raw decoded type to our public
279
+ * `EscrowTokenState` with protocol enum + active-prefix pubkey slice. */
280
+ function toEscrowTokenState(raw) {
281
+ const recipientProtocol = raw.recipientProtocol === ESCROW_PROTOCOL_ARWEAVE ? 'arweave' : 'ethereum';
282
+ if (raw.recipientProtocol !== ESCROW_PROTOCOL_ARWEAVE &&
283
+ raw.recipientProtocol !== ESCROW_PROTOCOL_ETHEREUM) {
284
+ throw new Error(`EscrowToken: unknown protocol byte ${raw.recipientProtocol}`);
285
+ }
286
+ const expectedLen = recipientProtocol === 'arweave'
287
+ ? ESCROW_ARWEAVE_PUBKEY_LEN
288
+ : ESCROW_ETHEREUM_PUBKEY_LEN;
289
+ return {
290
+ version: raw.version,
291
+ bump: raw.bump,
292
+ depositor: raw.depositor,
293
+ assetType: raw.assetType === ESCROW_ASSET_TYPE_VAULT ? 'vault' : 'token',
294
+ amount: raw.amount,
295
+ arioMint: raw.arioMint,
296
+ assetId: new Uint8Array(raw.assetId),
297
+ recipientProtocol,
298
+ recipientPubkey: new Uint8Array(raw.recipientPubkey.subarray(0, expectedLen)),
299
+ nonce: new Uint8Array(raw.nonce),
300
+ depositSlot: raw.depositSlot,
301
+ vaultEndTimestamp: raw.vaultEndTimestamp,
302
+ vaultRevocable: raw.vaultRevocable,
303
+ };
304
+ }
305
+ // =========================================
306
+ // ATA helper
307
+ // =========================================
308
+ /** Associated Token Account program address. */
309
+ const ATA_PROGRAM_ADDRESS = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL';
310
+ /**
311
+ * Build a `CreateAssociatedTokenAccountIdempotent` instruction.
312
+ * Uses instruction index 1 (idempotent variant) of the ATA program.
313
+ */
314
+ function buildCreateAtaIdempotentIx(payer, ata, owner, mint) {
315
+ const SYSTEM_PROGRAM = '11111111111111111111111111111111';
316
+ const TOKEN_PROGRAM = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA';
317
+ return {
318
+ programAddress: ATA_PROGRAM_ADDRESS,
319
+ accounts: [
320
+ { address: payer, role: 3 }, // writable signer
321
+ { address: ata, role: 1 }, // writable
322
+ { address: owner, role: 0 }, // readonly
323
+ { address: mint, role: 0 }, // readonly
324
+ { address: SYSTEM_PROGRAM, role: 0 }, // readonly
325
+ { address: TOKEN_PROGRAM, role: 0 }, // readonly
326
+ ],
327
+ data: new Uint8Array([1]), // CreateIdempotent = instruction discriminator 1
328
+ };
329
+ }
330
+ // =========================================
331
+ // TokenEscrow client
332
+ // =========================================
333
+ /**
334
+ * Solana-backed client for the trustless token/vault escrow program. All
335
+ * write methods require both `rpcSubscriptions` and `signer`; read methods
336
+ * only need `rpc`.
337
+ *
338
+ * Uses the same config shape as {@link ANTEscrow}.
339
+ */
340
+ export class TokenEscrow {
341
+ rpc;
342
+ rpcSubscriptions;
343
+ signer;
344
+ programId;
345
+ coreProgram;
346
+ commitment;
347
+ logger;
348
+ constructor(config) {
349
+ this.rpc = config.rpc;
350
+ this.rpcSubscriptions = config.rpcSubscriptions;
351
+ this.signer = config.signer;
352
+ this.programId = config.programId ?? ARIO_ANT_ESCROW_PROGRAM_ID;
353
+ this.coreProgram = config.coreProgram ?? ARIO_CORE_PROGRAM_ID;
354
+ this.commitment = config.commitment ?? 'confirmed';
355
+ this.logger = config.logger ?? Logger.default;
356
+ }
357
+ static init(config) {
358
+ return new TokenEscrow(config);
359
+ }
360
+ // -------------------------------------------------------------------
361
+ // Reads
362
+ // -------------------------------------------------------------------
363
+ /**
364
+ * Fetch the on-chain `EscrowToken` for a depositor and asset ID, or
365
+ * `null` if no active escrow exists. Uses the Codama-generated decoder.
366
+ */
367
+ async get(depositor, assetId) {
368
+ const [pda] = await getEscrowTokenPDA(depositor, assetId, this.programId);
369
+ const account = await fetchMaybeEscrowToken(this.rpc, pda, {
370
+ commitment: this.commitment,
371
+ });
372
+ if (!account.exists)
373
+ return null;
374
+ return toEscrowTokenState(account.data);
375
+ }
376
+ /**
377
+ * Fetch the on-chain `EscrowToken` for a vault escrow, or `null` if
378
+ * no active escrow exists.
379
+ */
380
+ async getVault(depositor, assetId) {
381
+ const [pda] = await getEscrowVaultPDA(depositor, assetId, this.programId);
382
+ const account = await fetchMaybeEscrowToken(this.rpc, pda, {
383
+ commitment: this.commitment,
384
+ });
385
+ if (!account.exists)
386
+ return null;
387
+ return toEscrowTokenState(account.data);
388
+ }
389
+ /** Address of the EscrowToken PDA (no RPC call). */
390
+ async getTokenPda(depositor, assetId) {
391
+ const [pda] = await getEscrowTokenPDA(depositor, assetId, this.programId);
392
+ return pda;
393
+ }
394
+ /** Address of the EscrowVault PDA (no RPC call). */
395
+ async getVaultPda(depositor, assetId) {
396
+ const [pda] = await getEscrowVaultPDA(depositor, assetId, this.programId);
397
+ return pda;
398
+ }
399
+ // -------------------------------------------------------------------
400
+ // Write — deposit
401
+ // -------------------------------------------------------------------
402
+ /**
403
+ * Deposit liquid ARIO tokens into escrow for a designated Arweave or
404
+ * Ethereum recipient. Prepends a create-ATA-idempotent instruction for
405
+ * the escrow PDA's token account in the same transaction.
406
+ */
407
+ async depositTokens(args) {
408
+ const signer = this.requireSigner('depositTokens');
409
+ this.assertPubkeyLen(args.recipient);
410
+ this.assertAssetIdLen(args.assetId);
411
+ const [escrow] = await getEscrowTokenPDA(signer.address, args.assetId, this.programId);
412
+ // Derive the escrow PDA's ATA for the ARIO mint.
413
+ const escrowAta = await getAssociatedTokenAddressKit(args.arioMint, escrow, true);
414
+ // Prepend create-ATA-idempotent so the escrow token account exists.
415
+ const createAtaIx = buildCreateAtaIdempotentIx(signer.address, escrowAta, escrow, args.arioMint);
416
+ const depositIx = getDepositTokensInstruction({
417
+ escrow,
418
+ depositorTokenAccount: args.depositorTokenAccount,
419
+ escrowTokenAccount: escrowAta,
420
+ arioMint: args.arioMint,
421
+ depositor: signer,
422
+ assetId: args.assetId,
423
+ amount: args.amount,
424
+ recipientProtocol: protocolToByte(args.recipient.protocol),
425
+ recipientPubkey: args.recipient.publicKey,
426
+ }, { programAddress: this.programId });
427
+ return this.send([createAtaIx, depositIx]);
428
+ }
429
+ /**
430
+ * Deposit ARIO tokens into escrow as a vaulted (time-locked) position.
431
+ * Same as `depositTokens` but additionally records the lock duration
432
+ * and revocability flag. Uses the vault PDA seed.
433
+ */
434
+ async depositVault(args) {
435
+ const signer = this.requireSigner('depositVault');
436
+ this.assertPubkeyLen(args.recipient);
437
+ this.assertAssetIdLen(args.assetId);
438
+ const [escrow] = await getEscrowVaultPDA(signer.address, args.assetId, this.programId);
439
+ const escrowAta = await getAssociatedTokenAddressKit(args.arioMint, escrow, true);
440
+ const createAtaIx = buildCreateAtaIdempotentIx(signer.address, escrowAta, escrow, args.arioMint);
441
+ const depositIx = getDepositVaultInstruction({
442
+ escrow,
443
+ depositorTokenAccount: args.depositorTokenAccount,
444
+ escrowTokenAccount: escrowAta,
445
+ arioMint: args.arioMint,
446
+ depositor: signer,
447
+ assetId: args.assetId,
448
+ amount: args.amount,
449
+ lockDurationSeconds: args.lockDurationSeconds,
450
+ revocable: args.revocable,
451
+ recipientProtocol: protocolToByte(args.recipient.protocol),
452
+ recipientPubkey: args.recipient.publicKey,
453
+ }, { programAddress: this.programId });
454
+ return this.send([createAtaIx, depositIx]);
455
+ }
456
+ // -------------------------------------------------------------------
457
+ // Write — claim
458
+ // -------------------------------------------------------------------
459
+ /**
460
+ * Submit an Arweave RSA-PSS-4096 signature to release escrowed tokens.
461
+ * Anyone can submit (fee payer = `signer`); only `claimant` receives
462
+ * the tokens, and `depositor` receives rent.
463
+ */
464
+ async claimTokensArweave(args) {
465
+ const escrow = await this.requireTokenEscrow(args.depositor, args.assetId);
466
+ if (escrow.recipientProtocol !== 'arweave') {
467
+ throw new Error(`escrow recipient is ${escrow.recipientProtocol}, not arweave`);
468
+ }
469
+ const ix = await this.claimTokensArweaveIx({
470
+ ...args,
471
+ saltLen: args.saltLen ?? 32,
472
+ messageNonce: escrow.nonce,
473
+ });
474
+ // The on-chain claim handler delivers liquid tokens to
475
+ // `claimantTokenAccount`; for fresh-wallet claimants the canonical ATA
476
+ // doesn't exist yet (#3012). Idempotent-create when canonical.
477
+ const createAtaIx = await this._createClaimantAtaIfCanonical(args.claimant, args.claimantTokenAccount, escrow.arioMint);
478
+ // RSA-PSS-4096 verification is CU-intensive; use 400K.
479
+ return this.send(createAtaIx ? [createAtaIx, ix] : [ix], 400_000);
480
+ }
481
+ /**
482
+ * @deprecated Args `signature`, `saltLen`, `messageNonce` are ignored.
483
+ * Use the new attested flow — see `claimArweaveIx` doc.
484
+ */
485
+ async claimTokensArweaveIx(args) {
486
+ if (args.messageNonce.length !== 32) {
487
+ throw new Error('messageNonce must be 32 bytes');
488
+ }
489
+ const signer = this.requireSigner('claimTokensArweave');
490
+ const [escrow] = await getEscrowTokenPDA(args.depositor, args.assetId, this.programId);
491
+ return getClaimTokensArweaveAttestedInstruction({
492
+ escrow,
493
+ escrowTokenAccount: args.escrowTokenAccount,
494
+ claimantTokenAccount: args.claimantTokenAccount,
495
+ claimant: args.claimant,
496
+ depositor: args.depositor,
497
+ payer: signer,
498
+ messageNonce: args.messageNonce,
499
+ }, { programAddress: this.programId });
500
+ }
501
+ /**
502
+ * Submit an Ethereum ECDSA secp256k1 + EIP-191 signature to release
503
+ * escrowed tokens.
504
+ */
505
+ async claimTokensEthereum(args) {
506
+ const escrow = await this.requireTokenEscrow(args.depositor, args.assetId);
507
+ if (escrow.recipientProtocol !== 'ethereum') {
508
+ throw new Error(`escrow recipient is ${escrow.recipientProtocol}, not ethereum`);
509
+ }
510
+ const ix = await this.claimTokensEthereumIx({
511
+ ...args,
512
+ messageNonce: escrow.nonce,
513
+ });
514
+ // Same fresh-wallet #3012 vector as claimTokensArweave — bundle a
515
+ // canonical-ATA idempotent-create when applicable.
516
+ const createAtaIx = await this._createClaimantAtaIfCanonical(args.claimant, args.claimantTokenAccount, escrow.arioMint);
517
+ return this.send(createAtaIx ? [createAtaIx, ix] : [ix]);
518
+ }
519
+ async claimTokensEthereumIx(args) {
520
+ if (args.signature.length !== 65) {
521
+ throw new Error('ethereum signature must be 65 bytes (r||s||v)');
522
+ }
523
+ if (args.messageNonce.length !== 32) {
524
+ throw new Error('messageNonce must be 32 bytes');
525
+ }
526
+ const signer = this.requireSigner('claimTokensEthereum');
527
+ const [escrow] = await getEscrowTokenPDA(args.depositor, args.assetId, this.programId);
528
+ return getClaimTokensEthereumInstruction({
529
+ escrow,
530
+ escrowTokenAccount: args.escrowTokenAccount,
531
+ claimantTokenAccount: args.claimantTokenAccount,
532
+ claimant: args.claimant,
533
+ depositor: args.depositor,
534
+ payer: signer,
535
+ messageNonce: args.messageNonce,
536
+ signature: args.signature,
537
+ }, { programAddress: this.programId });
538
+ }
539
+ /**
540
+ * Submit an Arweave RSA-PSS-4096 signature to release escrowed vault tokens.
541
+ *
542
+ * The on-chain handler routes by vault state via instructions-sysvar
543
+ * introspection: an expired vault sends tokens straight to
544
+ * `claimantTokenAccount`; an active (still-locked) vault routes them to
545
+ * `payerTokenAccount` and requires a matching `ario_core::vaulted_transfer`
546
+ * sibling instruction in the same transaction.
547
+ *
548
+ * This method auto-detects the path from `vaultEndTimestamp` and bundles
549
+ * the sibling `vaulted_transfer` ix automatically when the vault is still
550
+ * active — callers do not need to construct it themselves.
551
+ */
552
+ async claimVaultArweave(args) {
553
+ const escrow = await this.requireVaultEscrow(args.depositor, args.assetId);
554
+ if (escrow.recipientProtocol !== 'arweave') {
555
+ throw new Error(`escrow recipient is ${escrow.recipientProtocol}, not arweave`);
556
+ }
557
+ const signer = this.requireSigner('claimVaultArweave');
558
+ const [escrowPda] = await getEscrowVaultPDA(args.depositor, args.assetId, this.programId);
559
+ // `args.signature` and `args.saltLen` are no longer fed to the
560
+ // builder — the on-chain `claim_vault_arweave_attested` ix verifies
561
+ // the attestor's Ed25519 signature via instruction-introspection
562
+ // of a preceding sigverify ix. See doc on `claimArweaveIx`.
563
+ const claimIx = getClaimVaultArweaveAttestedInstruction({
564
+ escrow: escrowPda,
565
+ escrowTokenAccount: args.escrowTokenAccount,
566
+ claimantTokenAccount: args.claimantTokenAccount,
567
+ payerTokenAccount: args.payerTokenAccount,
568
+ claimant: args.claimant,
569
+ depositor: args.depositor,
570
+ payer: signer,
571
+ messageNonce: escrow.nonce,
572
+ }, { programAddress: this.programId });
573
+ const ixs = await this.maybeBundleVaultedTransfer(escrow, args, claimIx);
574
+ return this.send(ixs, 400_000);
575
+ }
576
+ /**
577
+ * Submit an Ethereum ECDSA signature to release escrowed vault tokens. See
578
+ * {@link claimVaultArweave} for the expired/active vault routing semantics.
579
+ * Auto-bundles the sibling `vaulted_transfer` ix for active vaults.
580
+ */
581
+ async claimVaultEthereum(args) {
582
+ const escrow = await this.requireVaultEscrow(args.depositor, args.assetId);
583
+ if (escrow.recipientProtocol !== 'ethereum') {
584
+ throw new Error(`escrow recipient is ${escrow.recipientProtocol}, not ethereum`);
585
+ }
586
+ const signer = this.requireSigner('claimVaultEthereum');
587
+ const [escrowPda] = await getEscrowVaultPDA(args.depositor, args.assetId, this.programId);
588
+ const claimIx = getClaimVaultEthereumInstruction({
589
+ escrow: escrowPda,
590
+ escrowTokenAccount: args.escrowTokenAccount,
591
+ claimantTokenAccount: args.claimantTokenAccount,
592
+ payerTokenAccount: args.payerTokenAccount,
593
+ claimant: args.claimant,
594
+ depositor: args.depositor,
595
+ payer: signer,
596
+ messageNonce: escrow.nonce,
597
+ signature: args.signature,
598
+ }, { programAddress: this.programId });
599
+ const ixs = await this.maybeBundleVaultedTransfer(escrow, args, claimIx);
600
+ return this.send(ixs);
601
+ }
602
+ /**
603
+ * If the vault escrow is still locked (`vaultEndTimestamp` in the future),
604
+ * return `[claimIx, vaultedTransferIx]` so the on-chain claim handler can
605
+ * see the sibling (via `instructions_sysvar`) and re-vault tokens for the
606
+ * claimant. If the vault has expired, just `[claimIx]` — the on-chain
607
+ * handler delivers tokens directly to `claimantTokenAccount`.
608
+ *
609
+ * **Ordering matters at runtime**: `claim` must execute first so it can
610
+ * move tokens `escrow → payerTokenAccount`. `vaulted_transfer` then pulls
611
+ * from `payerTokenAccount` into the new vault. Reversing the order makes
612
+ * `vaulted_transfer` fail with `insufficient funds` because nothing has
613
+ * funded `payerTokenAccount` yet. The introspection check in
614
+ * `vault_introspect::verify_vaulted_transfer_in_tx` is presence-based
615
+ * (reads `instructions_sysvar`) so the *sibling* ordering doesn't matter
616
+ * for the check itself — only for atomic execution.
617
+ *
618
+ * `lockDurationSeconds` is set to the SDK-local `remaining` value. The
619
+ * on-chain handler accepts `lock_duration >= remaining_at_execution - 60s`
620
+ * (see the introspection function's tolerance), so any modest clock skew
621
+ * between client and chain is absorbed.
622
+ */
623
+ /**
624
+ * Idempotent-create the claimant's canonical ATA when needed.
625
+ *
626
+ * The on-chain claim handler delivers liquid tokens directly to
627
+ * `claimantTokenAccount` for expired vaults AND for token escrows.
628
+ * For active vaults, the `claim_vault_*` Anchor Accounts struct still
629
+ * declares `claimant_token_account: Account<TokenAccount>`, which forces
630
+ * Anchor's account-load-time validation to require the account exist
631
+ * even though the active path doesn't write to it. Either way: if the
632
+ * claimant is a fresh wallet that has never held this mint, the ATA
633
+ * doesn't exist and the tx fails with `AccountNotInitialized` (#3012).
634
+ *
635
+ * Returns `null` when the caller passed a non-canonical
636
+ * `claimantTokenAccount` (manually-created non-ATA token account,
637
+ * presumably already exists — caller's responsibility).
638
+ */
639
+ async _createClaimantAtaIfCanonical(claimant, claimantTokenAccount, mint) {
640
+ const canonical = await getAssociatedTokenAddressKit(mint, claimant);
641
+ if (claimantTokenAccount !== canonical)
642
+ return null;
643
+ const signer = this.requireSigner('createClaimantAtaIfCanonical');
644
+ return buildCreateAtaIdempotentIx(signer.address, canonical, claimant, mint);
645
+ }
646
+ async maybeBundleVaultedTransfer(escrow, args, claimIx) {
647
+ const nowSeconds = BigInt(Math.floor(Date.now() / 1000));
648
+ const remaining = escrow.vaultEndTimestamp - nowSeconds;
649
+ if (remaining <= 0n) {
650
+ // Expired vault → claim handler delivers liquid to claimantTokenAccount.
651
+ // Idempotent-create that ATA if it's the canonical derivation so a
652
+ // first-time recipient just works.
653
+ const createClaimantAtaIx = await this._createClaimantAtaIfCanonical(args.claimant, args.claimantTokenAccount, escrow.arioMint);
654
+ return createClaimantAtaIx ? [createClaimantAtaIx, claimIx] : [claimIx];
655
+ }
656
+ const signer = this.requireSigner('maybeBundleVaultedTransfer');
657
+ const nextId = await this.getNextVaultId(args.claimant);
658
+ const [vaultPda] = await getVaultPDA(args.claimant, nextId, this.coreProgram);
659
+ const vaultATA = await getAssociatedTokenAddressKit(escrow.arioMint, vaultPda, true);
660
+ // Active-vault path: `claim_vault_*` still validates the claimant ATA
661
+ // at account-load-time (Anchor `Account<TokenAccount>` constraint),
662
+ // even though no liquid is written to it. Idempotent-create so a fresh
663
+ // claimant doesn't fail the ix with AccountNotInitialized (#3012).
664
+ const createClaimantAtaIx = await this._createClaimantAtaIfCanonical(args.claimant, args.claimantTokenAccount, escrow.arioMint);
665
+ // The new vault PDA's ATA must exist before `vaulted_transfer` reads it
666
+ // (else `AccountNotInitialized` #3012). Idempotent so a retry after a
667
+ // partial-failure tx is safe. Placed after the claim ix to preserve
668
+ // the "claim first" tx ordering invariant.
669
+ const createVaultAtaIx = buildCreateAtaIdempotentIx(signer.address, vaultATA, vaultPda, escrow.arioMint);
670
+ const vaultedIx = await getVaultedTransferInstructionAsync({
671
+ vault: vaultPda,
672
+ senderTokenAccount: args.payerTokenAccount,
673
+ vaultTokenAccount: vaultATA,
674
+ recipient: args.claimant,
675
+ sender: signer,
676
+ amount: escrow.amount,
677
+ lockDurationSeconds: remaining,
678
+ revocable: escrow.vaultRevocable,
679
+ }, { programAddress: this.coreProgram });
680
+ const head = createClaimantAtaIx ? [createClaimantAtaIx] : [];
681
+ return [...head, claimIx, createVaultAtaIx, vaultedIx];
682
+ }
683
+ /** Read the recipient's `VaultCounter.nextId`, defaulting to 0n if the
684
+ * counter PDA hasn't been initialised yet (first vault for that owner). */
685
+ async getNextVaultId(owner) {
686
+ const [counterPda] = await getVaultCounterPDA(owner, this.coreProgram);
687
+ const account = await fetchMaybeVaultCounter(this.rpc, counterPda, {
688
+ commitment: this.commitment,
689
+ });
690
+ return account.exists ? account.data.nextId : 0n;
691
+ }
692
+ // -------------------------------------------------------------------
693
+ // Write — cancel
694
+ // -------------------------------------------------------------------
695
+ /**
696
+ * Cancel a token or vault escrow deposit and return the tokens to the
697
+ * depositor. Only callable by the original depositor.
698
+ */
699
+ async cancel(args) {
700
+ const signer = this.requireSigner('cancel');
701
+ this.assertAssetIdLen(args.assetId);
702
+ const pdaFn = args.assetType === 'vault' ? getEscrowVaultPDA : getEscrowTokenPDA;
703
+ const [escrow] = await pdaFn(signer.address, args.assetId, this.programId);
704
+ const ix = args.assetType === 'vault'
705
+ ? getCancelVaultDepositInstruction({
706
+ escrow,
707
+ escrowTokenAccount: args.escrowTokenAccount,
708
+ depositorTokenAccount: args.depositorTokenAccount,
709
+ depositor: signer,
710
+ }, { programAddress: this.programId })
711
+ : getCancelTokenDepositInstruction({
712
+ escrow,
713
+ escrowTokenAccount: args.escrowTokenAccount,
714
+ depositorTokenAccount: args.depositorTokenAccount,
715
+ depositor: signer,
716
+ }, { programAddress: this.programId });
717
+ return this.send([ix]);
718
+ }
719
+ // -------------------------------------------------------------------
720
+ // Write — update recipient
721
+ // -------------------------------------------------------------------
722
+ /**
723
+ * Re-target the escrow at a new recipient identity. Rotates the
724
+ * on-chain nonce, invalidating any in-flight claim signatures.
725
+ */
726
+ async updateRecipient(args) {
727
+ const signer = this.requireSigner('updateRecipient');
728
+ this.assertPubkeyLen(args.newRecipient);
729
+ this.assertAssetIdLen(args.assetId);
730
+ const pdaFn = args.assetType === 'vault' ? getEscrowVaultPDA : getEscrowTokenPDA;
731
+ const [escrow] = await pdaFn(signer.address, args.assetId, this.programId);
732
+ const ix = args.assetType === 'vault'
733
+ ? getUpdateVaultRecipientInstruction({
734
+ escrow,
735
+ depositor: signer,
736
+ newProtocol: protocolToByte(args.newRecipient.protocol),
737
+ newPubkey: args.newRecipient.publicKey,
738
+ }, { programAddress: this.programId })
739
+ : getUpdateTokenRecipientInstruction({
740
+ escrow,
741
+ depositor: signer,
742
+ newProtocol: protocolToByte(args.newRecipient.protocol),
743
+ newPubkey: args.newRecipient.publicKey,
744
+ }, { programAddress: this.programId });
745
+ return this.send([ix]);
746
+ }
747
+ // -------------------------------------------------------------------
748
+ // Internals
749
+ // -------------------------------------------------------------------
750
+ async send(instructions, computeUnitLimit = 200_000) {
751
+ const signer = this.requireSigner('send');
752
+ if (!this.rpcSubscriptions) {
753
+ throw new Error('TokenEscrow: rpcSubscriptions required for write operations');
754
+ }
755
+ return sendAndConfirm({
756
+ rpc: this.rpc,
757
+ rpcSubscriptions: this.rpcSubscriptions,
758
+ signer,
759
+ instructions,
760
+ commitment: this.commitment,
761
+ computeUnitLimit,
762
+ });
763
+ }
764
+ requireSigner(op) {
765
+ if (!this.signer) {
766
+ throw new Error(`TokenEscrow.${op}: signer is required for writes`);
767
+ }
768
+ return this.signer;
769
+ }
770
+ async requireTokenEscrow(depositor, assetId) {
771
+ const escrow = await this.get(depositor, assetId);
772
+ if (!escrow) {
773
+ throw new Error(`no token escrow found for depositor=${depositor}`);
774
+ }
775
+ return escrow;
776
+ }
777
+ async requireVaultEscrow(depositor, assetId) {
778
+ const escrow = await this.getVault(depositor, assetId);
779
+ if (!escrow) {
780
+ throw new Error(`no vault escrow found for depositor=${depositor}`);
781
+ }
782
+ return escrow;
783
+ }
784
+ assertPubkeyLen(recipient) {
785
+ const expected = recipient.protocol === 'arweave'
786
+ ? ESCROW_ARWEAVE_PUBKEY_LEN
787
+ : ESCROW_ETHEREUM_PUBKEY_LEN;
788
+ if (recipient.publicKey.length !== expected) {
789
+ throw new Error(`recipient.publicKey: expected ${expected} bytes for protocol=${recipient.protocol}, got ${recipient.publicKey.length}`);
790
+ }
791
+ }
792
+ assertAssetIdLen(assetId) {
793
+ if (assetId.length !== 32) {
794
+ throw new Error(`assetId must be 32 bytes, got ${assetId.length}`);
795
+ }
796
+ }
797
+ }