@ar.io/sdk 4.0.0-solana.8 → 4.0.0

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 (533) hide show
  1. package/README.md +721 -673
  2. package/lib/esm/cli/cli.js +28 -152
  3. package/lib/esm/cli/commands/antCommands.js +5 -66
  4. package/lib/esm/cli/commands/arnsPurchaseCommands.js +7 -28
  5. package/lib/esm/cli/commands/escrowCommands.js +23 -4
  6. package/lib/esm/cli/commands/gatewayWriteCommands.js +15 -8
  7. package/lib/esm/cli/commands/pruneCommands.js +14 -26
  8. package/lib/esm/cli/commands/readCommands.js +12 -1
  9. package/lib/esm/cli/options.js +2 -75
  10. package/lib/esm/cli/utils.js +96 -209
  11. package/lib/esm/common/ant-registry.js +12 -160
  12. package/lib/esm/common/ant.js +40 -1208
  13. package/lib/esm/common/faucet.js +17 -6
  14. package/lib/esm/common/index.js +0 -4
  15. package/lib/esm/common/io.js +13 -1441
  16. package/lib/esm/constants.js +0 -18
  17. package/lib/esm/solana/ant-readable.js +391 -54
  18. package/lib/esm/solana/ant-registry-readable.js +15 -0
  19. package/lib/esm/solana/ant-registry-writeable.js +19 -4
  20. package/lib/esm/solana/ant-writeable.js +43 -11
  21. package/lib/esm/solana/ata.js +15 -0
  22. package/lib/esm/solana/canonical-message.js +45 -9
  23. package/lib/esm/solana/clusters.js +71 -22
  24. package/lib/esm/solana/constants.js +21 -5
  25. package/lib/esm/solana/delegation-math.js +49 -0
  26. package/lib/esm/solana/deserialize.js +263 -727
  27. package/lib/esm/solana/escrow.js +145 -103
  28. package/lib/esm/solana/events.js +20 -199
  29. package/lib/esm/solana/funding-plan.js +19 -2
  30. package/lib/esm/solana/index.js +53 -12
  31. package/lib/esm/solana/instruction.js +15 -0
  32. package/lib/esm/solana/io-readable.js +510 -58
  33. package/lib/esm/solana/io-writeable.js +1198 -197
  34. package/lib/esm/solana/json-rpc.js +20 -4
  35. package/lib/esm/solana/metadata.js +15 -0
  36. package/lib/esm/solana/mpl-core.js +55 -5
  37. package/lib/esm/solana/pda.js +15 -0
  38. package/lib/esm/solana/predict-prescribed-observers.js +110 -0
  39. package/lib/esm/solana/retry.js +117 -0
  40. package/lib/esm/solana/rpc-circuit-breaker.js +258 -0
  41. package/lib/esm/solana/send.js +258 -3
  42. package/lib/esm/solana/spawn-ant.js +16 -2
  43. package/lib/esm/types/ant.js +8 -8
  44. package/lib/esm/types/io.js +0 -10
  45. package/lib/esm/utils/ant.js +0 -64
  46. package/lib/esm/utils/index.js +0 -3
  47. package/lib/esm/version.js +1 -1
  48. package/lib/types/cli/commands/antCommands.d.ts +6 -9
  49. package/lib/types/cli/commands/arnsPurchaseCommands.d.ts +27 -13
  50. package/lib/types/cli/commands/escrowCommands.d.ts +6 -0
  51. package/lib/types/cli/commands/gatewayWriteCommands.d.ts +12 -11
  52. package/lib/types/cli/commands/pruneCommands.d.ts +11 -11
  53. package/lib/types/cli/commands/readCommands.d.ts +25 -22
  54. package/lib/types/cli/commands/transfer.d.ts +9 -9
  55. package/lib/types/cli/options.d.ts +0 -57
  56. package/lib/types/cli/types.d.ts +6 -14
  57. package/lib/types/cli/utils.d.ts +34 -32
  58. package/lib/types/common/ant-registry.d.ts +35 -74
  59. package/lib/types/common/ant.d.ts +52 -570
  60. package/lib/types/common/faucet.d.ts +20 -8
  61. package/lib/types/common/index.d.ts +0 -3
  62. package/lib/types/common/io.d.ts +56 -288
  63. package/lib/types/constants.d.ts +0 -17
  64. package/lib/types/solana/ant-readable.d.ts +65 -6
  65. package/lib/types/solana/ant-registry-readable.d.ts +17 -2
  66. package/lib/types/solana/ant-registry-writeable.d.ts +20 -5
  67. package/lib/types/solana/ant-writeable.d.ts +39 -24
  68. package/lib/types/solana/ata.d.ts +15 -0
  69. package/lib/types/solana/canonical-message.d.ts +44 -5
  70. package/lib/types/solana/clusters.d.ts +68 -21
  71. package/lib/types/solana/constants.d.ts +16 -0
  72. package/lib/types/solana/delegation-math.d.ts +25 -0
  73. package/lib/types/solana/deserialize.d.ts +28 -198
  74. package/lib/types/solana/escrow.d.ts +128 -51
  75. package/lib/types/solana/events.d.ts +26 -144
  76. package/lib/types/solana/funding-plan.d.ts +15 -0
  77. package/lib/types/solana/index.d.ts +27 -3
  78. package/lib/types/solana/instruction.d.ts +15 -0
  79. package/lib/types/solana/io-readable.d.ts +185 -46
  80. package/lib/types/solana/io-writeable.d.ts +450 -77
  81. package/lib/types/solana/json-rpc.d.ts +15 -0
  82. package/lib/types/solana/metadata.d.ts +15 -0
  83. package/lib/types/solana/mpl-core.d.ts +44 -0
  84. package/lib/types/solana/predict-prescribed-observers.d.ts +28 -0
  85. package/lib/types/solana/retry.d.ts +62 -0
  86. package/lib/types/solana/rpc-circuit-breaker.d.ts +78 -0
  87. package/lib/types/solana/send.d.ts +80 -2
  88. package/lib/types/solana/spawn-ant.d.ts +15 -0
  89. package/lib/types/solana/types.d.ts +15 -0
  90. package/lib/types/types/ant-registry.d.ts +4 -4
  91. package/lib/types/types/ant.d.ts +92 -92
  92. package/lib/types/types/common.d.ts +18 -74
  93. package/lib/types/types/faucet.d.ts +2 -2
  94. package/lib/types/types/io.d.ts +189 -158
  95. package/lib/types/types/token.d.ts +0 -12
  96. package/lib/types/utils/ant.d.ts +1 -12
  97. package/lib/types/utils/index.d.ts +0 -3
  98. package/lib/types/version.d.ts +1 -1
  99. package/package.json +28 -38
  100. package/lib/esm/common/ant-versions.js +0 -87
  101. package/lib/esm/common/arweave.js +0 -21
  102. package/lib/esm/common/contracts/ao-process.js +0 -218
  103. package/lib/esm/common/hyperbeam/hb.js +0 -169
  104. package/lib/esm/common/marketplace.js +0 -669
  105. package/lib/esm/common/turbo.js +0 -215
  106. package/lib/esm/node/index.js +0 -20
  107. package/lib/esm/solana/generated/ant/events/aclEntryAddedEvent.js +0 -21
  108. package/lib/esm/solana/generated/ant/events/aclEntryRemovedEvent.js +0 -21
  109. package/lib/esm/solana/generated/ant/events/antMetadataUpdatedEvent.js +0 -21
  110. package/lib/esm/solana/generated/ant/events/antReconciledEvent.js +0 -21
  111. package/lib/esm/solana/generated/ant/events/antTransferredEvent.js +0 -21
  112. package/lib/esm/solana/generated/ant/events/attributesClearedEvent.js +0 -21
  113. package/lib/esm/solana/generated/ant/events/attributesSyncedEvent.js +0 -21
  114. package/lib/esm/solana/generated/ant/events/controllerAddedEvent.js +0 -21
  115. package/lib/esm/solana/generated/ant/events/controllerRemovedEvent.js +0 -21
  116. package/lib/esm/solana/generated/ant/events/index.js +0 -16
  117. package/lib/esm/solana/generated/ant/events/recordMetadataPrunedEvent.js +0 -21
  118. package/lib/esm/solana/generated/ant/events/recordMetadataRemovedEvent.js +0 -21
  119. package/lib/esm/solana/generated/ant/events/recordMetadataUpdatedEvent.js +0 -21
  120. package/lib/esm/solana/generated/ant/events/recordRemovedEvent.js +0 -21
  121. package/lib/esm/solana/generated/ant/events/recordSetEvent.js +0 -21
  122. package/lib/esm/solana/generated/ant/events/recordTransferredEvent.js +0 -21
  123. package/lib/esm/solana/generated/ant-escrow/events/escrowCancelledEvent.js +0 -21
  124. package/lib/esm/solana/generated/ant-escrow/events/escrowClaimedEvent.js +0 -21
  125. package/lib/esm/solana/generated/ant-escrow/events/escrowDepositedEvent.js +0 -21
  126. package/lib/esm/solana/generated/ant-escrow/events/escrowRecipientUpdatedEvent.js +0 -21
  127. package/lib/esm/solana/generated/ant-escrow/events/index.js +0 -5
  128. package/lib/esm/solana/generated/arns/events/demandFactorUpdatedEvent.js +0 -21
  129. package/lib/esm/solana/generated/arns/events/index.js +0 -13
  130. package/lib/esm/solana/generated/arns/events/leaseExtendedEvent.js +0 -21
  131. package/lib/esm/solana/generated/arns/events/namePurchasedEvent.js +0 -21
  132. package/lib/esm/solana/generated/arns/events/nameReassignedEvent.js +0 -21
  133. package/lib/esm/solana/generated/arns/events/nameReleasedEvent.js +0 -21
  134. package/lib/esm/solana/generated/arns/events/nameReservedEvent.js +0 -21
  135. package/lib/esm/solana/generated/arns/events/nameUnreservedEvent.js +0 -21
  136. package/lib/esm/solana/generated/arns/events/nameUpgradedEvent.js +0 -21
  137. package/lib/esm/solana/generated/arns/events/namesPrunedEvent.js +0 -21
  138. package/lib/esm/solana/generated/arns/events/reservedNameClaimedEvent.js +0 -21
  139. package/lib/esm/solana/generated/arns/events/returnedNamePurchasedEvent.js +0 -21
  140. package/lib/esm/solana/generated/arns/events/undernameIncreasedEvent.js +0 -21
  141. package/lib/esm/solana/generated/core/events/configUpdatedEvent.js +0 -21
  142. package/lib/esm/solana/generated/core/events/coreMigrationFinalizedEvent.js +0 -21
  143. package/lib/esm/solana/generated/core/events/index.js +0 -14
  144. package/lib/esm/solana/generated/core/events/primaryNameRemovedEvent.js +0 -21
  145. package/lib/esm/solana/generated/core/events/primaryNameRequestExpiredEvent.js +0 -21
  146. package/lib/esm/solana/generated/core/events/primaryNameRequestedEvent.js +0 -21
  147. package/lib/esm/solana/generated/core/events/primaryNameSetEvent.js +0 -21
  148. package/lib/esm/solana/generated/core/events/supplyFinalizedEvent.js +0 -21
  149. package/lib/esm/solana/generated/core/events/transferEvent.js +0 -21
  150. package/lib/esm/solana/generated/core/events/vaultCreatedEvent.js +0 -21
  151. package/lib/esm/solana/generated/core/events/vaultExtendedEvent.js +0 -21
  152. package/lib/esm/solana/generated/core/events/vaultIncreasedEvent.js +0 -21
  153. package/lib/esm/solana/generated/core/events/vaultReleasedEvent.js +0 -21
  154. package/lib/esm/solana/generated/core/events/vaultRevokedEvent.js +0 -21
  155. package/lib/esm/solana/generated/gar/events/allowlistToggledEvent.js +0 -21
  156. package/lib/esm/solana/generated/gar/events/delegateAllowlistedEvent.js +0 -21
  157. package/lib/esm/solana/generated/gar/events/delegationClosedEvent.js +0 -21
  158. package/lib/esm/solana/generated/gar/events/delegationDecreasedEvent.js +0 -21
  159. package/lib/esm/solana/generated/gar/events/delegationEvent.js +0 -21
  160. package/lib/esm/solana/generated/gar/events/epochClosedEvent.js +0 -21
  161. package/lib/esm/solana/generated/gar/events/epochCreatedEvent.js +0 -21
  162. package/lib/esm/solana/generated/gar/events/epochDistributedEvent.js +0 -21
  163. package/lib/esm/solana/generated/gar/events/epochPrescribedEvent.js +0 -21
  164. package/lib/esm/solana/generated/gar/events/epochWeightsTalliedEvent.js +0 -21
  165. package/lib/esm/solana/generated/gar/events/epochsToggledEvent.js +0 -21
  166. package/lib/esm/solana/generated/gar/events/fundingPlanAppliedEvent.js +0 -21
  167. package/lib/esm/solana/generated/gar/events/garMigrationFinalizedEvent.js +0 -21
  168. package/lib/esm/solana/generated/gar/events/gatewayFinalizedEvent.js +0 -21
  169. package/lib/esm/solana/generated/gar/events/gatewayJoinedEvent.js +0 -21
  170. package/lib/esm/solana/generated/gar/events/gatewayLeavingEvent.js +0 -21
  171. package/lib/esm/solana/generated/gar/events/gatewayPrunedEvent.js +0 -21
  172. package/lib/esm/solana/generated/gar/events/gatewaySettingsUpdatedEvent.js +0 -21
  173. package/lib/esm/solana/generated/gar/events/index.js +0 -31
  174. package/lib/esm/solana/generated/gar/events/instantWithdrawalEvent.js +0 -21
  175. package/lib/esm/solana/generated/gar/events/observationSubmittedEvent.js +0 -21
  176. package/lib/esm/solana/generated/gar/events/observerAddressUpdatedEvent.js +0 -21
  177. package/lib/esm/solana/generated/gar/events/operatorStakeIncreasedEvent.js +0 -21
  178. package/lib/esm/solana/generated/gar/events/redelegationEvent.js +0 -21
  179. package/lib/esm/solana/generated/gar/events/residueVaultCreatedEvent.js +0 -21
  180. package/lib/esm/solana/generated/gar/events/rewardsCompoundedEvent.js +0 -21
  181. package/lib/esm/solana/generated/gar/events/stakePaymentEvent.js +0 -21
  182. package/lib/esm/solana/generated/gar/events/withdrawalCancelledEvent.js +0 -21
  183. package/lib/esm/solana/generated/gar/events/withdrawalClaimedEvent.js +0 -21
  184. package/lib/esm/solana/generated/gar/events/withdrawalCreatedEvent.js +0 -21
  185. package/lib/esm/solana/generated/gar/events/withdrawalPaymentEvent.js +0 -21
  186. package/lib/esm/solana/generated/mpl-core/accounts/assetV1.js +0 -42
  187. package/lib/esm/solana/generated/mpl-core/accounts/collectionV1.js +0 -42
  188. package/lib/esm/solana/generated/mpl-core/accounts/hashedAssetV1.js +0 -45
  189. package/lib/esm/solana/generated/mpl-core/accounts/index.js +0 -12
  190. package/lib/esm/solana/generated/mpl-core/accounts/pluginHeaderV1.js +0 -45
  191. package/lib/esm/solana/generated/mpl-core/accounts/pluginRegistryV1.js +0 -42
  192. package/lib/esm/solana/generated/mpl-core/errors/index.js +0 -8
  193. package/lib/esm/solana/generated/mpl-core/errors/mplCore.js +0 -136
  194. package/lib/esm/solana/generated/mpl-core/index.js +0 -8
  195. package/lib/esm/solana/generated/mpl-core/instructions/addCollectionExternalPluginAdapterV1.js +0 -53
  196. package/lib/esm/solana/generated/mpl-core/instructions/addCollectionPluginV1.js +0 -53
  197. package/lib/esm/solana/generated/mpl-core/instructions/addExternalPluginAdapterV1.js +0 -53
  198. package/lib/esm/solana/generated/mpl-core/instructions/addPluginV1.js +0 -53
  199. package/lib/esm/solana/generated/mpl-core/instructions/approveCollectionPluginAuthorityV1.js +0 -53
  200. package/lib/esm/solana/generated/mpl-core/instructions/approvePluginAuthorityV1.js +0 -53
  201. package/lib/esm/solana/generated/mpl-core/instructions/burnCollectionV1.js +0 -49
  202. package/lib/esm/solana/generated/mpl-core/instructions/burnV1.js +0 -49
  203. package/lib/esm/solana/generated/mpl-core/instructions/collect.js +0 -42
  204. package/lib/esm/solana/generated/mpl-core/instructions/compressV1.js +0 -50
  205. package/lib/esm/solana/generated/mpl-core/instructions/createCollectionV1.js +0 -53
  206. package/lib/esm/solana/generated/mpl-core/instructions/createCollectionV2.js +0 -53
  207. package/lib/esm/solana/generated/mpl-core/instructions/createV1.js +0 -53
  208. package/lib/esm/solana/generated/mpl-core/instructions/createV2.js +0 -53
  209. package/lib/esm/solana/generated/mpl-core/instructions/decompressV1.js +0 -53
  210. package/lib/esm/solana/generated/mpl-core/instructions/executeV1.js +0 -56
  211. package/lib/esm/solana/generated/mpl-core/instructions/index.js +0 -40
  212. package/lib/esm/solana/generated/mpl-core/instructions/removeCollectionExternalPluginAdapterV1.js +0 -53
  213. package/lib/esm/solana/generated/mpl-core/instructions/removeCollectionPluginV1.js +0 -53
  214. package/lib/esm/solana/generated/mpl-core/instructions/removeExternalPluginAdapterV1.js +0 -53
  215. package/lib/esm/solana/generated/mpl-core/instructions/removePluginV1.js +0 -53
  216. package/lib/esm/solana/generated/mpl-core/instructions/revokeCollectionPluginAuthorityV1.js +0 -53
  217. package/lib/esm/solana/generated/mpl-core/instructions/revokePluginAuthorityV1.js +0 -53
  218. package/lib/esm/solana/generated/mpl-core/instructions/transferV1.js +0 -49
  219. package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionExternalPluginAdapterV1.js +0 -53
  220. package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionInfoV1.js +0 -45
  221. package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionPluginV1.js +0 -53
  222. package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionV1.js +0 -52
  223. package/lib/esm/solana/generated/mpl-core/instructions/updateExternalPluginAdapterV1.js +0 -53
  224. package/lib/esm/solana/generated/mpl-core/instructions/updatePluginV1.js +0 -53
  225. package/lib/esm/solana/generated/mpl-core/instructions/updateV1.js +0 -53
  226. package/lib/esm/solana/generated/mpl-core/instructions/updateV2.js +0 -53
  227. package/lib/esm/solana/generated/mpl-core/instructions/writeCollectionExternalPluginAdapterDataV1.js +0 -53
  228. package/lib/esm/solana/generated/mpl-core/instructions/writeExternalPluginAdapterDataV1.js +0 -53
  229. package/lib/esm/solana/generated/mpl-core/program-address.js +0 -1
  230. package/lib/esm/solana/generated/mpl-core/types/addAssetsToGroupV1Args.js +0 -17
  231. package/lib/esm/solana/generated/mpl-core/types/addBlocker.js +0 -17
  232. package/lib/esm/solana/generated/mpl-core/types/addCollectionsToGroupV1Args.js +0 -17
  233. package/lib/esm/solana/generated/mpl-core/types/addGroupsToGroupV1Args.js +0 -17
  234. package/lib/esm/solana/generated/mpl-core/types/agentIdentity.js +0 -17
  235. package/lib/esm/solana/generated/mpl-core/types/agentIdentityInitInfo.js +0 -18
  236. package/lib/esm/solana/generated/mpl-core/types/agentIdentityUpdateInfo.js +0 -18
  237. package/lib/esm/solana/generated/mpl-core/types/appData.js +0 -18
  238. package/lib/esm/solana/generated/mpl-core/types/appDataInitInfo.js +0 -18
  239. package/lib/esm/solana/generated/mpl-core/types/appDataUpdateInfo.js +0 -18
  240. package/lib/esm/solana/generated/mpl-core/types/attribute.js +0 -17
  241. package/lib/esm/solana/generated/mpl-core/types/attributes.js +0 -18
  242. package/lib/esm/solana/generated/mpl-core/types/authority.js +0 -24
  243. package/lib/esm/solana/generated/mpl-core/types/autograph.js +0 -18
  244. package/lib/esm/solana/generated/mpl-core/types/autographSignature.js +0 -17
  245. package/lib/esm/solana/generated/mpl-core/types/bubblegumV2.js +0 -17
  246. package/lib/esm/solana/generated/mpl-core/types/burnDelegate.js +0 -17
  247. package/lib/esm/solana/generated/mpl-core/types/closeGroupV1Args.js +0 -17
  248. package/lib/esm/solana/generated/mpl-core/types/compressionProof.js +0 -18
  249. package/lib/esm/solana/generated/mpl-core/types/creator.js +0 -17
  250. package/lib/esm/solana/generated/mpl-core/types/dataSection.js +0 -18
  251. package/lib/esm/solana/generated/mpl-core/types/dataSectionInitInfo.js +0 -18
  252. package/lib/esm/solana/generated/mpl-core/types/dataSectionUpdateInfo.js +0 -17
  253. package/lib/esm/solana/generated/mpl-core/types/dataState.js +0 -23
  254. package/lib/esm/solana/generated/mpl-core/types/edition.js +0 -17
  255. package/lib/esm/solana/generated/mpl-core/types/externalCheckResult.js +0 -17
  256. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapter.js +0 -25
  257. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterInitInfo.js +0 -25
  258. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterKey.js +0 -25
  259. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterSchema.js +0 -24
  260. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterType.js +0 -28
  261. package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterUpdateInfo.js +0 -25
  262. package/lib/esm/solana/generated/mpl-core/types/externalRegistryRecord.js +0 -18
  263. package/lib/esm/solana/generated/mpl-core/types/externalValidationResult.js +0 -24
  264. package/lib/esm/solana/generated/mpl-core/types/extraAccount.js +0 -25
  265. package/lib/esm/solana/generated/mpl-core/types/freezeDelegate.js +0 -17
  266. package/lib/esm/solana/generated/mpl-core/types/freezeExecute.js +0 -17
  267. package/lib/esm/solana/generated/mpl-core/types/groups.js +0 -17
  268. package/lib/esm/solana/generated/mpl-core/types/hashablePluginSchema.js +0 -18
  269. package/lib/esm/solana/generated/mpl-core/types/hashedAssetSchema.js +0 -17
  270. package/lib/esm/solana/generated/mpl-core/types/hookableLifecycleEvent.js +0 -26
  271. package/lib/esm/solana/generated/mpl-core/types/immutableMetadata.js +0 -17
  272. package/lib/esm/solana/generated/mpl-core/types/index.js +0 -89
  273. package/lib/esm/solana/generated/mpl-core/types/key.js +0 -28
  274. package/lib/esm/solana/generated/mpl-core/types/lifecycleHook.js +0 -18
  275. package/lib/esm/solana/generated/mpl-core/types/lifecycleHookInitInfo.js +0 -18
  276. package/lib/esm/solana/generated/mpl-core/types/lifecycleHookUpdateInfo.js +0 -18
  277. package/lib/esm/solana/generated/mpl-core/types/linkedAppData.js +0 -18
  278. package/lib/esm/solana/generated/mpl-core/types/linkedAppDataInitInfo.js +0 -18
  279. package/lib/esm/solana/generated/mpl-core/types/linkedAppDataUpdateInfo.js +0 -18
  280. package/lib/esm/solana/generated/mpl-core/types/linkedDataKey.js +0 -25
  281. package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHook.js +0 -18
  282. package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHookInitInfo.js +0 -18
  283. package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHookUpdateInfo.js +0 -18
  284. package/lib/esm/solana/generated/mpl-core/types/masterEdition.js +0 -17
  285. package/lib/esm/solana/generated/mpl-core/types/oracle.js +0 -18
  286. package/lib/esm/solana/generated/mpl-core/types/oracleInitInfo.js +0 -18
  287. package/lib/esm/solana/generated/mpl-core/types/oracleUpdateInfo.js +0 -18
  288. package/lib/esm/solana/generated/mpl-core/types/oracleValidation.js +0 -25
  289. package/lib/esm/solana/generated/mpl-core/types/permanentBurnDelegate.js +0 -17
  290. package/lib/esm/solana/generated/mpl-core/types/permanentFreezeDelegate.js +0 -17
  291. package/lib/esm/solana/generated/mpl-core/types/permanentFreezeExecute.js +0 -17
  292. package/lib/esm/solana/generated/mpl-core/types/permanentTransferDelegate.js +0 -17
  293. package/lib/esm/solana/generated/mpl-core/types/plugin.js +0 -25
  294. package/lib/esm/solana/generated/mpl-core/types/pluginAuthorityPair.js +0 -18
  295. package/lib/esm/solana/generated/mpl-core/types/pluginType.js +0 -40
  296. package/lib/esm/solana/generated/mpl-core/types/registryRecord.js +0 -18
  297. package/lib/esm/solana/generated/mpl-core/types/relationshipKind.js +0 -25
  298. package/lib/esm/solana/generated/mpl-core/types/removeAssetsFromGroupV1Args.js +0 -17
  299. package/lib/esm/solana/generated/mpl-core/types/removeCollectionsFromGroupV1Args.js +0 -17
  300. package/lib/esm/solana/generated/mpl-core/types/removeGroupsFromGroupV1Args.js +0 -17
  301. package/lib/esm/solana/generated/mpl-core/types/royalties.js +0 -18
  302. package/lib/esm/solana/generated/mpl-core/types/ruleSet.js +0 -24
  303. package/lib/esm/solana/generated/mpl-core/types/seed.js +0 -24
  304. package/lib/esm/solana/generated/mpl-core/types/transferDelegate.js +0 -17
  305. package/lib/esm/solana/generated/mpl-core/types/updateAuthority.js +0 -24
  306. package/lib/esm/solana/generated/mpl-core/types/updateDelegate.js +0 -17
  307. package/lib/esm/solana/generated/mpl-core/types/updateGroupV1Args.js +0 -17
  308. package/lib/esm/solana/generated/mpl-core/types/updateType.js +0 -24
  309. package/lib/esm/solana/generated/mpl-core/types/validationResult.js +0 -25
  310. package/lib/esm/solana/generated/mpl-core/types/validationResultsOffset.js +0 -24
  311. package/lib/esm/solana/generated/mpl-core/types/verifiedCreators.js +0 -18
  312. package/lib/esm/solana/generated/mpl-core/types/verifiedCreatorsSignature.js +0 -17
  313. package/lib/esm/utils/ao.js +0 -421
  314. package/lib/esm/utils/arweave.js +0 -271
  315. package/lib/esm/utils/processes.js +0 -167
  316. package/lib/esm/web/index.js +0 -20
  317. package/lib/types/common/ant-versions.d.ts +0 -39
  318. package/lib/types/common/arweave.d.ts +0 -17
  319. package/lib/types/common/contracts/ao-process.d.ts +0 -33
  320. package/lib/types/common/hyperbeam/hb.d.ts +0 -88
  321. package/lib/types/common/marketplace.d.ts +0 -556
  322. package/lib/types/common/turbo.d.ts +0 -61
  323. package/lib/types/node/index.d.ts +0 -20
  324. package/lib/types/solana/generated/ant/events/aclEntryAddedEvent.d.ts +0 -26
  325. package/lib/types/solana/generated/ant/events/aclEntryRemovedEvent.d.ts +0 -26
  326. package/lib/types/solana/generated/ant/events/antMetadataUpdatedEvent.d.ts +0 -28
  327. package/lib/types/solana/generated/ant/events/antReconciledEvent.d.ts +0 -28
  328. package/lib/types/solana/generated/ant/events/antTransferredEvent.d.ts +0 -26
  329. package/lib/types/solana/generated/ant/events/attributesClearedEvent.d.ts +0 -26
  330. package/lib/types/solana/generated/ant/events/attributesSyncedEvent.d.ts +0 -24
  331. package/lib/types/solana/generated/ant/events/controllerAddedEvent.d.ts +0 -26
  332. package/lib/types/solana/generated/ant/events/controllerRemovedEvent.d.ts +0 -26
  333. package/lib/types/solana/generated/ant/events/index.d.ts +0 -15
  334. package/lib/types/solana/generated/ant/events/recordMetadataPrunedEvent.d.ts +0 -26
  335. package/lib/types/solana/generated/ant/events/recordMetadataRemovedEvent.d.ts +0 -26
  336. package/lib/types/solana/generated/ant/events/recordMetadataUpdatedEvent.d.ts +0 -28
  337. package/lib/types/solana/generated/ant/events/recordRemovedEvent.d.ts +0 -26
  338. package/lib/types/solana/generated/ant/events/recordSetEvent.d.ts +0 -34
  339. package/lib/types/solana/generated/ant/events/recordTransferredEvent.d.ts +0 -30
  340. package/lib/types/solana/generated/ant-escrow/events/escrowCancelledEvent.d.ts +0 -28
  341. package/lib/types/solana/generated/ant-escrow/events/escrowClaimedEvent.d.ts +0 -32
  342. package/lib/types/solana/generated/ant-escrow/events/escrowDepositedEvent.d.ts +0 -36
  343. package/lib/types/solana/generated/ant-escrow/events/escrowRecipientUpdatedEvent.d.ts +0 -26
  344. package/lib/types/solana/generated/ant-escrow/events/index.d.ts +0 -4
  345. package/lib/types/solana/generated/arns/events/demandFactorUpdatedEvent.d.ts +0 -28
  346. package/lib/types/solana/generated/arns/events/index.d.ts +0 -12
  347. package/lib/types/solana/generated/arns/events/leaseExtendedEvent.d.ts +0 -32
  348. package/lib/types/solana/generated/arns/events/namePurchasedEvent.d.ts +0 -34
  349. package/lib/types/solana/generated/arns/events/nameReassignedEvent.d.ts +0 -28
  350. package/lib/types/solana/generated/arns/events/nameReleasedEvent.d.ts +0 -24
  351. package/lib/types/solana/generated/arns/events/nameReservedEvent.d.ts +0 -28
  352. package/lib/types/solana/generated/arns/events/nameUnreservedEvent.d.ts +0 -24
  353. package/lib/types/solana/generated/arns/events/nameUpgradedEvent.d.ts +0 -28
  354. package/lib/types/solana/generated/arns/events/namesPrunedEvent.d.ts +0 -26
  355. package/lib/types/solana/generated/arns/events/reservedNameClaimedEvent.d.ts +0 -24
  356. package/lib/types/solana/generated/arns/events/returnedNamePurchasedEvent.d.ts +0 -32
  357. package/lib/types/solana/generated/arns/events/undernameIncreasedEvent.d.ts +0 -32
  358. package/lib/types/solana/generated/core/events/configUpdatedEvent.d.ts +0 -26
  359. package/lib/types/solana/generated/core/events/coreMigrationFinalizedEvent.d.ts +0 -26
  360. package/lib/types/solana/generated/core/events/index.d.ts +0 -13
  361. package/lib/types/solana/generated/core/events/primaryNameRemovedEvent.d.ts +0 -26
  362. package/lib/types/solana/generated/core/events/primaryNameRequestExpiredEvent.d.ts +0 -26
  363. package/lib/types/solana/generated/core/events/primaryNameRequestedEvent.d.ts +0 -30
  364. package/lib/types/solana/generated/core/events/primaryNameSetEvent.d.ts +0 -24
  365. package/lib/types/solana/generated/core/events/supplyFinalizedEvent.d.ts +0 -26
  366. package/lib/types/solana/generated/core/events/transferEvent.d.ts +0 -26
  367. package/lib/types/solana/generated/core/events/vaultCreatedEvent.d.ts +0 -28
  368. package/lib/types/solana/generated/core/events/vaultExtendedEvent.d.ts +0 -26
  369. package/lib/types/solana/generated/core/events/vaultIncreasedEvent.d.ts +0 -28
  370. package/lib/types/solana/generated/core/events/vaultReleasedEvent.d.ts +0 -26
  371. package/lib/types/solana/generated/core/events/vaultRevokedEvent.d.ts +0 -28
  372. package/lib/types/solana/generated/gar/events/allowlistToggledEvent.d.ts +0 -24
  373. package/lib/types/solana/generated/gar/events/delegateAllowlistedEvent.d.ts +0 -26
  374. package/lib/types/solana/generated/gar/events/delegationClosedEvent.d.ts +0 -24
  375. package/lib/types/solana/generated/gar/events/delegationDecreasedEvent.d.ts +0 -28
  376. package/lib/types/solana/generated/gar/events/delegationEvent.d.ts +0 -28
  377. package/lib/types/solana/generated/gar/events/epochClosedEvent.d.ts +0 -24
  378. package/lib/types/solana/generated/gar/events/epochCreatedEvent.d.ts +0 -26
  379. package/lib/types/solana/generated/gar/events/epochDistributedEvent.d.ts +0 -26
  380. package/lib/types/solana/generated/gar/events/epochPrescribedEvent.d.ts +0 -28
  381. package/lib/types/solana/generated/gar/events/epochWeightsTalliedEvent.d.ts +0 -26
  382. package/lib/types/solana/generated/gar/events/epochsToggledEvent.d.ts +0 -24
  383. package/lib/types/solana/generated/gar/events/fundingPlanAppliedEvent.d.ts +0 -28
  384. package/lib/types/solana/generated/gar/events/garMigrationFinalizedEvent.d.ts +0 -26
  385. package/lib/types/solana/generated/gar/events/gatewayFinalizedEvent.d.ts +0 -24
  386. package/lib/types/solana/generated/gar/events/gatewayJoinedEvent.d.ts +0 -26
  387. package/lib/types/solana/generated/gar/events/gatewayLeavingEvent.d.ts +0 -22
  388. package/lib/types/solana/generated/gar/events/gatewayPrunedEvent.d.ts +0 -26
  389. package/lib/types/solana/generated/gar/events/gatewaySettingsUpdatedEvent.d.ts +0 -24
  390. package/lib/types/solana/generated/gar/events/index.d.ts +0 -30
  391. package/lib/types/solana/generated/gar/events/instantWithdrawalEvent.d.ts +0 -30
  392. package/lib/types/solana/generated/gar/events/observationSubmittedEvent.d.ts +0 -28
  393. package/lib/types/solana/generated/gar/events/observerAddressUpdatedEvent.d.ts +0 -24
  394. package/lib/types/solana/generated/gar/events/operatorStakeIncreasedEvent.d.ts +0 -26
  395. package/lib/types/solana/generated/gar/events/redelegationEvent.d.ts +0 -30
  396. package/lib/types/solana/generated/gar/events/residueVaultCreatedEvent.d.ts +0 -30
  397. package/lib/types/solana/generated/gar/events/rewardsCompoundedEvent.d.ts +0 -26
  398. package/lib/types/solana/generated/gar/events/stakePaymentEvent.d.ts +0 -28
  399. package/lib/types/solana/generated/gar/events/withdrawalCancelledEvent.d.ts +0 -30
  400. package/lib/types/solana/generated/gar/events/withdrawalClaimedEvent.d.ts +0 -26
  401. package/lib/types/solana/generated/gar/events/withdrawalCreatedEvent.d.ts +0 -28
  402. package/lib/types/solana/generated/gar/events/withdrawalPaymentEvent.d.ts +0 -28
  403. package/lib/types/solana/generated/mpl-core/accounts/assetV1.d.ts +0 -37
  404. package/lib/types/solana/generated/mpl-core/accounts/collectionV1.d.ts +0 -37
  405. package/lib/types/solana/generated/mpl-core/accounts/hashedAssetV1.d.ts +0 -30
  406. package/lib/types/solana/generated/mpl-core/accounts/index.d.ts +0 -12
  407. package/lib/types/solana/generated/mpl-core/accounts/pluginHeaderV1.d.ts +0 -30
  408. package/lib/types/solana/generated/mpl-core/accounts/pluginRegistryV1.d.ts +0 -31
  409. package/lib/types/solana/generated/mpl-core/errors/index.d.ts +0 -8
  410. package/lib/types/solana/generated/mpl-core/errors/mplCore.d.ts +0 -133
  411. package/lib/types/solana/generated/mpl-core/index.d.ts +0 -8
  412. package/lib/types/solana/generated/mpl-core/instructions/addCollectionExternalPluginAdapterV1.d.ts +0 -56
  413. package/lib/types/solana/generated/mpl-core/instructions/addCollectionPluginV1.d.ts +0 -59
  414. package/lib/types/solana/generated/mpl-core/instructions/addExternalPluginAdapterV1.d.ts +0 -60
  415. package/lib/types/solana/generated/mpl-core/instructions/addPluginV1.d.ts +0 -63
  416. package/lib/types/solana/generated/mpl-core/instructions/approveCollectionPluginAuthorityV1.d.ts +0 -59
  417. package/lib/types/solana/generated/mpl-core/instructions/approvePluginAuthorityV1.d.ts +0 -63
  418. package/lib/types/solana/generated/mpl-core/instructions/burnCollectionV1.d.ts +0 -52
  419. package/lib/types/solana/generated/mpl-core/instructions/burnV1.d.ts +0 -60
  420. package/lib/types/solana/generated/mpl-core/instructions/collect.d.ts +0 -39
  421. package/lib/types/solana/generated/mpl-core/instructions/compressV1.d.ts +0 -55
  422. package/lib/types/solana/generated/mpl-core/instructions/createCollectionV1.d.ts +0 -58
  423. package/lib/types/solana/generated/mpl-core/instructions/createCollectionV2.d.ts +0 -61
  424. package/lib/types/solana/generated/mpl-core/instructions/createV1.d.ts +0 -77
  425. package/lib/types/solana/generated/mpl-core/instructions/createV2.d.ts +0 -80
  426. package/lib/types/solana/generated/mpl-core/instructions/decompressV1.d.ts +0 -60
  427. package/lib/types/solana/generated/mpl-core/instructions/executeV1.d.ts +0 -63
  428. package/lib/types/solana/generated/mpl-core/instructions/index.d.ts +0 -40
  429. package/lib/types/solana/generated/mpl-core/instructions/removeCollectionExternalPluginAdapterV1.d.ts +0 -56
  430. package/lib/types/solana/generated/mpl-core/instructions/removeCollectionPluginV1.d.ts +0 -56
  431. package/lib/types/solana/generated/mpl-core/instructions/removeExternalPluginAdapterV1.d.ts +0 -60
  432. package/lib/types/solana/generated/mpl-core/instructions/removePluginV1.d.ts +0 -60
  433. package/lib/types/solana/generated/mpl-core/instructions/revokeCollectionPluginAuthorityV1.d.ts +0 -56
  434. package/lib/types/solana/generated/mpl-core/instructions/revokePluginAuthorityV1.d.ts +0 -60
  435. package/lib/types/solana/generated/mpl-core/instructions/transferV1.d.ts +0 -64
  436. package/lib/types/solana/generated/mpl-core/instructions/updateCollectionExternalPluginAdapterV1.d.ts +0 -59
  437. package/lib/types/solana/generated/mpl-core/instructions/updateCollectionInfoV1.d.ts +0 -47
  438. package/lib/types/solana/generated/mpl-core/instructions/updateCollectionPluginV1.d.ts +0 -56
  439. package/lib/types/solana/generated/mpl-core/instructions/updateCollectionV1.d.ts +0 -62
  440. package/lib/types/solana/generated/mpl-core/instructions/updateExternalPluginAdapterV1.d.ts +0 -63
  441. package/lib/types/solana/generated/mpl-core/instructions/updatePluginV1.d.ts +0 -60
  442. package/lib/types/solana/generated/mpl-core/instructions/updateV1.d.ts +0 -66
  443. package/lib/types/solana/generated/mpl-core/instructions/updateV2.d.ts +0 -70
  444. package/lib/types/solana/generated/mpl-core/instructions/writeCollectionExternalPluginAdapterDataV1.d.ts +0 -63
  445. package/lib/types/solana/generated/mpl-core/instructions/writeExternalPluginAdapterDataV1.d.ts +0 -67
  446. package/lib/types/solana/generated/mpl-core/program-address.d.ts +0 -7
  447. package/lib/types/solana/generated/mpl-core/types/addAssetsToGroupV1Args.d.ts +0 -13
  448. package/lib/types/solana/generated/mpl-core/types/addBlocker.d.ts +0 -13
  449. package/lib/types/solana/generated/mpl-core/types/addCollectionsToGroupV1Args.d.ts +0 -13
  450. package/lib/types/solana/generated/mpl-core/types/addGroupsToGroupV1Args.d.ts +0 -15
  451. package/lib/types/solana/generated/mpl-core/types/agentIdentity.d.ts +0 -15
  452. package/lib/types/solana/generated/mpl-core/types/agentIdentityInitInfo.d.ts +0 -22
  453. package/lib/types/solana/generated/mpl-core/types/agentIdentityUpdateInfo.d.ts +0 -20
  454. package/lib/types/solana/generated/mpl-core/types/appData.d.ts +0 -20
  455. package/lib/types/solana/generated/mpl-core/types/appDataInitInfo.d.ts +0 -22
  456. package/lib/types/solana/generated/mpl-core/types/appDataUpdateInfo.d.ts +0 -18
  457. package/lib/types/solana/generated/mpl-core/types/attribute.d.ts +0 -16
  458. package/lib/types/solana/generated/mpl-core/types/attributes.d.ts +0 -18
  459. package/lib/types/solana/generated/mpl-core/types/authority.d.ts +0 -29
  460. package/lib/types/solana/generated/mpl-core/types/autograph.d.ts +0 -18
  461. package/lib/types/solana/generated/mpl-core/types/autographSignature.d.ts +0 -16
  462. package/lib/types/solana/generated/mpl-core/types/bubblegumV2.d.ts +0 -13
  463. package/lib/types/solana/generated/mpl-core/types/burnDelegate.d.ts +0 -13
  464. package/lib/types/solana/generated/mpl-core/types/closeGroupV1Args.d.ts +0 -13
  465. package/lib/types/solana/generated/mpl-core/types/compressionProof.d.ts +0 -28
  466. package/lib/types/solana/generated/mpl-core/types/creator.d.ts +0 -16
  467. package/lib/types/solana/generated/mpl-core/types/dataSection.d.ts +0 -20
  468. package/lib/types/solana/generated/mpl-core/types/dataSectionInitInfo.d.ts +0 -20
  469. package/lib/types/solana/generated/mpl-core/types/dataSectionUpdateInfo.d.ts +0 -13
  470. package/lib/types/solana/generated/mpl-core/types/dataState.d.ts +0 -16
  471. package/lib/types/solana/generated/mpl-core/types/edition.d.ts +0 -15
  472. package/lib/types/solana/generated/mpl-core/types/externalCheckResult.d.ts +0 -15
  473. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapter.d.ts +0 -66
  474. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterInitInfo.d.ts +0 -66
  475. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterKey.d.ts +0 -64
  476. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterSchema.d.ts +0 -17
  477. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterType.d.ts +0 -21
  478. package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterUpdateInfo.d.ts +0 -59
  479. package/lib/types/solana/generated/mpl-core/types/externalRegistryRecord.d.ts +0 -28
  480. package/lib/types/solana/generated/mpl-core/types/externalValidationResult.d.ts +0 -17
  481. package/lib/types/solana/generated/mpl-core/types/extraAccount.d.ts +0 -86
  482. package/lib/types/solana/generated/mpl-core/types/freezeDelegate.d.ts +0 -15
  483. package/lib/types/solana/generated/mpl-core/types/freezeExecute.d.ts +0 -15
  484. package/lib/types/solana/generated/mpl-core/types/groups.d.ts +0 -15
  485. package/lib/types/solana/generated/mpl-core/types/hashablePluginSchema.d.ts +0 -22
  486. package/lib/types/solana/generated/mpl-core/types/hashedAssetSchema.d.ts +0 -16
  487. package/lib/types/solana/generated/mpl-core/types/hookableLifecycleEvent.d.ts +0 -19
  488. package/lib/types/solana/generated/mpl-core/types/immutableMetadata.d.ts +0 -13
  489. package/lib/types/solana/generated/mpl-core/types/index.d.ts +0 -89
  490. package/lib/types/solana/generated/mpl-core/types/key.d.ts +0 -21
  491. package/lib/types/solana/generated/mpl-core/types/lifecycleHook.d.ts +0 -24
  492. package/lib/types/solana/generated/mpl-core/types/lifecycleHookInitInfo.d.ts +0 -28
  493. package/lib/types/solana/generated/mpl-core/types/lifecycleHookUpdateInfo.d.ts +0 -22
  494. package/lib/types/solana/generated/mpl-core/types/linkedAppData.d.ts +0 -20
  495. package/lib/types/solana/generated/mpl-core/types/linkedAppDataInitInfo.d.ts +0 -22
  496. package/lib/types/solana/generated/mpl-core/types/linkedAppDataUpdateInfo.d.ts +0 -18
  497. package/lib/types/solana/generated/mpl-core/types/linkedDataKey.d.ts +0 -31
  498. package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHook.d.ts +0 -24
  499. package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHookInitInfo.d.ts +0 -28
  500. package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHookUpdateInfo.d.ts +0 -22
  501. package/lib/types/solana/generated/mpl-core/types/masterEdition.d.ts +0 -21
  502. package/lib/types/solana/generated/mpl-core/types/oracle.d.ts +0 -22
  503. package/lib/types/solana/generated/mpl-core/types/oracleInitInfo.d.ts +0 -26
  504. package/lib/types/solana/generated/mpl-core/types/oracleUpdateInfo.d.ts +0 -22
  505. package/lib/types/solana/generated/mpl-core/types/oracleValidation.d.ts +0 -35
  506. package/lib/types/solana/generated/mpl-core/types/permanentBurnDelegate.d.ts +0 -13
  507. package/lib/types/solana/generated/mpl-core/types/permanentFreezeDelegate.d.ts +0 -15
  508. package/lib/types/solana/generated/mpl-core/types/permanentFreezeExecute.d.ts +0 -15
  509. package/lib/types/solana/generated/mpl-core/types/permanentTransferDelegate.d.ts +0 -13
  510. package/lib/types/solana/generated/mpl-core/types/plugin.d.ts +0 -150
  511. package/lib/types/solana/generated/mpl-core/types/pluginAuthorityPair.d.ts +0 -20
  512. package/lib/types/solana/generated/mpl-core/types/pluginType.d.ts +0 -33
  513. package/lib/types/solana/generated/mpl-core/types/registryRecord.d.ts +0 -22
  514. package/lib/types/solana/generated/mpl-core/types/relationshipKind.d.ts +0 -18
  515. package/lib/types/solana/generated/mpl-core/types/removeAssetsFromGroupV1Args.d.ts +0 -15
  516. package/lib/types/solana/generated/mpl-core/types/removeCollectionsFromGroupV1Args.d.ts +0 -15
  517. package/lib/types/solana/generated/mpl-core/types/removeGroupsFromGroupV1Args.d.ts +0 -15
  518. package/lib/types/solana/generated/mpl-core/types/royalties.d.ts +0 -22
  519. package/lib/types/solana/generated/mpl-core/types/ruleSet.d.ts +0 -27
  520. package/lib/types/solana/generated/mpl-core/types/seed.d.ts +0 -36
  521. package/lib/types/solana/generated/mpl-core/types/transferDelegate.d.ts +0 -13
  522. package/lib/types/solana/generated/mpl-core/types/updateAuthority.d.ts +0 -27
  523. package/lib/types/solana/generated/mpl-core/types/updateDelegate.d.ts +0 -15
  524. package/lib/types/solana/generated/mpl-core/types/updateGroupV1Args.d.ts +0 -19
  525. package/lib/types/solana/generated/mpl-core/types/updateType.d.ts +0 -17
  526. package/lib/types/solana/generated/mpl-core/types/validationResult.d.ts +0 -18
  527. package/lib/types/solana/generated/mpl-core/types/validationResultsOffset.d.ts +0 -33
  528. package/lib/types/solana/generated/mpl-core/types/verifiedCreators.d.ts +0 -18
  529. package/lib/types/solana/generated/mpl-core/types/verifiedCreatorsSignature.d.ts +0 -16
  530. package/lib/types/utils/ao.d.ts +0 -80
  531. package/lib/types/utils/arweave.d.ts +0 -79
  532. package/lib/types/utils/processes.d.ts +0 -39
  533. package/lib/types/web/index.d.ts +0 -20
@@ -1,3 +1,18 @@
1
+ /**
2
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
1
16
  /**
2
17
  * Helpers for JSON-RPC reads against {@link SolanaRpc} that return a
3
18
  * web3.js-shaped `AccountInfo` (Buffer-backed `data`, plain Address strings).
@@ -5,6 +20,7 @@
5
20
  * the RPC client's response shape.
6
21
  */
7
22
  import { address } from '@solana/kit';
23
+ import { withRetry } from './retry.js';
8
24
  /**
9
25
  * Map an arbitrary commitment string to one of kit's three supported tiers.
10
26
  * Anything we don't recognise (or `undefined`) falls back to `confirmed`,
@@ -24,12 +40,12 @@ function toKitCommitment(commitment) {
24
40
  * doesn't exist (so callers can handle "missing PDA" without try/catch).
25
41
  */
26
42
  export async function getAccountInfoLegacy(rpc, pda, commitment) {
27
- const res = await rpc
43
+ const res = await withRetry(() => rpc
28
44
  .getAccountInfo(pda, {
29
45
  encoding: 'base64',
30
46
  commitment: toKitCommitment(commitment),
31
47
  })
32
- .send();
48
+ .send());
33
49
  if (!res.value)
34
50
  return null;
35
51
  const [dataB64] = res.value.data;
@@ -53,12 +69,12 @@ export async function getAccountInfoLegacy(rpc, pda, commitment) {
53
69
  export async function getMultipleAccountsInfoLegacy(rpc, pdas, commitment) {
54
70
  if (pdas.length === 0)
55
71
  return [];
56
- const res = await rpc
72
+ const res = await withRetry(() => rpc
57
73
  .getMultipleAccounts(pdas, {
58
74
  encoding: 'base64',
59
75
  commitment: toKitCommitment(commitment),
60
76
  })
61
- .send();
77
+ .send());
62
78
  return res.value.map((acct) => {
63
79
  if (!acct)
64
80
  return null;
@@ -1,3 +1,18 @@
1
+ /**
2
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
1
16
  /**
2
17
  * Metaplex-standard JSON metadata builder for AR.IO ANT NFTs.
3
18
  *
@@ -1,3 +1,18 @@
1
+ /**
2
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
1
16
  /**
2
17
  * Reader for the on-chain Metaplex Core asset (`AssetV1` + plugin chain).
3
18
  *
@@ -26,11 +41,8 @@
26
41
  * `ANT Program` attribute or has a layout the walker doesn't recognise.
27
42
  */
28
43
  import { fetchEncodedAccount, } from '@solana/kit';
29
- import { getAssetV1Decoder } from './generated/mpl-core/accounts/assetV1.js';
30
- import { getPluginHeaderV1Decoder } from './generated/mpl-core/accounts/pluginHeaderV1.js';
31
- import { getPluginRegistryV1Decoder } from './generated/mpl-core/accounts/pluginRegistryV1.js';
32
- import { getPluginDecoder } from './generated/mpl-core/types/plugin.js';
33
- import { PluginType } from './generated/mpl-core/types/pluginType.js';
44
+ import { PluginType, getAssetV1Decoder, getPluginDecoder, getPluginHeaderV1Decoder, getPluginRegistryV1Decoder, } from '@ar.io/solana-contracts/mpl-core';
45
+ import { ARIO_ANT_PROGRAM_ID } from './constants.js';
34
46
  /**
35
47
  * On-chain trait keys. Marketplaces and DAS indexers query these by
36
48
  * exact string match — keep in lock-step with:
@@ -116,6 +128,44 @@ export async function fetchAntProgramFromAsset(rpc, mint, config) {
116
128
  // self-grief that surfaces at the next PDA derivation.
117
129
  return value;
118
130
  }
131
+ /**
132
+ * Decide which ANT program id to trust for a SIGNING (write) transaction.
133
+ *
134
+ * The `ANT Program` trait returned by {@link fetchAntProgramFromAsset} is read
135
+ * from Metaplex Core asset / RPC data and is NOT authenticated — a malicious
136
+ * asset owner, or a spoofed/compromised RPC response, can set it to an
137
+ * attacker-controlled program. Write instructions use this value as the
138
+ * instruction `programAddress` while including the caller as a signer, so
139
+ * silently trusting a non-canonical detected value would let an attacker route
140
+ * a victim's signed transaction to their own program and inherit signer /
141
+ * writable privileges over the included accounts.
142
+ *
143
+ * Trust rules — BYO-ANT (ADR-016 / BD-100) stays supported, but only via
144
+ * explicit opt-in:
145
+ * - An `explicit` program id (the caller passed `antProgramId`) is always
146
+ * honored — the caller has taken responsibility for it.
147
+ * - Otherwise a detected value is honored only when it is `null` (no trait)
148
+ * or equals the canonical {@link ARIO_ANT_PROGRAM_ID}.
149
+ * - A detected NON-canonical value with no explicit opt-in throws, rather
150
+ * than silently signing against an untrusted program.
151
+ *
152
+ * Read-only paths never sign, so they may auto-detect freely; this guard is
153
+ * only for the write path.
154
+ */
155
+ export function resolveWriteAntProgram(args) {
156
+ const canonical = args.canonical ?? ARIO_ANT_PROGRAM_ID;
157
+ if (args.explicit !== undefined)
158
+ return args.explicit;
159
+ if (args.detected === null || args.detected === canonical)
160
+ return canonical;
161
+ throw new Error(`ANT.init auto-detected a non-canonical ANT program (${args.detected}) ` +
162
+ `from the asset's "${TRAIT_KEY_ANT_PROGRAM}" trait. That value is read ` +
163
+ `from asset/RPC data and is not authenticated, so the SDK refuses to ` +
164
+ `build a *signed* transaction against it implicitly (doing so could ` +
165
+ `route your signature to an attacker-controlled program). To use a ` +
166
+ `third-party (BYO-ANT) program for writes, pass it explicitly: ` +
167
+ `ANT.init({ ..., antProgramId }).`);
168
+ }
119
169
  /**
120
170
  * Fetch the current owner of an MPL Core asset. Returns `null` when the
121
171
  * account doesn't exist or the AssetV1 layout can't be decoded.
@@ -1,3 +1,18 @@
1
+ /**
2
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
1
16
  import { createHash } from 'crypto';
2
17
  /**
3
18
  * PDA derivation helpers for AR.IO Solana programs.
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Off-chain prediction of `prescribe_epoch`'s observer selection.
18
+ *
19
+ * `ario_gar::prescribe_epoch` selects observers INTERNALLY via a weighted
20
+ * roulette over the `GatewayRegistry`, then uses `remaining_accounts` only as a
21
+ * lookup table for the ~50 selected Gateway PDAs (+ NameRegistry). A cranker
22
+ * that instead supplies every registry gateway hits Solana's
23
+ * `MAX_TX_ACCOUNT_LOCKS = 64` on large registries and the tx is rejected at
24
+ * pre-flight. This helper mirrors the on-chain selection so the caller can
25
+ * supply exactly the selected set.
26
+ *
27
+ * The selection is deterministic from on-chain state that is stable once
28
+ * `epoch.weights_tallied == 1`: the frozen `epoch.hashchain` entropy beacon and
29
+ * the live `registry.gateways[*].composite_weight`.
30
+ *
31
+ * Cross-language parity with the Rust handler
32
+ * (`ar-io-solana-contracts/programs/ario-gar/src/instructions/epoch.rs`, the
33
+ * `prescribe_epoch` observer-selection block) is asserted in
34
+ * `predict-prescribed-observers.test.ts` against vectors generated by the Rust
35
+ * reference example `programs/ario-gar/examples/predict_prescribed_observers.rs`.
36
+ * If you change this algorithm, update that example and the test together.
37
+ */
38
+ import { createHash } from 'crypto';
39
+ function sha256(data) {
40
+ return createHash('sha256').update(data).digest();
41
+ }
42
+ /** `u128::from_le_bytes(bytes[0..16])` — little-endian, first 16 bytes only. */
43
+ function leU128(bytes) {
44
+ let v = 0n;
45
+ for (let i = 15; i >= 0; i--) {
46
+ v = (v << 8n) | BigInt(bytes[i]);
47
+ }
48
+ return v;
49
+ }
50
+ /**
51
+ * Predict the operator pubkeys `prescribe_epoch` will select as observers.
52
+ *
53
+ * Returns the selected `GatewaySlot.address` values (operator pubkeys) in
54
+ * selection order, at most `maxObservers`. These correspond 1:1 to the on-chain
55
+ * `epoch.prescribed_observer_gateways` array, and are what Gateway PDAs are
56
+ * derived from (`[GATEWAY_SEED, operator]`). NOTE this is NOT
57
+ * `epoch.prescribed_observers`, which `prescribe_epoch` later overwrites with
58
+ * each gateway's resolved `observer_address`.
59
+ *
60
+ * @param epochHashchain `epoch.hashchain` — exactly 32 bytes, frozen at
61
+ * `create_epoch`.
62
+ * @param slots `registry.gateways[0 .. epoch.active_gateway_count]` in registry
63
+ * (slot-index) order. Pass the whole prefix including any zero-weight slots —
64
+ * order and the live weight sum must match the on-chain walk exactly. Empty /
65
+ * zero-weight slots contribute nothing and can never be selected.
66
+ * @param maxObservers `epoch_settings.prescribed_observer_count`. Clamped to
67
+ * `slots.length` (the on-chain `min(prescribed_observer_count, active_count)`).
68
+ */
69
+ export function predictPrescribedObservers(epochHashchain, slots, maxObservers) {
70
+ if (epochHashchain.length !== 32) {
71
+ throw new Error(`epochHashchain must be 32 bytes, got ${epochHashchain.length}`);
72
+ }
73
+ const activeCount = slots.length;
74
+ const cap = Math.min(maxObservers, activeCount);
75
+ // Live total weight (epoch.rs: `for i in 0..active_count { total += w }`).
76
+ // u128 sum of u64 weights over <=3000 slots cannot overflow, so the Rust
77
+ // `saturating_add` never actually saturates; plain BigInt addition matches.
78
+ let totalWeight = 0n;
79
+ for (const slot of slots) {
80
+ totalWeight += slot.compositeWeight;
81
+ }
82
+ const selected = [];
83
+ if (totalWeight === 0n || activeCount === 0 || cap === 0) {
84
+ return selected;
85
+ }
86
+ // Initial entropy: sha256(hashchain).
87
+ let hashBytes = sha256(epochHashchain);
88
+ // GAR-019: bounded retries, up to cap * 10 rounds.
89
+ const maxRounds = cap * 10;
90
+ for (let round = 0; round < maxRounds; round++) {
91
+ if (selected.length >= cap)
92
+ break;
93
+ const randomValue = leU128(hashBytes.subarray(0, 16)) % totalWeight;
94
+ let cumulative = 0n;
95
+ for (const slot of slots) {
96
+ cumulative += slot.compositeWeight;
97
+ if (cumulative > randomValue && slot.compositeWeight > 0n) {
98
+ // Anti-duplicate: skip if already chosen, but the round still consumes
99
+ // the roulette hit — break the walk either way (epoch.rs).
100
+ if (!selected.includes(slot.address)) {
101
+ selected.push(slot.address);
102
+ }
103
+ break;
104
+ }
105
+ }
106
+ // Re-hash for the next round: sha256(hash_bytes).
107
+ hashBytes = sha256(hashBytes);
108
+ }
109
+ return selected;
110
+ }
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Lightweight retry helper with exponential back-off + jitter for Solana RPC
18
+ * read calls.
19
+ *
20
+ * Wraps any async function so transient transport errors (HTTP 429/5xx,
21
+ * network timeouts, etc.) are retried automatically while "normal" failures
22
+ * (account-not-found, deserialization) bubble immediately.
23
+ *
24
+ * Usage:
25
+ * ```ts
26
+ * const account = await withRetry(() => fetchEncodedAccount(rpc, pda));
27
+ * ```
28
+ */
29
+ import { Logger } from '../common/logger.js';
30
+ const logger = new Logger({ level: 'error' });
31
+ const DEFAULT_MAX_ATTEMPTS = 3;
32
+ const DEFAULT_BASE_DELAY_MS = 1_000;
33
+ const DEFAULT_MAX_DELAY_MS = 10_000;
34
+ /**
35
+ * Default retryable-error heuristic.
36
+ *
37
+ * We retry on:
38
+ * - Network / fetch errors (`TypeError: fetch failed`)
39
+ * - HTTP 429 (rate-limit) and 5xx (server) surfaced by kit's transport as
40
+ * `SolanaError` with "HTTP error (4xx|5xx)" in the message.
41
+ * - Timeout errors from opossum or native `AbortError`.
42
+ *
43
+ * We do NOT retry on:
44
+ * - JSON-RPC application errors (account not found, invalid params, etc.)
45
+ * - Deserialization / decoding errors
46
+ * - Any error without a recognisable transport signature
47
+ */
48
+ export function isRetryableError(error) {
49
+ if (error == null)
50
+ return false;
51
+ const name = error.name ?? '';
52
+ const message = String(error.message ?? '');
53
+ const code = error.context
54
+ ?.__code;
55
+ // SolanaError from kit's transport for HTTP 429 / 5xx
56
+ if (/HTTP error \(4(?:0[89]|[1-9]\d)|HTTP error \(5\d\d\)/.test(message))
57
+ return true;
58
+ // Specific 429 match (rate-limit) — always retry
59
+ if (/HTTP error \(429\)/.test(message))
60
+ return true;
61
+ // Network-level failures: fetch failed, ECONNRESET, ETIMEDOUT, etc.
62
+ if (name === 'TypeError' && /fetch failed/i.test(message))
63
+ return true;
64
+ if (/ECONNRESET|ETIMEDOUT|ENOTFOUND|EAI_AGAIN/i.test(message))
65
+ return true;
66
+ // Abort / timeout
67
+ if (name === 'AbortError' || name === 'TimeoutError')
68
+ return true;
69
+ if (/timed out/i.test(message))
70
+ return true;
71
+ // Opossum circuit-breaker open — the breaker itself will fallback, but if
72
+ // we're layered on top we shouldn't retry (the breaker handles it).
73
+ if (/breaker is open/i.test(message))
74
+ return false;
75
+ // Numeric Solana JSON-RPC codes that indicate transient overload
76
+ if (typeof code === 'number' && (code === -32005 || code === -32016))
77
+ return true;
78
+ return false;
79
+ }
80
+ function sleep(ms) {
81
+ return new Promise((resolve) => setTimeout(resolve, ms));
82
+ }
83
+ function jitteredDelay(base, attempt, cap) {
84
+ const exponential = base * 2 ** attempt;
85
+ const capped = Math.min(exponential, cap);
86
+ return capped * (0.5 + Math.random() * 0.5);
87
+ }
88
+ /**
89
+ * Execute `fn` with automatic retries on transient failures.
90
+ *
91
+ * ```ts
92
+ * const data = await withRetry(() => rpc.getAccountInfo(addr).send());
93
+ * ```
94
+ */
95
+ export async function withRetry(fn, opts) {
96
+ const maxAttempts = opts?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
97
+ const baseDelayMs = opts?.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;
98
+ const maxDelayMs = opts?.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;
99
+ const retryable = opts?.isRetryable ?? isRetryableError;
100
+ let lastError;
101
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
102
+ try {
103
+ return await fn();
104
+ }
105
+ catch (error) {
106
+ lastError = error;
107
+ const isLast = attempt === maxAttempts - 1;
108
+ if (isLast || !retryable(error)) {
109
+ throw error;
110
+ }
111
+ const delay = jitteredDelay(baseDelayMs, attempt, maxDelayMs);
112
+ logger.debug(`[retry] attempt ${attempt + 1}/${maxAttempts} failed, retrying in ${Math.round(delay)}ms`, { error: String(error) });
113
+ await sleep(delay);
114
+ }
115
+ }
116
+ throw lastError;
117
+ }
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Circuit-breaker wrapper for Solana RPC transports using
18
+ * [opossum](https://nodeshift.dev/opossum/).
19
+ *
20
+ * When the primary RPC endpoint starts failing (rate-limits, downtime, etc.)
21
+ * the circuit opens and subsequent calls are routed transparently to a
22
+ * fallback RPC until the primary recovers.
23
+ *
24
+ * Works at the **transport level** — no Proxy magic required. Every RPC
25
+ * method (`getAccountInfo`, `sendTransaction`, etc.) goes through the same
26
+ * transport function, so a single circuit breaker covers them all.
27
+ *
28
+ * Usage:
29
+ * ```ts
30
+ * import { ARIO, createCircuitBreakerRpc } from '@ar.io/sdk';
31
+ *
32
+ * const rpc = createCircuitBreakerRpc({
33
+ * primaryUrl: 'https://my-premium-rpc.example.com',
34
+ * fallbackUrl: 'https://api.mainnet-beta.solana.com',
35
+ * });
36
+ *
37
+ * const ario = ARIO.init({ rpc });
38
+ * ```
39
+ */
40
+ import { createDefaultRpcTransport, createSolanaRpcFromTransport, } from '@solana/kit';
41
+ import CircuitBreaker from 'opossum';
42
+ import { Logger } from '../common/logger.js';
43
+ const logger = new Logger({ level: 'error' });
44
+ // ---------------------------------------------------------------------------
45
+ // Defaults
46
+ // ---------------------------------------------------------------------------
47
+ const DEFAULT_MAINNET_RPC = 'https://api.mainnet-beta.solana.com';
48
+ const DEFAULT_DEVNET_RPC = 'https://api.devnet.solana.com';
49
+ // ---------------------------------------------------------------------------
50
+ // Adaptive rate gate (token bucket + cooldown)
51
+ // ---------------------------------------------------------------------------
52
+ /** Default ceiling when `maxRequestsPerSecond` is not provided. */
53
+ const DEFAULT_MAX_RPS = 10;
54
+ /** Multiply the current rate by this on a 429 with no usable header. */
55
+ const AIMD_DECREASE = 0.5;
56
+ /** Never throttle below this many requests/second. */
57
+ const MIN_RATE = 1;
58
+ /** Consecutive successes before nudging the rate up by 1 (additive recovery). */
59
+ const RECOVERY_SUCCESSES = 20;
60
+ /** Fraction of a provider-advertised limit to actually use (safety margin). */
61
+ const RATE_SAFETY_FACTOR = 0.9;
62
+ /** Cooldown applied on a 429 that carries no `Retry-After`. */
63
+ const DEFAULT_COOLDOWN_MS = 1_000;
64
+ /**
65
+ * Token-bucket throttle whose rate can be retuned at runtime and which can be
66
+ * paused on demand. Tokens refill continuously at the current rate, capped at
67
+ * one second's worth (the burst allowance); waiters are released FIFO.
68
+ */
69
+ function createRateGate(initialRate) {
70
+ let rate = Math.max(MIN_RATE, initialRate);
71
+ let capacity = Math.max(1, rate);
72
+ let tokens = capacity;
73
+ let lastRefill = Date.now();
74
+ let pausedUntil = 0;
75
+ const queue = [];
76
+ let timer = null;
77
+ const schedule = (ms) => {
78
+ if (timer !== null)
79
+ return;
80
+ timer = setTimeout(() => {
81
+ timer = null;
82
+ pump();
83
+ }, Math.max(ms, 1));
84
+ };
85
+ const refill = () => {
86
+ const now = Date.now();
87
+ const elapsed = (now - lastRefill) / 1000;
88
+ if (elapsed > 0) {
89
+ tokens = Math.min(capacity, tokens + elapsed * rate);
90
+ lastRefill = now;
91
+ }
92
+ };
93
+ const pump = () => {
94
+ const now = Date.now();
95
+ if (pausedUntil > now) {
96
+ schedule(pausedUntil - now);
97
+ return;
98
+ }
99
+ refill();
100
+ while (tokens >= 1) {
101
+ const release = queue.shift();
102
+ if (!release)
103
+ break;
104
+ tokens -= 1;
105
+ release();
106
+ }
107
+ if (queue.length > 0) {
108
+ // Wake when the next whole token will have accrued.
109
+ schedule(Math.ceil(((1 - tokens) / rate) * 1000));
110
+ }
111
+ };
112
+ return {
113
+ acquire: () => new Promise((resolve) => {
114
+ queue.push(resolve);
115
+ pump();
116
+ }),
117
+ setRate: (ratePerSecond) => {
118
+ rate = Math.max(MIN_RATE, ratePerSecond);
119
+ capacity = Math.max(1, rate);
120
+ tokens = Math.min(tokens, capacity);
121
+ lastRefill = Date.now();
122
+ pump();
123
+ },
124
+ pauseFor: (ms) => {
125
+ const until = Date.now() + Math.max(0, ms);
126
+ if (until > pausedUntil)
127
+ pausedUntil = until;
128
+ schedule(ms);
129
+ },
130
+ };
131
+ }
132
+ // ---------------------------------------------------------------------------
133
+ // 429 / rate-limit header parsing
134
+ // ---------------------------------------------------------------------------
135
+ /**
136
+ * If `err` is a transport HTTP 429, return its response `Headers`; else null.
137
+ * Duck-typed against the `@solana/errors` HTTP-error context
138
+ * (`{ statusCode, headers }`) so we avoid a hard dependency on the error code.
139
+ */
140
+ function http429Headers(err) {
141
+ const ctx = err
142
+ ?.context;
143
+ if (ctx?.statusCode === 429 && ctx.headers instanceof Headers) {
144
+ return ctx.headers;
145
+ }
146
+ return null;
147
+ }
148
+ /** Parse `Retry-After` (delta-seconds or HTTP-date) into ms, or null. */
149
+ function parseRetryAfterMs(headers) {
150
+ const v = headers.get('retry-after');
151
+ if (v === null || v === '')
152
+ return null;
153
+ const secs = Number(v);
154
+ if (Number.isFinite(secs))
155
+ return Math.max(0, secs * 1000);
156
+ const when = Date.parse(v);
157
+ return Number.isNaN(when) ? null : Math.max(0, when - Date.now());
158
+ }
159
+ /** Provider-advertised requests/second limit (`x-ratelimit-rps-limit`), or null. */
160
+ function parseRpsLimit(headers) {
161
+ const v = Number(headers.get('x-ratelimit-rps-limit'));
162
+ return Number.isFinite(v) && v > 0 ? v : null;
163
+ }
164
+ // ---------------------------------------------------------------------------
165
+ // Implementation
166
+ // ---------------------------------------------------------------------------
167
+ /**
168
+ * Create a {@link SolanaRpc} whose transport is backed by an opossum circuit
169
+ * breaker. Reads and writes flow through the primary transport; when it
170
+ * becomes unhealthy the circuit opens and subsequent calls are routed to
171
+ * the fallback transport until the primary recovers.
172
+ */
173
+ export function createCircuitBreakerRpc({ primaryUrl, fallbackUrl, circuitBreakerOptions: opts = {}, }) {
174
+ const primaryTransport = createDefaultRpcTransport({ url: primaryUrl });
175
+ const fallbackTransport = createDefaultRpcTransport({ url: fallbackUrl });
176
+ // Throttling is always on. `maxRequestsPerSecond` is the *ceiling*: every
177
+ // request flows through an adaptive token bucket that backs off on HTTP 429
178
+ // (honoring `Retry-After` and `x-ratelimit-rps-limit` when present, AIMD
179
+ // otherwise) and recovers back toward the ceiling on sustained success.
180
+ const ceilingRate = opts.maxRequestsPerSecond !== undefined && opts.maxRequestsPerSecond > 0
181
+ ? opts.maxRequestsPerSecond
182
+ : DEFAULT_MAX_RPS;
183
+ const gate = createRateGate(ceilingRate);
184
+ let currentRate = ceilingRate;
185
+ let successStreak = 0;
186
+ const onError = (err) => {
187
+ const headers = http429Headers(err);
188
+ if (!headers)
189
+ return; // only adapt to rate-limit (429) failures
190
+ successStreak = 0;
191
+ const advertised = parseRpsLimit(headers);
192
+ const next = advertised !== null
193
+ ? Math.min(ceilingRate, Math.max(MIN_RATE, advertised * RATE_SAFETY_FACTOR))
194
+ : Math.max(MIN_RATE, currentRate * AIMD_DECREASE);
195
+ if (next !== currentRate) {
196
+ currentRate = next;
197
+ gate.setRate(currentRate);
198
+ }
199
+ const retryAfter = parseRetryAfterMs(headers);
200
+ gate.pauseFor(retryAfter ?? DEFAULT_COOLDOWN_MS);
201
+ logger.warn(`[rpc-circuit-breaker] 429 — throttling to ${currentRate.toFixed(1)} req/s` +
202
+ `, cooling down ${retryAfter ?? DEFAULT_COOLDOWN_MS}ms`);
203
+ };
204
+ const onSuccess = () => {
205
+ if (currentRate >= ceilingRate)
206
+ return;
207
+ if (++successStreak >= RECOVERY_SUCCESSES) {
208
+ successStreak = 0;
209
+ currentRate = Math.min(ceilingRate, currentRate + 1);
210
+ gate.setRate(currentRate);
211
+ }
212
+ };
213
+ const breaker = new CircuitBreaker((request) => primaryTransport(request), {
214
+ timeout: opts.timeout ?? 10_000,
215
+ errorThresholdPercentage: opts.errorThresholdPercentage ?? 25,
216
+ resetTimeout: opts.resetTimeout ?? 60_000,
217
+ volumeThreshold: opts.volumeThreshold ?? 3,
218
+ ...(opts.maxConcurrent !== undefined && opts.maxConcurrent > 0
219
+ ? { capacity: opts.maxConcurrent }
220
+ : {}),
221
+ });
222
+ breaker.fallback((request) => fallbackTransport(request));
223
+ breaker.on('open', () => {
224
+ logger.warn('[rpc-circuit-breaker] circuit OPEN — routing to fallback RPC');
225
+ });
226
+ breaker.on('halfOpen', () => {
227
+ logger.info('[rpc-circuit-breaker] circuit HALF-OPEN — probing primary RPC');
228
+ });
229
+ breaker.on('close', () => {
230
+ logger.info('[rpc-circuit-breaker] circuit CLOSED — primary RPC recovered');
231
+ });
232
+ // Adapt the rate to the *primary's* health via opossum's events: `failure`
233
+ // fires whenever the primary call rejects (a 429 included) even when the
234
+ // fallback then masks it by resolving `fire()`, and `success` fires on a
235
+ // healthy primary call. A plain try/catch around `fire()` would miss the
236
+ // fallback-masked 429s entirely.
237
+ breaker.on('failure', (err) => onError(err));
238
+ breaker.on('success', () => onSuccess());
239
+ const transport = (async (request) => {
240
+ // Throttle entry to the breaker so we stay under the provider's rate
241
+ // limit; the queue wait sits outside `fire`, so opossum's per-request
242
+ // timeout only measures the actual transport call.
243
+ await gate.acquire();
244
+ return breaker.fire(request);
245
+ });
246
+ return createSolanaRpcFromTransport(transport);
247
+ }
248
+ /**
249
+ * Convenience: pick a sensible public fallback URL based on the primary URL.
250
+ *
251
+ * - Primary contains `devnet` → devnet public RPC
252
+ * - Everything else → mainnet-beta public RPC
253
+ */
254
+ export function defaultFallbackUrl(primaryUrl) {
255
+ if (/devnet/i.test(primaryUrl))
256
+ return DEFAULT_DEVNET_RPC;
257
+ return DEFAULT_MAINNET_RPC;
258
+ }