@ar.io/sdk 3.24.0 → 4.0.0-alpha.2

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 (169) hide show
  1. package/README.md +757 -589
  2. package/lib/esm/cli/cli.js +188 -152
  3. package/lib/esm/cli/commands/antCommands.js +23 -58
  4. package/lib/esm/cli/commands/arnsPurchaseCommands.js +48 -30
  5. package/lib/esm/cli/commands/escrowCommands.js +227 -0
  6. package/lib/esm/cli/commands/gatewayWriteCommands.js +140 -23
  7. package/lib/esm/cli/commands/pruneCommands.js +154 -0
  8. package/lib/esm/cli/commands/readCommands.js +22 -3
  9. package/lib/esm/cli/commands/transfer.js +6 -6
  10. package/lib/esm/cli/options.js +124 -58
  11. package/lib/esm/cli/utils.js +303 -175
  12. package/lib/esm/common/ant-registry.js +17 -143
  13. package/lib/esm/common/ant.js +44 -1167
  14. package/lib/esm/common/faucet.js +17 -6
  15. package/lib/esm/common/index.js +0 -4
  16. package/lib/esm/common/io.js +25 -1412
  17. package/lib/esm/constants.js +13 -19
  18. package/lib/esm/solana/ant-readable.js +724 -0
  19. package/lib/esm/solana/ant-registry-readable.js +133 -0
  20. package/lib/esm/solana/ant-registry-writeable.js +472 -0
  21. package/lib/esm/solana/ant-writeable.js +384 -0
  22. package/lib/esm/solana/ata.js +70 -0
  23. package/lib/esm/solana/canonical-message.js +128 -0
  24. package/lib/esm/solana/clusters.js +111 -0
  25. package/lib/esm/solana/constants.js +146 -0
  26. package/lib/esm/solana/delegation-math.js +112 -0
  27. package/lib/esm/solana/deserialize.js +711 -0
  28. package/lib/esm/solana/escrow.js +839 -0
  29. package/lib/{cjs/utils/json.js → esm/solana/events.js} +15 -10
  30. package/lib/esm/solana/funding-plan.js +699 -0
  31. package/lib/esm/solana/index.js +126 -0
  32. package/lib/esm/solana/instruction.js +39 -0
  33. package/lib/esm/solana/io-readable.js +2182 -0
  34. package/lib/esm/solana/io-writeable.js +3196 -0
  35. package/lib/esm/solana/json-rpc.js +90 -0
  36. package/lib/esm/solana/metadata.js +81 -0
  37. package/lib/esm/solana/mpl-core.js +192 -0
  38. package/lib/esm/solana/pda.js +332 -0
  39. package/lib/esm/solana/predict-prescribed-observers.js +110 -0
  40. package/lib/esm/solana/retry.js +117 -0
  41. package/lib/esm/solana/rpc-circuit-breaker.js +258 -0
  42. package/lib/esm/solana/send.js +372 -0
  43. package/lib/esm/solana/spawn-ant.js +224 -0
  44. package/lib/esm/solana/types.js +1 -0
  45. package/lib/esm/types/ant.js +27 -15
  46. package/lib/esm/types/io.js +8 -11
  47. package/lib/esm/utils/ant.js +0 -63
  48. package/lib/esm/utils/index.js +0 -3
  49. package/lib/esm/version.js +1 -1
  50. package/lib/types/cli/commands/antCommands.d.ts +5 -13
  51. package/lib/types/cli/commands/arnsPurchaseCommands.d.ts +33 -7
  52. package/lib/types/cli/commands/escrowCommands.d.ts +68 -0
  53. package/lib/types/cli/commands/gatewayWriteCommands.d.ts +12 -11
  54. package/lib/types/cli/commands/pruneCommands.d.ts +31 -0
  55. package/lib/types/cli/commands/readCommands.d.ts +27 -22
  56. package/lib/types/cli/commands/transfer.d.ts +9 -9
  57. package/lib/types/cli/options.d.ts +76 -21
  58. package/lib/types/cli/types.d.ts +11 -13
  59. package/lib/types/cli/utils.d.ts +71 -31
  60. package/lib/types/common/ant-registry.d.ts +49 -47
  61. package/lib/types/common/ant.d.ts +54 -539
  62. package/lib/types/common/faucet.d.ts +20 -8
  63. package/lib/types/common/index.d.ts +0 -3
  64. package/lib/types/common/io.d.ts +66 -258
  65. package/lib/types/constants.d.ts +11 -18
  66. package/lib/types/solana/ant-readable.d.ts +180 -0
  67. package/lib/types/solana/ant-registry-readable.d.ts +105 -0
  68. package/lib/types/solana/ant-registry-writeable.d.ts +249 -0
  69. package/lib/types/solana/ant-writeable.d.ts +177 -0
  70. package/lib/types/solana/ata.d.ts +44 -0
  71. package/lib/types/solana/canonical-message.d.ts +121 -0
  72. package/lib/types/solana/clusters.d.ts +109 -0
  73. package/lib/types/solana/constants.d.ts +119 -0
  74. package/lib/types/solana/delegation-math.d.ts +45 -0
  75. package/lib/types/solana/deserialize.d.ts +262 -0
  76. package/lib/types/solana/escrow.d.ts +480 -0
  77. package/lib/types/solana/events.d.ts +38 -0
  78. package/lib/types/solana/funding-plan.d.ts +225 -0
  79. package/lib/types/solana/index.d.ts +87 -0
  80. package/lib/types/solana/instruction.d.ts +39 -0
  81. package/lib/types/solana/io-readable.d.ts +499 -0
  82. package/lib/types/solana/io-writeable.d.ts +893 -0
  83. package/lib/types/solana/json-rpc.d.ts +47 -0
  84. package/lib/types/solana/metadata.d.ts +84 -0
  85. package/lib/types/solana/mpl-core.d.ts +120 -0
  86. package/lib/types/solana/pda.d.ts +95 -0
  87. package/lib/types/solana/predict-prescribed-observers.d.ts +28 -0
  88. package/lib/types/solana/retry.d.ts +62 -0
  89. package/lib/types/solana/rpc-circuit-breaker.d.ts +78 -0
  90. package/lib/types/solana/send.d.ts +94 -0
  91. package/lib/types/solana/spawn-ant.d.ts +145 -0
  92. package/lib/types/solana/types.d.ts +82 -0
  93. package/lib/types/types/ant-registry.d.ts +43 -4
  94. package/lib/types/types/ant.d.ts +114 -96
  95. package/lib/types/types/common.d.ts +18 -74
  96. package/lib/types/types/faucet.d.ts +2 -2
  97. package/lib/types/types/io.d.ts +244 -158
  98. package/lib/types/types/token.d.ts +0 -12
  99. package/lib/types/utils/ant.d.ts +1 -12
  100. package/lib/types/utils/index.d.ts +0 -3
  101. package/lib/types/version.d.ts +1 -1
  102. package/package.json +36 -33
  103. package/lib/cjs/cli/cli.js +0 -822
  104. package/lib/cjs/cli/commands/antCommands.js +0 -113
  105. package/lib/cjs/cli/commands/arnsPurchaseCommands.js +0 -212
  106. package/lib/cjs/cli/commands/gatewayWriteCommands.js +0 -210
  107. package/lib/cjs/cli/commands/readCommands.js +0 -215
  108. package/lib/cjs/cli/commands/transfer.js +0 -159
  109. package/lib/cjs/cli/options.js +0 -470
  110. package/lib/cjs/cli/types.js +0 -2
  111. package/lib/cjs/cli/utils.js +0 -639
  112. package/lib/cjs/common/ant-registry.js +0 -155
  113. package/lib/cjs/common/ant-versions.js +0 -93
  114. package/lib/cjs/common/ant.js +0 -1182
  115. package/lib/cjs/common/arweave.js +0 -27
  116. package/lib/cjs/common/contracts/ao-process.js +0 -224
  117. package/lib/cjs/common/error.js +0 -64
  118. package/lib/cjs/common/faucet.js +0 -150
  119. package/lib/cjs/common/hyperbeam/hb.js +0 -173
  120. package/lib/cjs/common/index.js +0 -42
  121. package/lib/cjs/common/io.js +0 -1423
  122. package/lib/cjs/common/logger.js +0 -83
  123. package/lib/cjs/common/loggers/winston.js +0 -68
  124. package/lib/cjs/common/marketplace.js +0 -731
  125. package/lib/cjs/common/turbo.js +0 -223
  126. package/lib/cjs/constants.js +0 -41
  127. package/lib/cjs/node/index.js +0 -39
  128. package/lib/cjs/package.json +0 -1
  129. package/lib/cjs/types/ant-registry.js +0 -2
  130. package/lib/cjs/types/ant.js +0 -168
  131. package/lib/cjs/types/common.js +0 -2
  132. package/lib/cjs/types/faucet.js +0 -2
  133. package/lib/cjs/types/index.js +0 -37
  134. package/lib/cjs/types/io.js +0 -51
  135. package/lib/cjs/types/token.js +0 -116
  136. package/lib/cjs/utils/ant.js +0 -108
  137. package/lib/cjs/utils/ao.js +0 -432
  138. package/lib/cjs/utils/arweave.js +0 -285
  139. package/lib/cjs/utils/base64.js +0 -62
  140. package/lib/cjs/utils/hash.js +0 -56
  141. package/lib/cjs/utils/index.js +0 -38
  142. package/lib/cjs/utils/processes.js +0 -173
  143. package/lib/cjs/utils/random.js +0 -30
  144. package/lib/cjs/utils/schema.js +0 -15
  145. package/lib/cjs/utils/url.js +0 -37
  146. package/lib/cjs/version.js +0 -20
  147. package/lib/cjs/web/index.js +0 -41
  148. package/lib/esm/common/ant-versions.js +0 -87
  149. package/lib/esm/common/arweave.js +0 -21
  150. package/lib/esm/common/contracts/ao-process.js +0 -220
  151. package/lib/esm/common/hyperbeam/hb.js +0 -169
  152. package/lib/esm/common/marketplace.js +0 -724
  153. package/lib/esm/common/turbo.js +0 -215
  154. package/lib/esm/node/index.js +0 -20
  155. package/lib/esm/utils/ao.js +0 -420
  156. package/lib/esm/utils/arweave.js +0 -271
  157. package/lib/esm/utils/processes.js +0 -167
  158. package/lib/esm/web/index.js +0 -20
  159. package/lib/types/common/ant-versions.d.ts +0 -39
  160. package/lib/types/common/arweave.d.ts +0 -17
  161. package/lib/types/common/contracts/ao-process.d.ts +0 -47
  162. package/lib/types/common/hyperbeam/hb.d.ts +0 -88
  163. package/lib/types/common/marketplace.d.ts +0 -568
  164. package/lib/types/common/turbo.d.ts +0 -61
  165. package/lib/types/node/index.d.ts +0 -20
  166. package/lib/types/utils/ao.d.ts +0 -80
  167. package/lib/types/utils/arweave.d.ts +0 -79
  168. package/lib/types/utils/processes.d.ts +0 -39
  169. package/lib/types/web/index.d.ts +0 -20
@@ -28,38 +28,66 @@ export const optionMap = {
28
28
  },
29
29
  mainnet: {
30
30
  alias: '--mainnet',
31
- description: 'Run against the AR.IO mainnet process',
31
+ description: 'Run against AR.IO mainnet (Solana)',
32
32
  type: 'boolean',
33
33
  },
34
- testnet: {
35
- alias: '--testnet',
36
- description: 'Run against the AR.IO testnet process',
37
- type: 'boolean',
34
+ rpcUrl: {
35
+ alias: '--rpc-url <rpcUrl>',
36
+ description: 'Solana RPC URL (defaults to mainnet-beta)',
38
37
  },
39
- devnet: {
40
- alias: '--dev, --devnet',
41
- description: 'Run against the AR.IO devnet process',
42
- type: 'boolean',
38
+ antProgramId: {
39
+ alias: '--ant-program-id <antProgramId>',
40
+ description: 'Override the ario-ant program id (Solana backend). Defaults to the SDK-bundled mainnet id; ' +
41
+ 'set this when querying localnet/devnet (see migration/localnet/out/localnet.env -> ARIO_ANT_PROGRAM_ID).',
42
+ },
43
+ coreProgramId: {
44
+ alias: '--core-program-id <coreProgramId>',
45
+ description: 'Override the ario-core program id (Solana backend). See ARIO_CORE_PROGRAM_ID in localnet.env.',
46
+ },
47
+ garProgramId: {
48
+ alias: '--gar-program-id <garProgramId>',
49
+ description: 'Override the ario-gar program id (Solana backend). See ARIO_GAR_PROGRAM_ID in localnet.env.',
50
+ },
51
+ arnsProgramId: {
52
+ alias: '--arns-program-id <arnsProgramId>',
53
+ description: 'Override the ario-arns program id (Solana backend). See ARIO_ARNS_PROGRAM_ID in localnet.env.',
54
+ },
55
+ escrowProgramId: {
56
+ alias: '--escrow-program-id <escrowProgramId>',
57
+ description: 'Override the ario-ant-escrow program id. Defaults to the SDK-bundled placeholder; ' +
58
+ 'set when running against a deployed devnet/mainnet instance.',
59
+ },
60
+ ant: {
61
+ alias: '--ant <antMint>',
62
+ description: 'The Metaplex Core ANT mint pubkey (base58)',
43
63
  },
44
- arioProcessId: {
45
- alias: '--ario-process-id <arioProcessId>',
46
- description: 'Run against a custom AR.IO process id',
64
+ recipientArweave: {
65
+ alias: '--recipient-arweave <jwkFile>',
66
+ description: 'Path to an Arweave JWK file. The "n" field (RSA-4096 modulus) is used as the escrow recipient identity.',
47
67
  },
48
- antRegistryProcessId: {
49
- alias: '--ant-registry-process-id <antRegistryProcessId>',
50
- description: 'Run against a custom ANT registry process id',
68
+ recipientEthereum: {
69
+ alias: '--recipient-ethereum <0xAddress>',
70
+ description: 'A 0x-prefixed Ethereum address to use as the escrow recipient identity.',
51
71
  },
52
- hyperbeamUrl: {
53
- alias: '--hyperbeam-url <hyperbeamUrl>',
54
- description: 'The URL for a custom hyperbeam node',
72
+ newRecipientArweave: {
73
+ alias: '--new-recipient-arweave <jwkFile>',
74
+ description: 'New Arweave JWK file (for `escrow update-recipient`).',
55
75
  },
56
- cuUrl: {
57
- alias: '--cu-url <cuUrl>',
58
- description: 'The URL for a custom compute unit',
76
+ newRecipientEthereum: {
77
+ alias: '--new-recipient-ethereum <0xAddress>',
78
+ description: 'New Ethereum address (for `escrow update-recipient`).',
59
79
  },
60
- paymentUrl: {
61
- alias: '--payment-url <paymentUrl>',
62
- description: 'The URL for a custom turbo payment service',
80
+ signatureFile: {
81
+ alias: '--signature-file <path>',
82
+ description: 'Path to a binary signature file (512 bytes for Arweave PSS, 65 bytes for Ethereum r||s||v).',
83
+ },
84
+ saltLen: {
85
+ alias: '--salt-len <bytes>',
86
+ description: 'PSS salt length (Arweave only; defaults to 32, the wallet-default).',
87
+ },
88
+ claimant: {
89
+ alias: '--claimant <pubkey>',
90
+ description: 'Solana pubkey that will receive the ANT on claim.',
63
91
  },
64
92
  processId: {
65
93
  alias: '--process-id <processId>',
@@ -137,10 +165,6 @@ export const optionMap = {
137
165
  description: 'The allowed delegates for the gateway. By default this is empty, meaning all are allowed delegate stake unless delegating is explicitly disallowed by the gateway',
138
166
  type: 'array',
139
167
  },
140
- services: {
141
- alias: '--services <services>',
142
- description: 'JSON string of gateway services configuration (e.g., \'{"bundlers":[{"fqdn":"bundler.example.com","port":443,"protocol":"https","path":"/bundler"}]}\')',
143
- },
144
168
  skipConfirmation: {
145
169
  alias: '--skip-confirmation',
146
170
  description: 'Skip confirmation prompts',
@@ -236,7 +260,11 @@ export const optionMap = {
236
260
  },
237
261
  transactionId: {
238
262
  alias: '--transaction-id <transactionId>',
239
- description: 'The transaction ID to interact with',
263
+ description: 'The content target (Arweave TX ID, IPFS CID, etc.)',
264
+ },
265
+ targetProtocol: {
266
+ alias: '--target-protocol <targetProtocol>',
267
+ description: 'Storage protocol for the target: "arweave" (default) or "ipfs"',
240
268
  },
241
269
  ttlSeconds: {
242
270
  alias: '--ttl-seconds <ttlSeconds>',
@@ -275,18 +303,37 @@ export const optionMap = {
275
303
  },
276
304
  fundFrom: {
277
305
  alias: '--fund-from <fundFrom>',
278
- description: 'Where to fund the action from. e.g. "balance", "stakes", or "any',
306
+ description: 'Funding source: balance | stakes | withdrawal | plan | any | turbo. ' +
307
+ "'stakes' requires --gateway-address (uses delegation; add --fund-as-operator " +
308
+ "for operator stake). 'withdrawal' requires --withdrawal-id. 'plan' / 'any' " +
309
+ 'use the multi-source funding plan (see --funding-plan-json or auto-discover).',
310
+ },
311
+ gatewayAddress: {
312
+ alias: '--gateway-address <gatewayAddress>',
313
+ description: 'Gateway operator address for funding from stakes. Required when --fund-from is "stakes"',
314
+ },
315
+ fundAsOperator: {
316
+ alias: '--fund-as-operator',
317
+ description: 'Fund from operator stake instead of delegation (default: delegation)',
318
+ type: 'boolean',
319
+ },
320
+ withdrawalId: {
321
+ alias: '--withdrawal-id <withdrawalId>',
322
+ description: 'Withdrawal vault id (u64) — required when --fund-from is "withdrawal" (Solana). ' +
323
+ 'Find with `ar.io listMyWithdrawals` or query Withdrawal PDAs directly.',
324
+ },
325
+ fundingPlanJson: {
326
+ alias: '--funding-plan-json <json>',
327
+ description: 'Explicit funding plan as JSON: [{"kind":"balance","amount":"100"},...]. ' +
328
+ "Used when --fund-from is 'plan' or 'any' to bypass auto-discovery. " +
329
+ "kind is 'balance' | 'delegation' | 'operatorStake' | 'withdrawal'; " +
330
+ 'amount is a string-encoded mARIO bigint. Sum must equal the operation cost.',
279
331
  },
280
332
  revokable: {
281
333
  alias: '--revokable',
282
334
  description: 'Whether the vaulted transfer is revokable by the sender. Defaults to false',
283
335
  type: 'boolean',
284
336
  },
285
- removeControllers: {
286
- alias: '--remove-controllers',
287
- description: 'Whether to remove controllers when transferring ANT ownership. Defaults to true',
288
- type: 'boolean',
289
- },
290
337
  lockLengthMs: {
291
338
  alias: '--lock-length-ms <lockLengthMs>',
292
339
  description: 'The length of time in milliseconds to lock the vault for',
@@ -303,9 +350,9 @@ export const optionMap = {
303
350
  alias: '--logo <logo>',
304
351
  description: 'The ANT logo',
305
352
  },
306
- module: {
307
- alias: '--module <module>',
308
- description: 'The module ID to use for spawning the ANT process',
353
+ metadataUri: {
354
+ alias: '--metadata-uri <metadataUri>',
355
+ description: 'spawn-ant only: URI baked into the Metaplex Core asset (e.g. "ar://<txid>" or "https://<gateway>/raw/<txid>"). Build the JSON with `buildAntMetadata` from `@ar.io/sdk` and upload via Turbo. See sdk/scripts/devnet-validation/populate-ant.ts.',
309
356
  },
310
357
  token: {
311
358
  alias: '-t, --token <type>',
@@ -321,10 +368,34 @@ export const optionMap = {
321
368
  alias: '--referrer <referrer>',
322
369
  description: 'The referrer for ArNS purchase tracking',
323
370
  },
324
- reassignAffiliatedNames: {
325
- alias: '--reassign-affiliated-names',
326
- description: 'Reassign all affiliated names to the new process',
327
- type: 'boolean',
371
+ // -----------------------------------------------------------------
372
+ // Prune / cleanup flags (Solana-only — see pruneCommands.ts)
373
+ // -----------------------------------------------------------------
374
+ gateway: {
375
+ alias: '--gateway <gateway>',
376
+ description: 'The gateway operator address (prune / finalize commands)',
377
+ },
378
+ delegator: {
379
+ alias: '--delegator <delegator>',
380
+ description: 'The delegator address (close-empty-delegation)',
381
+ },
382
+ observer: {
383
+ alias: '--observer <observer>',
384
+ description: 'The observer address (close-observation)',
385
+ },
386
+ max: {
387
+ alias: '--max <max>',
388
+ description: 'Per-tx batch size (1-255, u8) for prune-expired-names / prune-returned-names',
389
+ },
390
+ arnsRecords: {
391
+ alias: '--arns-records <arnsRecords...>',
392
+ description: 'Explicit ArnsRecord PDAs to prune. Default: discover via getExpiredArnsRecords.',
393
+ type: 'array',
394
+ },
395
+ returnedNames: {
396
+ alias: '--returned-names <returnedNames...>',
397
+ description: 'Explicit ReturnedName PDAs to prune. Default: discover via getExpiredReturnedNames.',
398
+ type: 'array',
328
399
  },
329
400
  };
330
401
  export const walletOptions = [
@@ -335,21 +406,24 @@ export const walletOptions = [
335
406
  ];
336
407
  export const globalOptions = [
337
408
  ...walletOptions,
338
- optionMap.devnet,
339
- optionMap.testnet,
340
409
  optionMap.mainnet,
341
410
  optionMap.debug,
342
- optionMap.arioProcessId,
343
- optionMap.cuUrl,
344
- optionMap.hyperbeamUrl,
411
+ optionMap.rpcUrl,
412
+ optionMap.antProgramId,
413
+ optionMap.coreProgramId,
414
+ optionMap.garProgramId,
415
+ optionMap.arnsProgramId,
345
416
  ];
346
417
  export const writeActionOptions = [optionMap.skipConfirmation, optionMap.tags];
347
418
  export const arnsPurchaseOptions = [
348
419
  ...writeActionOptions,
349
420
  optionMap.name,
350
421
  optionMap.fundFrom,
422
+ optionMap.gatewayAddress,
423
+ optionMap.fundAsOperator,
424
+ optionMap.withdrawalId,
425
+ optionMap.fundingPlanJson,
351
426
  optionMap.paidBy,
352
- optionMap.paymentUrl,
353
427
  optionMap.referrer,
354
428
  ];
355
429
  export const epochOptions = [optionMap.epochIndex, optionMap.timestamp];
@@ -375,7 +449,6 @@ export const tokenCostOptions = [
375
449
  optionMap.quantity,
376
450
  optionMap.address,
377
451
  optionMap.fundFrom,
378
- optionMap.paymentUrl,
379
452
  ];
380
453
  export const transferOptions = [
381
454
  ...writeActionOptions,
@@ -413,7 +486,6 @@ export const updateGatewaySettingsOptions = [
413
486
  optionMap.fqdn,
414
487
  optionMap.port,
415
488
  optionMap.protocol,
416
- optionMap.services,
417
489
  ];
418
490
  export const joinNetworkOptions = [
419
491
  ...updateGatewaySettingsOptions,
@@ -433,14 +505,14 @@ export const antStateOptions = [
433
505
  optionMap.ticker,
434
506
  optionMap.name,
435
507
  optionMap.description,
436
- optionMap.controllers,
437
508
  optionMap.ttlSeconds,
438
509
  optionMap.logo,
439
- optionMap.module,
510
+ optionMap.metadataUri,
440
511
  ];
441
512
  export const setAntBaseNameOptions = [
442
513
  optionMap.processId,
443
514
  optionMap.transactionId,
515
+ optionMap.targetProtocol,
444
516
  optionMap.ttlSeconds,
445
517
  optionMap.owner,
446
518
  optionMap.displayName,
@@ -453,12 +525,6 @@ export const setAntUndernameOptions = [
453
525
  ...setAntBaseNameOptions,
454
526
  optionMap.undername,
455
527
  ];
456
- export const upgradeAntOptions = [
457
- optionMap.processId,
458
- optionMap.names,
459
- optionMap.reassignAffiliatedNames,
460
- ...writeActionOptions,
461
- ];
462
528
  export const transferRecordOwnershipOptions = [
463
529
  optionMap.processId,
464
530
  optionMap.undername,