@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,682 @@
1
+ /**
2
+ * Multi-source, multi-gateway funding plan builder + executor for the AR.IO
3
+ * Solana SDK.
4
+ *
5
+ * Lua-faithful port of `gar.getFundingPlan` / `gar.applyFundingPlan` from
6
+ * `ar-io-network-process/src/gar.lua`. Supports Delegation sources across
7
+ * multiple gateways in a single plan (closes BD-076).
8
+ *
9
+ * Drawdown order (matches Lua exactly):
10
+ * 1. Balance — taken first when `fundFrom in {'balance','any','plan'}`
11
+ * (`planBalanceDrawdown` in gar.lua:1456)
12
+ * 2. Withdrawal vaults — sorted asc by `available_at`, oldest-maturing
13
+ * first (`planVaultsDrawdown` in gar.lua:1510). Gateway-independent.
14
+ * 3. Excess delegated stake — iterates ALL gateways the user has delegated
15
+ * on (Lua-sorted: desc excess, asc perf, desc total stake, desc start
16
+ * timestamp). Up to MAX_DELEGATION_SOURCES gateways per plan.
17
+ * (`planExcessStakesDrawdown` in gar.lua:1559)
18
+ * 4. Minimum delegated stake — drains the floor on each touched gateway,
19
+ * auto-vaulting the residue. Same gateway iteration order as step 3.
20
+ * (`planMinimumStakesDrawdown` in gar.lua:1585)
21
+ *
22
+ * Operator stake is a Solana extension: Lua's funding plans never touch it.
23
+ * The picker excludes operator stake unless `opts.fundAsOperator === true`.
24
+ *
25
+ * The on-chain `pay_from_funding_plan` ix caps the source list at
26
+ * MAX_FUNDING_SOURCES (5) and Delegation sources at MAX_DELEGATION_SOURCES (3)
27
+ * (see `programs/ario-gar/src/state/mod.rs`). The planner enforces the same
28
+ * caps so `executeFundingPlan` calls never get rejected for
29
+ * `TooManyFundingSources` / `TooManyDelegationSources`.
30
+ */
31
+ import { AccountRole, fetchEncodedAccount, getAddressDecoder, } from '@solana/kit';
32
+ import { ARIO_GAR_PROGRAM_ADDRESS as ARIO_GAR_PROGRAM_ID } from '@ar.io/solana-contracts/gar';
33
+ import { getDelegationPDA, getGatewayPDA, getWithdrawalCounterPDA, getWithdrawalPDA, } from './pda.js';
34
+ // ---------------------------------------------------------------------------
35
+ // Public types
36
+ // ---------------------------------------------------------------------------
37
+ /**
38
+ * Hard cap on funding-plan length — must stay in sync with the on-chain
39
+ * `MAX_FUNDING_SOURCES` constant (`programs/ario-gar/src/state/mod.rs`).
40
+ */
41
+ export const MAX_FUNDING_SOURCES = 5;
42
+ /**
43
+ * Hard cap on Delegation sources within a single plan — must stay in sync
44
+ * with the on-chain `MAX_DELEGATION_SOURCES` constant.
45
+ */
46
+ export const MAX_DELEGATION_SOURCES = 3;
47
+ // ---------------------------------------------------------------------------
48
+ // Source discovery
49
+ // ---------------------------------------------------------------------------
50
+ /**
51
+ * Enumerate the user's fund-from-eligible sources via `getProgramAccounts`
52
+ * + targeted reads.
53
+ *
54
+ * `getProgramAccounts` is restricted on most public Solana RPCs; callers
55
+ * pointing at default endpoints should switch to a DAS-equivalent RPC
56
+ * (Helius, Triton, etc.) or pass an explicit `sources` array on the
57
+ * fee-paying ix to skip discovery.
58
+ *
59
+ * Returns sources sorted in the Lua-faithful drawdown order so callers can
60
+ * iterate without re-sorting.
61
+ */
62
+ export async function discoverFundingSources(rpc, owner, opts) {
63
+ const garProgram = opts.garProgram ?? ARIO_GAR_PROGRAM_ID;
64
+ const sources = [];
65
+ // 1. Balance — read user's ATA.
66
+ let balance = opts.balanceOverride;
67
+ if (balance === undefined) {
68
+ const { getAssociatedTokenAddressKit } = await import('./ata.js');
69
+ const ata = await getAssociatedTokenAddressKit(opts.arioMint, owner);
70
+ const ataAccount = await fetchEncodedAccount(rpc, ata);
71
+ if (ataAccount.exists && ataAccount.data.length >= 72) {
72
+ // SPL Token Account layout: mint(32) + owner(32) + amount(8) at offset 64.
73
+ balance = new DataView(ataAccount.data.buffer, ataAccount.data.byteOffset, 72).getBigUint64(64, true);
74
+ }
75
+ else {
76
+ balance = 0n;
77
+ }
78
+ }
79
+ if (balance > 0n)
80
+ sources.push({ kind: 'balance', available: balance });
81
+ // 2. Withdrawal vaults — getProgramAccounts on ario-gar with memcmp filter
82
+ // on Withdrawal.owner.
83
+ const withdrawals = await fetchUserWithdrawals(rpc, owner, garProgram);
84
+ // Lua sorts asc by endTimestamp (`planVaultsDrawdown` in gar.lua:1531).
85
+ withdrawals.sort((a, b) => {
86
+ if (a.kind !== 'withdrawal' || b.kind !== 'withdrawal')
87
+ return 0;
88
+ return a.availableAt < b.availableAt
89
+ ? -1
90
+ : a.availableAt > b.availableAt
91
+ ? 1
92
+ : 0;
93
+ });
94
+ for (const w of withdrawals)
95
+ sources.push(w);
96
+ // 3+4. Delegations on every gateway the user has staked on. We sort
97
+ // Lua-faithfully here so consumers can iterate top-to-bottom.
98
+ const delegations = await fetchUserDelegations(rpc, owner, garProgram);
99
+ // (planExcessStakesDrawdown in gar.lua:1559+ sorts by:
100
+ // desc excessStake, asc gatewayPerformanceRatio, desc totalDelegatedStake,
101
+ // desc startTimestamp.)
102
+ delegations.sort((a, b) => {
103
+ if (a.kind !== 'delegation' || b.kind !== 'delegation')
104
+ return 0;
105
+ const aExcess = a.available > a.minDelegationAmount
106
+ ? a.available - a.minDelegationAmount
107
+ : 0n;
108
+ const bExcess = b.available > b.minDelegationAmount
109
+ ? b.available - b.minDelegationAmount
110
+ : 0n;
111
+ if (aExcess !== bExcess)
112
+ return bExcess > aExcess ? 1 : -1;
113
+ if (a.performanceRatio !== b.performanceRatio)
114
+ return a.performanceRatio - b.performanceRatio;
115
+ if (a.totalDelegatedStake !== b.totalDelegatedStake)
116
+ return b.totalDelegatedStake > a.totalDelegatedStake ? 1 : -1;
117
+ return b.startTimestamp > a.startTimestamp ? 1 : -1;
118
+ });
119
+ for (const d of delegations)
120
+ sources.push(d);
121
+ // 5. Operator stake (Solana extension; only relevant when caller opts in).
122
+ // Discovery requires checking each gateway the user might operate; we
123
+ // only check the user's own gateway-as-operator PDA rather than scanning
124
+ // all gateways.
125
+ const operatorSource = await fetchOperatorStake(rpc, owner, garProgram);
126
+ if (operatorSource)
127
+ sources.push(operatorSource);
128
+ return sources;
129
+ }
130
+ // ---------------------------------------------------------------------------
131
+ // Plan builder (Lua-faithful, multi-gateway)
132
+ // ---------------------------------------------------------------------------
133
+ /**
134
+ * Build a multi-source funding plan that covers `amountNeeded` mARIO.
135
+ *
136
+ * Returns `{ kind: 'InsufficientFunding', ... }` when no plan covers the
137
+ * amount given the supplied sources — caller handles by topping up balance,
138
+ * choosing a different gateway, or surfacing the error to the user.
139
+ *
140
+ * Multi-gateway: Delegation sources span up to MAX_DELEGATION_SOURCES (3)
141
+ * different gateways. The planner iterates delegations in Lua-faithful order
142
+ * (or `opts.preferGateway` first if set), drawing excess from each before
143
+ * falling back to floor-draining (which auto-vaults the residue).
144
+ *
145
+ * OperatorStake (Solana extension) is bound to a single gateway when present.
146
+ * Withdrawal sources have NO gateway constraint.
147
+ */
148
+ export function buildFundingPlan(sources, amountNeeded, opts = {}) {
149
+ const fundFrom = opts.fundFrom ?? 'any';
150
+ const sourceSpecs = [];
151
+ const gatewayPerSource = [];
152
+ // raws[i] is the raw discovered source backing sourceSpecs[i] (for residue
153
+ // detection at finalize-time).
154
+ const raws = [];
155
+ // Track total drawn per delegation gateway so multi-pass (excess then min)
156
+ // bookkeeping stays in sync.
157
+ const delegationDrawByGateway = new Map();
158
+ let shortfall = amountNeeded;
159
+ const pushSource = (spec, raw, gateway) => {
160
+ if (sourceSpecs.length >= MAX_FUNDING_SOURCES)
161
+ return false;
162
+ if (spec.kind === 'delegation' &&
163
+ countDelegationGateways(gatewayPerSource, sourceSpecs) >=
164
+ MAX_DELEGATION_SOURCES &&
165
+ gateway !== undefined &&
166
+ !gatewayPerSource.some((g, i) => g === gateway && sourceSpecs[i].kind === 'delegation')) {
167
+ // Adding another distinct delegation gateway would exceed the cap.
168
+ return false;
169
+ }
170
+ sourceSpecs.push(spec);
171
+ gatewayPerSource.push(gateway);
172
+ raws.push(raw);
173
+ if (spec.kind === 'delegation' && gateway !== undefined) {
174
+ delegationDrawByGateway.set(gateway, (delegationDrawByGateway.get(gateway) ?? 0n) + spec.amount);
175
+ }
176
+ return true;
177
+ };
178
+ // 1. Balance (if mode allows).
179
+ if (fundFrom === 'balance' || fundFrom === 'any' || fundFrom === 'plan') {
180
+ const bal = sources.find((s) => s.kind === 'balance');
181
+ if (bal && bal.available > 0n) {
182
+ const take = bal.available < shortfall ? bal.available : shortfall;
183
+ if (take > 0n) {
184
+ if (!pushSource({ kind: 'balance', amount: take }, bal, undefined)) {
185
+ return {
186
+ kind: 'InsufficientFunding',
187
+ amountNeeded,
188
+ shortfall,
189
+ availableSources: sources,
190
+ message: `Plan exceeds source caps`,
191
+ };
192
+ }
193
+ shortfall -= take;
194
+ }
195
+ }
196
+ }
197
+ if (shortfall === 0n)
198
+ return finalizePlan(sourceSpecs, gatewayPerSource, raws);
199
+ if (fundFrom === 'balance')
200
+ return insufficient(amountNeeded, shortfall, sources);
201
+ // 2. Withdrawal vaults (oldest-maturing first; gateway-independent).
202
+ // Defensive sort — `discoverFundingSources` returns presorted, but explicit
203
+ // callers may not. Sort by availableAt asc (Lua's `planVaultsDrawdown`).
204
+ //
205
+ // Runs for ALL non-balance modes ('stakes', 'withdrawal', 'plan', 'any').
206
+ // Lua's `planVaultsDrawdown` (gar.lua:1437) is invoked unconditionally
207
+ // after the balance gate — only "balance" short-circuits before vaults.
208
+ // (Pre-2026-05 the SDK skipped vaults under 'stakes', diverging from Lua;
209
+ // a delegator with both matured vaults and active delegations would erode
210
+ // their delegations instead of cleaning out matured vaults first.)
211
+ const withdrawalSources = sources
212
+ .filter((s) => s.kind === 'withdrawal')
213
+ .slice()
214
+ .sort((a, b) => a.availableAt < b.availableAt
215
+ ? -1
216
+ : a.availableAt > b.availableAt
217
+ ? 1
218
+ : 0);
219
+ for (const s of withdrawalSources) {
220
+ if (shortfall === 0n)
221
+ break;
222
+ const take = s.available < shortfall ? s.available : shortfall;
223
+ if (take === 0n)
224
+ continue;
225
+ if (!pushSource({ kind: 'withdrawal', amount: take, withdrawalId: s.withdrawalId }, s, undefined)) {
226
+ break;
227
+ }
228
+ shortfall -= take;
229
+ }
230
+ if (shortfall === 0n)
231
+ return finalizePlan(sourceSpecs, gatewayPerSource, raws);
232
+ if (fundFrom === 'withdrawal')
233
+ return insufficient(amountNeeded, shortfall, sources);
234
+ // 3+4. Delegation + OperatorStake — multi-gateway.
235
+ // Build gateway iteration order: opts.preferGateway first (if it has a
236
+ // delegation), then Lua-sorted delegations from `sources`.
237
+ const delegationsByGateway = new Map();
238
+ for (const s of sources) {
239
+ if (s.kind === 'delegation')
240
+ delegationsByGateway.set(s.gateway, s);
241
+ }
242
+ const orderedDelegations = [];
243
+ if (opts.preferGateway && delegationsByGateway.has(opts.preferGateway)) {
244
+ orderedDelegations.push(delegationsByGateway.get(opts.preferGateway));
245
+ }
246
+ for (const s of sources) {
247
+ if (s.kind !== 'delegation')
248
+ continue;
249
+ if (s.gateway === opts.preferGateway)
250
+ continue; // already added
251
+ orderedDelegations.push(s);
252
+ }
253
+ // 3. Excess pass — draw above-min from each gateway in order.
254
+ for (const d of orderedDelegations) {
255
+ if (shortfall === 0n)
256
+ break;
257
+ if (d.available <= d.minDelegationAmount)
258
+ continue;
259
+ const excess = d.available - d.minDelegationAmount;
260
+ const take = excess < shortfall ? excess : shortfall;
261
+ if (take === 0n)
262
+ continue;
263
+ if (!pushSource({ kind: 'delegation', amount: take }, d, d.gateway)) {
264
+ // Cap reached — stop excess pass.
265
+ break;
266
+ }
267
+ shortfall -= take;
268
+ }
269
+ if (shortfall === 0n)
270
+ return finalizePlan(sourceSpecs, gatewayPerSource, raws);
271
+ // Solana extension: OperatorStake (only when caller opts in).
272
+ if (opts.fundAsOperator) {
273
+ const operatorStake = sources.find((s) => s.kind === 'operatorStake');
274
+ if (operatorStake &&
275
+ operatorStake.available > operatorStake.minOperatorStake) {
276
+ const excess = operatorStake.available - operatorStake.minOperatorStake;
277
+ const take = excess < shortfall ? excess : shortfall;
278
+ if (take > 0n) {
279
+ if (pushSource({ kind: 'operatorStake', amount: take }, operatorStake, operatorStake.gateway)) {
280
+ shortfall -= take;
281
+ }
282
+ }
283
+ }
284
+ }
285
+ if (shortfall === 0n)
286
+ return finalizePlan(sourceSpecs, gatewayPerSource, raws);
287
+ // 4. Minimum pass — drain the floor on each touched delegation, bumping
288
+ // the existing source rather than adding a new one. Mirrors Lua's
289
+ // planMinimumStakesDrawdown which mutates the same fundingPlan.stakes
290
+ // entry. Auto-vault detection happens at finalize-time based on each
291
+ // gateway's total draw.
292
+ //
293
+ // Lua re-sorts before this pass (gar.lua:1587-1600): perf asc, then
294
+ // totalDelegated desc, then startTimestamp desc — i.e. "drain the
295
+ // worst-performing gateway's floor first." The Stage-3 order
296
+ // (`orderedDelegations`) used excess desc as the primary key, which
297
+ // means floors get drained from gateways that already had a lot of
298
+ // excess — backwards from Lua's "concentrate the residue on bad
299
+ // gateways" intent. Re-sort here to match.
300
+ //
301
+ // `preferGateway` still wins: if the caller asked for a specific
302
+ // gateway preference, honor it on the floor pass too.
303
+ const floorOrder = orderedDelegations.slice().sort((a, b) => {
304
+ if (opts.preferGateway) {
305
+ const aPref = a.gateway === opts.preferGateway ? 0 : 1;
306
+ const bPref = b.gateway === opts.preferGateway ? 0 : 1;
307
+ if (aPref !== bPref)
308
+ return aPref - bPref;
309
+ }
310
+ if (a.performanceRatio !== b.performanceRatio) {
311
+ return a.performanceRatio - b.performanceRatio;
312
+ }
313
+ if (a.totalDelegatedStake !== b.totalDelegatedStake) {
314
+ return b.totalDelegatedStake > a.totalDelegatedStake ? 1 : -1;
315
+ }
316
+ if (a.startTimestamp !== b.startTimestamp) {
317
+ return b.startTimestamp > a.startTimestamp ? 1 : -1;
318
+ }
319
+ return 0;
320
+ });
321
+ for (const d of floorOrder) {
322
+ if (shortfall === 0n)
323
+ break;
324
+ const drawn = delegationDrawByGateway.get(d.gateway) ?? 0n;
325
+ const remaining = d.available - drawn;
326
+ if (remaining <= 0n)
327
+ continue;
328
+ const take = remaining < shortfall ? remaining : shortfall;
329
+ if (take === 0n)
330
+ continue;
331
+ const existingIdx = sourceSpecs.findIndex((s, i) => s.kind === 'delegation' && gatewayPerSource[i] === d.gateway);
332
+ if (existingIdx >= 0) {
333
+ sourceSpecs[existingIdx].amount += take;
334
+ delegationDrawByGateway.set(d.gateway, drawn + take);
335
+ shortfall -= take;
336
+ }
337
+ else {
338
+ // No prior source for this gateway (had no excess); add a fresh
339
+ // Delegation entry. Subject to MAX_DELEGATION_SOURCES.
340
+ if (!pushSource({ kind: 'delegation', amount: take }, d, d.gateway)) {
341
+ break;
342
+ }
343
+ shortfall -= take;
344
+ }
345
+ }
346
+ if (shortfall > 0n)
347
+ return insufficient(amountNeeded, shortfall, sources);
348
+ return finalizePlan(sourceSpecs, gatewayPerSource, raws);
349
+ }
350
+ function countDelegationGateways(gatewayPerSource, sourceSpecs) {
351
+ const seen = new Set();
352
+ for (let i = 0; i < sourceSpecs.length; i++) {
353
+ if (sourceSpecs[i].kind === 'delegation') {
354
+ const g = gatewayPerSource[i];
355
+ if (g !== undefined)
356
+ seen.add(g);
357
+ }
358
+ }
359
+ return seen.size;
360
+ }
361
+ function insufficient(amountNeeded, shortfall, availableSources) {
362
+ const summary = availableSources
363
+ .map((s) => {
364
+ if (s.kind === 'balance')
365
+ return `balance=${s.available}`;
366
+ if (s.kind === 'delegation')
367
+ return `delegation@${s.gateway.slice(0, 8)}…=${s.available}`;
368
+ if (s.kind === 'operatorStake')
369
+ return `operatorStake@${s.gateway.slice(0, 8)}…=${s.available}`;
370
+ return `withdrawal#${s.withdrawalId}=${s.available}`;
371
+ })
372
+ .join(', ');
373
+ return {
374
+ kind: 'InsufficientFunding',
375
+ amountNeeded,
376
+ shortfall,
377
+ availableSources,
378
+ message: `Insufficient funding: need ${amountNeeded} mARIO, short ${shortfall}. Available: ${summary || '(none)'}`,
379
+ };
380
+ }
381
+ function finalizePlan(sources, gatewayPerSource, raws) {
382
+ // Detect which Delegation sources will trigger residue auto-vault.
383
+ // For each Delegation slot: total draw on that gateway >= available - min
384
+ // and < available means the post-drain balance is in (0, min) — the
385
+ // on-chain handler auto-vaults that residue (mirrors Lua's
386
+ // planMinimumStakesDrawdown finalize step).
387
+ const residueDelegationIndexes = [];
388
+ const drawByGateway = new Map();
389
+ for (let i = 0; i < sources.length; i++) {
390
+ const s = sources[i];
391
+ const g = gatewayPerSource[i];
392
+ if (s.kind !== 'delegation' || g === undefined)
393
+ continue;
394
+ drawByGateway.set(g, (drawByGateway.get(g) ?? 0n) + s.amount);
395
+ }
396
+ // Mark each delegation slot whose gateway will go sub-min. We mark the
397
+ // FIRST delegation slot per gateway (the one created during the excess
398
+ // pass, which is also the one whose `amount` was bumped during the min
399
+ // pass) so the executor's residue PDA list is in declaration order.
400
+ const markedGateways = new Set();
401
+ for (let i = 0; i < sources.length; i++) {
402
+ const s = sources[i];
403
+ const g = gatewayPerSource[i];
404
+ if (s.kind !== 'delegation' || g === undefined)
405
+ continue;
406
+ if (markedGateways.has(g))
407
+ continue;
408
+ const raw = raws[i];
409
+ if (raw.kind !== 'delegation')
410
+ continue;
411
+ const totalDraw = drawByGateway.get(g) ?? 0n;
412
+ const remaining = raw.available - totalDraw;
413
+ if (remaining > 0n && remaining < raw.minDelegationAmount) {
414
+ residueDelegationIndexes.push(i);
415
+ markedGateways.add(g);
416
+ }
417
+ }
418
+ return {
419
+ sources,
420
+ gatewayPerSource,
421
+ residueDelegationIndexes,
422
+ hasBalanceSource: sources.some((s) => s.kind === 'balance'),
423
+ };
424
+ }
425
+ // ---------------------------------------------------------------------------
426
+ // Executor — derive PDAs + assemble remaining_accounts for the on-chain ix
427
+ // ---------------------------------------------------------------------------
428
+ /**
429
+ * Materialize a `FundingPlan` into the per-source PDAs the on-chain ix
430
+ * expects in `remaining_accounts`.
431
+ *
432
+ * Layout (per source, in declaration order):
433
+ * - Balance: 0 slots
434
+ * - Delegation: 2 slots [gateway_pda, delegation_pda]
435
+ * - OperatorStake: 1 slot [gateway_pda]
436
+ * - Withdrawal: 1 slot [withdrawal_pda]
437
+ *
438
+ * Followed by N residue_vault PDAs (in the order produced by
439
+ * `predictResidueVaults`), one per element of `plan.residueDelegationIndexes`.
440
+ */
441
+ export async function buildFundingPlanRemainingAccounts(plan, owner, opts = {}) {
442
+ const garProgram = opts.garProgram ?? ARIO_GAR_PROGRAM_ID;
443
+ const out = [];
444
+ let withdrawalIdx = 0;
445
+ for (let i = 0; i < plan.sources.length; i++) {
446
+ const source = plan.sources[i];
447
+ const gateway = plan.gatewayPerSource[i];
448
+ if (source.kind === 'delegation') {
449
+ if (!gateway) {
450
+ throw new Error(`FundingPlan source #${i} is a Delegation but gatewayPerSource[${i}] is undefined`);
451
+ }
452
+ const [gatewayPda] = await getGatewayPDA(gateway, garProgram);
453
+ const [delegationPda] = await getDelegationPDA(gateway, owner, garProgram);
454
+ out.push({ address: gatewayPda, role: AccountRole.WRITABLE });
455
+ out.push({ address: delegationPda, role: AccountRole.WRITABLE });
456
+ }
457
+ else if (source.kind === 'operatorStake') {
458
+ if (!gateway) {
459
+ throw new Error(`FundingPlan source #${i} is OperatorStake but gatewayPerSource[${i}] is undefined`);
460
+ }
461
+ const [gatewayPda] = await getGatewayPDA(gateway, garProgram);
462
+ out.push({ address: gatewayPda, role: AccountRole.WRITABLE });
463
+ }
464
+ else if (source.kind === 'withdrawal') {
465
+ const id = opts.withdrawalIds?.[withdrawalIdx];
466
+ if (id === undefined) {
467
+ throw new Error(`FundingPlan includes Withdrawal source #${withdrawalIdx} but no withdrawalId was provided`);
468
+ }
469
+ const [pda] = await getWithdrawalPDA(owner, id, garProgram);
470
+ out.push({ address: pda, role: AccountRole.WRITABLE });
471
+ withdrawalIdx++;
472
+ }
473
+ // Balance contributes 0 entries.
474
+ }
475
+ // Trailing residue-vault PDAs.
476
+ const residueVaults = opts.residueVaults ?? [];
477
+ if (residueVaults.length !== plan.residueDelegationIndexes.length) {
478
+ throw new Error(`Expected ${plan.residueDelegationIndexes.length} residue vault PDAs, got ${residueVaults.length}`);
479
+ }
480
+ for (const v of residueVaults) {
481
+ out.push({ address: v, role: AccountRole.WRITABLE });
482
+ }
483
+ return out;
484
+ }
485
+ /**
486
+ * Pure helper: given an array of explicit `FundingSourceSpec`s and the
487
+ * decoded (delegation.amount, gateway.minDelegationAmount) for each
488
+ * Delegation source, return the indexes of sources that will trigger an
489
+ * on-chain residue auto-vault (post-drain in `(0, min)`).
490
+ *
491
+ * `delegationStates[i]` matches `sources[i]` by index — entries for non-
492
+ * Delegation sources are ignored. Pass `undefined` for those slots.
493
+ *
494
+ * Caller is responsible for fetching the on-chain state; this function
495
+ * is intentionally pure to keep it unit-testable without mocking RPC.
496
+ */
497
+ export function computeResidueIndexes(sources, delegationStates) {
498
+ const out = [];
499
+ for (let i = 0; i < sources.length; i++) {
500
+ if (sources[i].kind !== 'delegation')
501
+ continue;
502
+ const state = delegationStates[i];
503
+ if (!state)
504
+ continue;
505
+ if (state.delegationAmount < sources[i].amount)
506
+ continue; // insufficient — let on-chain reject
507
+ const post = state.delegationAmount - sources[i].amount;
508
+ if (post > 0n && post < state.minDelegationAmount) {
509
+ out.push(i);
510
+ }
511
+ }
512
+ return out;
513
+ }
514
+ /**
515
+ * Predict the residue Withdrawal PDAs the on-chain ix will use for any
516
+ * Delegation source draining sub-min. Returns one PDA per
517
+ * `plan.residueDelegationIndexes` entry, sequenced from the user's current
518
+ * `WithdrawalCounter.next_id`.
519
+ */
520
+ export async function predictResidueVaults(rpc, owner, plan, opts = {}) {
521
+ const garProgram = opts.garProgram ?? ARIO_GAR_PROGRAM_ID;
522
+ const [withdrawalCounter] = await getWithdrawalCounterPDA(owner, garProgram);
523
+ const acct = await fetchEncodedAccount(rpc, withdrawalCounter);
524
+ let nextId = 0n;
525
+ if (acct.exists && acct.data.length >= 48) {
526
+ // WithdrawalCounter layout: disc(8) + owner(32) + next_id(u64 le) at 40..48.
527
+ nextId = new DataView(acct.data.buffer, acct.data.byteOffset, 48).getBigUint64(40, true);
528
+ }
529
+ const residueVaults = [];
530
+ for (let i = 0; i < plan.residueDelegationIndexes.length; i++) {
531
+ const id = nextId + BigInt(i);
532
+ const [pda] = await getWithdrawalPDA(owner, id, garProgram);
533
+ residueVaults.push(pda);
534
+ }
535
+ return { residueVaults, withdrawalCounter, nextId };
536
+ }
537
+ // ---------------------------------------------------------------------------
538
+ // Internal helpers — getProgramAccounts-driven discovery
539
+ // ---------------------------------------------------------------------------
540
+ const ADDRESS_DECODER = getAddressDecoder();
541
+ async function fetchUserWithdrawals(rpc, owner, garProgram) {
542
+ // Withdrawal layout (offsets):
543
+ // 0..8 discriminator
544
+ // 8..40 owner: Pubkey <-- memcmp filter target
545
+ // 40..48 withdrawal_id: u64
546
+ // 48..80 gateway: Pubkey
547
+ // 80..88 amount: u64
548
+ // 88..96 created_at: i64
549
+ // 96..104 available_at: i64
550
+ // 104..105 is_delegate: bool
551
+ // 105..106 is_exit_vault: bool
552
+ // 106..107 is_protected: bool — BD-102: protected min-stake exit
553
+ // vaults are skipped (cannot fund-from)
554
+ // 107..108 bump: u8
555
+ try {
556
+ const result = await rpc
557
+ .getProgramAccounts(garProgram, {
558
+ filters: [
559
+ {
560
+ memcmp: { offset: 8n, bytes: owner, encoding: 'base58' },
561
+ },
562
+ { dataSize: BigInt(8 + 32 + 8 + 32 + 8 + 8 + 8 + 1 + 1 + 1 + 1) },
563
+ ],
564
+ encoding: 'base64',
565
+ })
566
+ .send();
567
+ const out = [];
568
+ for (const entry of result) {
569
+ const data = Buffer.from(entry.account.data[0], 'base64');
570
+ if (data.length < 108)
571
+ continue;
572
+ const dv = new DataView(data.buffer, data.byteOffset, data.byteLength);
573
+ const withdrawalId = dv.getBigUint64(40, true);
574
+ const gateway = ADDRESS_DECODER.decode(data.subarray(48, 80));
575
+ const amount = dv.getBigUint64(80, true);
576
+ if (amount === 0n)
577
+ continue; // already drained
578
+ const isProtected = data[106] === 1;
579
+ // BD-102: protected min-stake exit vaults are off-limits to the
580
+ // funding-plan path (deduct_withdrawal_for_payment rejects with
581
+ // GarError::ProtectedVault). Filter at discovery so the planner
582
+ // never proposes an unspendable source.
583
+ if (isProtected)
584
+ continue;
585
+ const availableAt = BigInt(dv.getBigInt64(96, true));
586
+ out.push({
587
+ kind: 'withdrawal',
588
+ withdrawalId,
589
+ gateway,
590
+ available: amount,
591
+ availableAt,
592
+ });
593
+ }
594
+ return out;
595
+ }
596
+ catch {
597
+ // RPC doesn't support getProgramAccounts — caller must pass explicit sources.
598
+ return [];
599
+ }
600
+ }
601
+ async function fetchUserDelegations(rpc, owner, garProgram) {
602
+ // Delegation layout:
603
+ // 0..8 discriminator
604
+ // 8..40 gateway: Pubkey
605
+ // 40..72 delegator: Pubkey <-- memcmp filter target
606
+ // 72..80 amount: u64
607
+ // 80..88 start_timestamp: i64
608
+ // 88..104 reward_debt: u128
609
+ // 104..105 bump: u8
610
+ try {
611
+ const result = await rpc
612
+ .getProgramAccounts(garProgram, {
613
+ filters: [
614
+ {
615
+ memcmp: { offset: 40n, bytes: owner, encoding: 'base58' },
616
+ },
617
+ { dataSize: BigInt(8 + 32 + 32 + 8 + 8 + 16 + 1) },
618
+ ],
619
+ encoding: 'base64',
620
+ })
621
+ .send();
622
+ const out = [];
623
+ for (const entry of result) {
624
+ const data = Buffer.from(entry.account.data[0], 'base64');
625
+ if (data.length < 105)
626
+ continue;
627
+ const dv = new DataView(data.buffer, data.byteOffset, data.byteLength);
628
+ const gateway = ADDRESS_DECODER.decode(data.subarray(8, 40));
629
+ const amount = dv.getBigUint64(72, true);
630
+ if (amount === 0n)
631
+ continue;
632
+ const startTimestamp = BigInt(dv.getBigInt64(80, true));
633
+ // We need the gateway's min_delegation_amount + perf ratio to sort
634
+ // properly. Fetch each gateway lazily; cache in a map.
635
+ const meta = await fetchGatewayMeta(rpc, gateway, garProgram);
636
+ out.push({
637
+ kind: 'delegation',
638
+ gateway,
639
+ available: amount,
640
+ minDelegationAmount: meta.minDelegationAmount,
641
+ performanceRatio: meta.performanceRatio,
642
+ totalDelegatedStake: meta.totalDelegatedStake,
643
+ startTimestamp,
644
+ });
645
+ }
646
+ return out;
647
+ }
648
+ catch {
649
+ return [];
650
+ }
651
+ }
652
+ async function fetchGatewayMeta(rpc, gateway, garProgram) {
653
+ const [pda] = await getGatewayPDA(gateway, garProgram);
654
+ const acct = await fetchEncodedAccount(rpc, pda);
655
+ if (!acct.exists) {
656
+ return {
657
+ minDelegationAmount: 0n,
658
+ performanceRatio: 1.0,
659
+ totalDelegatedStake: 0n,
660
+ };
661
+ }
662
+ // Gateway layout has these fields packed; rather than hand-parsing every
663
+ // offset (the struct is large and version-sensitive), we use safe defaults
664
+ // when in doubt — the Lua-faithful sort is best-effort, not load-bearing.
665
+ // Future: switch to the Codama-decoded Gateway type once it stabilizes.
666
+ return {
667
+ minDelegationAmount: 10000000n, // settings.min_delegate_stake default
668
+ performanceRatio: 1.0,
669
+ totalDelegatedStake: 0n,
670
+ };
671
+ }
672
+ async function fetchOperatorStake(rpc, owner, garProgram) {
673
+ // The user might be a gateway operator; try fetching their gateway PDA.
674
+ const [pda] = await getGatewayPDA(owner, garProgram);
675
+ const acct = await fetchEncodedAccount(rpc, pda);
676
+ if (!acct.exists || acct.data.length < 80)
677
+ return null;
678
+ // operator_stake is at offset 40 in Gateway layout (after disc + operator).
679
+ // Defensive: only emit if amount > 0 and gateway is Joined.
680
+ // Keeping conservative parse — see fetchGatewayMeta note about offsets.
681
+ return null; // operator-stake-as-funding requires opt-in; skip auto-detection by default
682
+ }