@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
@@ -1,149 +1,23 @@
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
- import { ANT_REGISTRY_ID } from '../constants.js';
17
- import { isProcessConfiguration, isProcessIdConfiguration, } from '../types/index.js';
18
- import { createAoSigner } from '../utils/ao.js';
19
- import { AOProcess, InvalidContractConfigurationError } from './index.js';
20
- import { Logger } from './logger.js';
21
1
  export class ANTRegistry {
22
2
  static init(config) {
23
- if (config !== undefined && 'signer' in config) {
24
- return new AoANTRegistryWriteable(config);
25
- }
26
- return new AoANTRegistryReadable(config);
27
- }
28
- }
29
- export class AoANTRegistryReadable {
30
- process;
31
- hyperbeamUrl;
32
- checkHyperBeamPromise;
33
- logger;
34
- constructor(config) {
35
- this.logger = config?.logger ?? Logger.default;
36
- if (config === undefined || Object.keys(config).length === 0) {
37
- this.process = new AOProcess({
38
- processId: ANT_REGISTRY_ID,
39
- });
40
- }
41
- else if (isProcessConfiguration(config)) {
42
- this.process = config.process;
43
- }
44
- else if (isProcessIdConfiguration(config)) {
45
- this.process = new AOProcess({
46
- processId: config.processId,
47
- });
48
- }
49
- else {
50
- throw new InvalidContractConfigurationError();
51
- }
52
- if (config?.hyperbeamUrl !== undefined) {
53
- this.hyperbeamUrl = new URL(config.hyperbeamUrl).toString();
54
- this.checkHyperBeamPromise = this.checkHyperBeamCompatibility();
55
- }
56
- }
57
- /**
58
- * Check if the process is HyperBeam compatible. If so, we'll use the HyperBeam node to fetch the state.
59
- *
60
- * @returns {Promise<boolean>} True if the process is HyperBeam compatible, false otherwise.
61
- */
62
- async checkHyperBeamCompatibility() {
63
- if (this.hyperbeamUrl === undefined) {
64
- return Promise.resolve(false);
65
- }
66
- if (this.checkHyperBeamPromise !== undefined) {
67
- return this.checkHyperBeamPromise;
68
- }
69
- this.logger.debug('Checking HyperBeam compatibility');
70
- this.checkHyperBeamPromise = fetch(
71
- // use /now to force a refresh of the cache state, then compute when calling it for keys
72
- `${this.hyperbeamUrl.toString()}${this.process.processId}~process@1.0/now/cache/acl`, {
73
- method: 'HEAD',
74
- signal: AbortSignal.timeout(5000), // 5 second timeout
75
- })
76
- .then((res) => {
77
- if (res.ok) {
78
- this.logger.debug('HyperBeam compatible');
79
- return true;
3
+ return (async () => {
4
+ if ('signer' in config) {
5
+ const { SolanaANTRegistryWriteable } = await import('../solana/ant-registry-writeable.js');
6
+ return new SolanaANTRegistryWriteable({
7
+ rpc: config.rpc,
8
+ signer: config.signer,
9
+ commitment: config.commitment,
10
+ logger: config.logger,
11
+ antProgramId: config.antProgramId,
12
+ });
80
13
  }
81
- this.logger.debug('HyperBeam not compatible');
82
- return false;
83
- })
84
- .catch((error) => {
85
- this.logger.debug('Failed to check HyperBeam compatibility', {
86
- cause: error,
14
+ const { SolanaANTRegistryReadable } = await import('../solana/ant-registry-readable.js');
15
+ return new SolanaANTRegistryReadable({
16
+ rpc: config.rpc,
17
+ commitment: config.commitment,
18
+ logger: config.logger,
19
+ antProgramId: config.antProgramId,
87
20
  });
88
- return false;
89
- });
90
- return this.checkHyperBeamPromise;
91
- }
92
- // Should we rename this to "getANTsByAddress"? seems more clear, though not same as handler name
93
- async accessControlList({ address, }) {
94
- if (await this.checkHyperBeamCompatibility()) {
95
- let retries = 0;
96
- while (retries < 3) {
97
- try {
98
- this.logger.debug('Fetching ant registry acl for address from hyperbeam', address);
99
- const res = await fetch(`${this.hyperbeamUrl?.toString()}${this.process.processId}~process@1.0/compute/cache/acl/${address}/serialize~json@1.0`);
100
- if (res.status !== 200) {
101
- this.logger.debug('Failed to fetch ant registry acl for address from hyperbeam', address, res.status, res.statusText);
102
- throw new Error(`Failed to fetch ant registry acl for address ${address}: ${res?.statusText ?? 'Unknown error'}`);
103
- }
104
- this.logger.debug('Fetched ant registry acl for address from hyperbeam', address);
105
- const json = (await res.json());
106
- return {
107
- Owned: json.Owned,
108
- Controlled: json.Controlled,
109
- };
110
- }
111
- catch (_error) {
112
- retries++;
113
- this.logger.debug('Failed to fetch ant registry acl for address from hyperbeam', address, retries);
114
- await new Promise((resolve) => setTimeout(resolve, 1000 * retries ** 2));
115
- }
116
- }
117
- }
118
- this.logger.debug('Fetching ant registry acl for address from process', address);
119
- return this.process.read({
120
- tags: [
121
- { name: 'Action', value: 'Access-Control-List' },
122
- { name: 'Address', value: address },
123
- ],
124
- });
125
- }
126
- /*
127
- * This is the same as accessControlList, but with a cleaner DX to make it clearer
128
- * that we're fetching the list of ANTs owned or controlled by an address.
129
- */
130
- async getAntsForAddress({ address, }) {
131
- return this.accessControlList({ address });
132
- }
133
- }
134
- export class AoANTRegistryWriteable extends AoANTRegistryReadable {
135
- signer;
136
- constructor({ signer, ...config }) {
137
- super(config);
138
- this.signer = createAoSigner(signer);
139
- }
140
- async register({ processId, }) {
141
- return this.process.send({
142
- tags: [
143
- { name: 'Action', value: 'Register' },
144
- { name: 'Process-Id', value: processId },
145
- ],
146
- signer: this.signer,
147
- });
21
+ })();
148
22
  }
149
23
  }