@artblocks/abx-sdk 0.1.0-alpha.2 → 0.1.0-alpha.20

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 (139) hide show
  1. package/README.md +131 -0
  2. package/dist/abi/generated.d.ts +8502 -129
  3. package/dist/abi/generated.d.ts.map +1 -1
  4. package/dist/abi/generated.js +40 -22
  5. package/dist/abi/generated.js.map +1 -1
  6. package/dist/abi/index.d.ts +2645 -168
  7. package/dist/abi/index.d.ts.map +1 -1
  8. package/dist/abi/index.js +34 -7
  9. package/dist/abi/index.js.map +1 -1
  10. package/dist/anchors.d.ts +266 -0
  11. package/dist/anchors.d.ts.map +1 -0
  12. package/dist/anchors.js +653 -0
  13. package/dist/anchors.js.map +1 -0
  14. package/dist/chains.d.ts +15 -9
  15. package/dist/chains.d.ts.map +1 -1
  16. package/dist/chains.js +19 -15
  17. package/dist/chains.js.map +1 -1
  18. package/dist/chunks.d.ts +53 -23
  19. package/dist/chunks.d.ts.map +1 -1
  20. package/dist/chunks.js +68 -6
  21. package/dist/chunks.js.map +1 -1
  22. package/dist/clients.d.ts +23 -11
  23. package/dist/clients.d.ts.map +1 -1
  24. package/dist/clients.js +17 -18
  25. package/dist/clients.js.map +1 -1
  26. package/dist/create2.d.ts +85 -1
  27. package/dist/create2.d.ts.map +1 -1
  28. package/dist/create2.js +159 -2
  29. package/dist/create2.js.map +1 -1
  30. package/dist/creator-token.d.ts +132 -0
  31. package/dist/creator-token.d.ts.map +1 -0
  32. package/dist/creator-token.js +183 -0
  33. package/dist/creator-token.js.map +1 -0
  34. package/dist/deploy.d.ts +234 -14
  35. package/dist/deploy.d.ts.map +1 -1
  36. package/dist/deploy.js +289 -111
  37. package/dist/deploy.js.map +1 -1
  38. package/dist/deployments.d.ts +12 -0
  39. package/dist/deployments.d.ts.map +1 -1
  40. package/dist/deployments.js +155 -28
  41. package/dist/deployments.js.map +1 -1
  42. package/dist/deps.d.ts +122 -5
  43. package/dist/deps.d.ts.map +1 -1
  44. package/dist/deps.js +248 -6
  45. package/dist/deps.js.map +1 -1
  46. package/dist/env.d.ts.map +1 -1
  47. package/dist/env.js +8 -0
  48. package/dist/env.js.map +1 -1
  49. package/dist/errors.d.ts +94 -0
  50. package/dist/errors.d.ts.map +1 -0
  51. package/dist/errors.js +126 -0
  52. package/dist/errors.js.map +1 -0
  53. package/dist/execute.d.ts +115 -0
  54. package/dist/execute.d.ts.map +1 -0
  55. package/dist/execute.js +142 -0
  56. package/dist/execute.js.map +1 -0
  57. package/dist/gateways.d.ts +79 -0
  58. package/dist/gateways.d.ts.map +1 -0
  59. package/dist/gateways.js +156 -0
  60. package/dist/gateways.js.map +1 -0
  61. package/dist/generator-document.d.ts +58 -0
  62. package/dist/generator-document.d.ts.map +1 -0
  63. package/dist/generator-document.js +124 -0
  64. package/dist/generator-document.js.map +1 -0
  65. package/dist/generator.d.ts +43 -1
  66. package/dist/generator.d.ts.map +1 -1
  67. package/dist/generator.js +29 -0
  68. package/dist/generator.js.map +1 -1
  69. package/dist/index.d.ts +17 -3
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +17 -3
  72. package/dist/index.js.map +1 -1
  73. package/dist/inspect.d.ts +48 -0
  74. package/dist/inspect.d.ts.map +1 -0
  75. package/dist/inspect.js +295 -0
  76. package/dist/inspect.js.map +1 -0
  77. package/dist/migrate.d.ts +41 -0
  78. package/dist/migrate.d.ts.map +1 -0
  79. package/dist/migrate.js +140 -0
  80. package/dist/migrate.js.map +1 -0
  81. package/dist/mime.d.ts +11 -0
  82. package/dist/mime.d.ts.map +1 -0
  83. package/dist/mime.js +40 -0
  84. package/dist/mime.js.map +1 -0
  85. package/dist/node.d.ts +10 -0
  86. package/dist/node.d.ts.map +1 -0
  87. package/dist/node.js +24 -0
  88. package/dist/node.js.map +1 -0
  89. package/dist/onchain-uri.d.ts +110 -0
  90. package/dist/onchain-uri.d.ts.map +1 -0
  91. package/dist/onchain-uri.js +273 -0
  92. package/dist/onchain-uri.js.map +1 -0
  93. package/dist/ops.d.ts +507 -14
  94. package/dist/ops.d.ts.map +1 -1
  95. package/dist/ops.js +848 -32
  96. package/dist/ops.js.map +1 -1
  97. package/dist/probe.d.ts +29 -0
  98. package/dist/probe.d.ts.map +1 -1
  99. package/dist/probe.js +104 -9
  100. package/dist/probe.js.map +1 -1
  101. package/dist/reconstruct.d.ts +92 -2
  102. package/dist/reconstruct.d.ts.map +1 -1
  103. package/dist/reconstruct.js +378 -93
  104. package/dist/reconstruct.js.map +1 -1
  105. package/dist/resume.d.ts +96 -0
  106. package/dist/resume.d.ts.map +1 -0
  107. package/dist/resume.js +95 -0
  108. package/dist/resume.js.map +1 -0
  109. package/dist/script-chunks.d.ts +24 -0
  110. package/dist/script-chunks.d.ts.map +1 -0
  111. package/dist/script-chunks.js +63 -0
  112. package/dist/script-chunks.js.map +1 -0
  113. package/dist/service.d.ts +188 -9
  114. package/dist/service.d.ts.map +1 -1
  115. package/dist/service.js +228 -18
  116. package/dist/service.js.map +1 -1
  117. package/dist/spine.d.ts +31 -4
  118. package/dist/spine.d.ts.map +1 -1
  119. package/dist/spine.js +0 -0
  120. package/dist/spine.js.map +1 -1
  121. package/dist/staging.d.ts +124 -0
  122. package/dist/staging.d.ts.map +1 -0
  123. package/dist/staging.js +134 -0
  124. package/dist/staging.js.map +1 -0
  125. package/dist/tokendata.d.ts +62 -2
  126. package/dist/tokendata.d.ts.map +1 -1
  127. package/dist/tokendata.js +79 -17
  128. package/dist/tokendata.js.map +1 -1
  129. package/dist/tokens.d.ts +94 -0
  130. package/dist/tokens.d.ts.map +1 -0
  131. package/dist/tokens.js +296 -0
  132. package/dist/tokens.js.map +1 -0
  133. package/dist/types.d.ts +60 -3
  134. package/dist/types.d.ts.map +1 -1
  135. package/dist/util.d.ts +74 -0
  136. package/dist/util.d.ts.map +1 -0
  137. package/dist/util.js +106 -0
  138. package/dist/util.js.map +1 -0
  139. package/package.json +10 -2
package/dist/deps.js CHANGED
@@ -12,10 +12,19 @@
12
12
  *
13
13
  * Also speaks the AB-compatible registry READ interface (`IDependencyRegistryV0`,
14
14
  * specs/protocol/dependency-registry.md): `getDependencyDetails(bytes32)` is the
15
- * load-bearing read behind the CLI's best-effort selection-time check.
15
+ * load-bearing read behind the CLI's best-effort selection-time check, and
16
+ * `getDependencyScript(bytes32, index)` is the resolver's own read for on-chain bytes (see the
17
+ * "resolver's registry-aware serving lane" section below — hoisted from
18
+ * `@artblocks/abx-token-api` in the abx-services integrator ask, because it shares this exact
19
+ * vocabulary end to end).
16
20
  */
17
- import { padHex, toHex } from 'viem';
21
+ import { encodeFunctionData, hexToString, padHex, toHex } from 'viem';
18
22
  import { decodeTag } from './spine.js';
23
+ import { seriesCodeAbi } from './abi/index.js';
24
+ import { resolveDependencyRegistry } from './deployments.js';
25
+ import { escapeInlineScript } from './generator-document.js';
26
+ import { base64ToBytes } from './util.js';
27
+ import { InflateRequiredError } from './errors.js';
19
28
  /** `IAbxDependencies.Resolution` — index-aligned with the Solidity enum. */
20
29
  export const DEP_RESOLUTION = { registry: 0, onchain: 1 };
21
30
  // Printable non-space ASCII — what a readable bytes32 tag can carry unambiguously
@@ -57,9 +66,16 @@ export function decodeDependencyRef(resolution, ref) {
57
66
  return resolution === DEP_RESOLUTION.onchain ? '0x' + ref.slice(2, 42) : decodeTag(ref);
58
67
  }
59
68
  // ── the AB-compatible registry read (IDependencyRegistryV0) ───────────────────
60
- /** The load-bearing read of AB's `IDependencyRegistryV0` — the exact upstream signature
61
- * (any registry ABX consumers read from speaks this shape; see the dependency-registry spec). */
62
- export const dependencyRegistryReadAbi = [
69
+ /**
70
+ * The load-bearing reads of AB's `IDependencyRegistryV0` — the exact upstream signatures (any
71
+ * registry ABX consumers read from speaks this shape; see the dependency-registry spec).
72
+ * `getDependencyDetails` backs both the CLI's best-effort selection-time check and the
73
+ * resolver's own resolution; `getDependencyScript` is the resolver-only per-chunk read for a
74
+ * dep whose bytes live on chain. (Merging this hoist: token-api's `DEPENDENCY_REGISTRY_ABI` and
75
+ * this module's prior `dependencyRegistryReadAbi` declared the identical `getDependencyDetails`
76
+ * entry twice — one array now backs both callers.)
77
+ */
78
+ export const DEPENDENCY_REGISTRY_ABI = [
63
79
  {
64
80
  type: 'function',
65
81
  name: 'getDependencyDetails',
@@ -77,6 +93,16 @@ export const dependencyRegistryReadAbi = [
77
93
  { name: 'scriptCount', type: 'uint24' },
78
94
  ],
79
95
  },
96
+ {
97
+ type: 'function',
98
+ name: 'getDependencyScript',
99
+ stateMutability: 'view',
100
+ inputs: [
101
+ { name: 'dependencyNameAndVersion', type: 'bytes32' },
102
+ { name: 'index', type: 'uint256' },
103
+ ],
104
+ outputs: [{ type: 'string' }],
105
+ },
80
106
  ];
81
107
  /**
82
108
  * Read one dependency's registry record. Returns `null` when the registry doesn't know the
@@ -90,7 +116,7 @@ export const dependencyRegistryReadAbi = [
90
116
  export async function readRegistryDependency(client, registry, ref) {
91
117
  const out = (await client.readContract({
92
118
  address: registry,
93
- abi: dependencyRegistryReadAbi,
119
+ abi: DEPENDENCY_REGISTRY_ABI,
94
120
  functionName: 'getDependencyDetails',
95
121
  args: [ref],
96
122
  }));
@@ -100,4 +126,220 @@ export async function readRegistryDependency(client, registry, ref) {
100
126
  return null;
101
127
  return { nameAndVersion, licenseType, preferredCDN, availableOnChain, scriptCount: Number(scriptCount) };
102
128
  }
129
+ // ── the deploy-time dependency lane (registry pointer, setup legs, selection-time check) ──────
130
+ // The rest of a code project's dependency handling: resolving which registry a deploy should point
131
+ // at, composing the setup-multicall legs, and the best-effort existence check against that registry.
132
+ // `parseDepFlag` (the `--dep` CLI flag grammar) is CLI-local and stays there — everything downstream
133
+ // of a parsed `ParsedDependencyRef[]` lives here.
134
+ /**
135
+ * The registry pointer a deploy with ≥1 Registry-resolution dep should set: an explicit
136
+ * `--dep-registry` wins (validated), else the chain's known AB registry (env-overridable),
137
+ * else none — the caller WARNS and skips the leg (soft pointer; the resolver falls back to
138
+ * its built-in CDN map). Never a blocker.
139
+ */
140
+ export function resolveDepRegistryPointer(flagValue, chainId) {
141
+ if (flagValue !== undefined) {
142
+ if (flagValue === 'true' || !/^0x[0-9a-fA-F]{40}$/.test(flagValue)) {
143
+ throw new Error(`--dep-registry must be an address (0x + 40 hex); got '${flagValue}'`);
144
+ }
145
+ return { registry: flagValue, source: 'flag' };
146
+ }
147
+ const known = resolveDependencyRegistry(chainId);
148
+ return known ? { registry: known, source: 'default' } : { registry: null, source: 'none' };
149
+ }
150
+ /**
151
+ * The dependency legs of the setup multicall: one `setDependency(i, resolution, ref)` per
152
+ * dep in index order, plus the `setDependencyRegistry` leg when a pointer resolved. These
153
+ * ride the SAME atomic setup multicall as script chunks/schemas/mints, in every signing lane.
154
+ */
155
+ export function dependencySetupCalls(deps, registry) {
156
+ const calls = deps.map((d, i) => encodeFunctionData({ abi: seriesCodeAbi, functionName: 'setDependency', args: [BigInt(i), d.resolution, d.ref] }));
157
+ if (deps.length && registry) {
158
+ calls.push(encodeFunctionData({ abi: seriesCodeAbi, functionName: 'setDependencyRegistry', args: [registry] }));
159
+ }
160
+ return calls;
161
+ }
162
+ /**
163
+ * Best-effort existence/on-chain-ness check of every Registry-resolution dep against the
164
+ * pointer registry. A revert or an empty record ⇒ `not-found` (a warning — the owner may
165
+ * intend a custom registry). A transport failure ⇒ the remaining checks are `skipped` and
166
+ * `rpcOk: false` — one info line, never an error: the deploy proceeds regardless.
167
+ */
168
+ export async function checkRegistryDeps(client, registry, deps) {
169
+ const registryDeps = deps.filter((d) => d.resolution === DEP_RESOLUTION.registry);
170
+ const checks = [];
171
+ let rpcOk = true;
172
+ for (const d of registryDeps) {
173
+ if (!rpcOk) {
174
+ checks.push({ dep: d.display, status: 'skipped' });
175
+ continue;
176
+ }
177
+ try {
178
+ const details = await readRegistryDependency(client, registry, d.ref);
179
+ checks.push(details ? { dep: d.display, status: 'found', details } : { dep: d.display, status: 'not-found' });
180
+ }
181
+ catch (e) {
182
+ // A contract revert means the registry answered "no such dependency"; anything else
183
+ // (DNS, timeout, HTTP) means we couldn't ask — degrade to skipped, not failed.
184
+ const msg = `${e.name ?? ''} ${e.message ?? ''}`;
185
+ if (/ContractFunction|revert|returned no data/i.test(msg)) {
186
+ checks.push({ dep: d.display, status: 'not-found' });
187
+ }
188
+ else {
189
+ rpcOk = false;
190
+ checks.push({ dep: d.display, status: 'skipped' });
191
+ }
192
+ }
193
+ }
194
+ return { checks, rpcOk };
195
+ }
196
+ // Resolved registry entries are effectively immutable (admin-gated writes), so an in-process
197
+ // cache is safe; the TTL only guards admin updates. Failures negative-cache briefly so a dead
198
+ // registry doesn't cost an eth_call (and a warn) per request.
199
+ const REGISTRY_CACHE_TTL_MS = 60 * 60 * 1000; // 1h
200
+ const REGISTRY_NEGATIVE_TTL_MS = 60 * 1000; // 1min
201
+ const registryCache = new Map();
202
+ /** Reset the in-process registry-resolution cache — for tests. */
203
+ export function resetRegistryDependencyCache() {
204
+ registryCache.clear();
205
+ }
206
+ /** The collection's registry pointer, if set to a real address (zero/undefined ⇒ none). */
207
+ export function activeRegistry(state) {
208
+ const registry = state.dependencies?.registry ?? null;
209
+ if (!registry || /^0x0{40}$/i.test(registry))
210
+ return null;
211
+ return registry;
212
+ }
213
+ /**
214
+ * Resolve one `name@version` ref through the collection's registry. Returns the resolution
215
+ * (or null when the registry couldn't answer — caller falls back to the built-in map) plus
216
+ * whether it was served from cache. Never throws for a resolution failure; a fresh one logs ONE
217
+ * warn (the negative cache rate-limits it) naming the dep and why. DOES throw
218
+ * {@link InflateRequiredError} when the resolution needs decompression and `opts.inflate` is
219
+ * absent — that is a caller-configuration bug, not a resolution outcome.
220
+ */
221
+ export async function resolveRegistryDep(client, registry, dep, opts = {}) {
222
+ const key = `${registry.toLowerCase()}|${dep.refDecoded}`;
223
+ const hit = registryCache.get(key);
224
+ if (hit && hit.expiresAt > Date.now()) {
225
+ return { resolution: hit.value, cached: true, error: hit.error };
226
+ }
227
+ try {
228
+ // nameAndVersion rides as readable-ASCII bytes32 — the raw evented ref, right-padded.
229
+ const ref = padHex(dep.ref, { size: 32, dir: 'right' });
230
+ const details = (await client.readContract({
231
+ address: registry,
232
+ abi: DEPENDENCY_REGISTRY_ABI,
233
+ functionName: 'getDependencyDetails',
234
+ args: [ref],
235
+ }));
236
+ const [nameAndVersion, , preferredCDN, , , , , availableOnChain, scriptCount] = details;
237
+ if (availableOnChain && scriptCount > 0) {
238
+ // Per-chunk reads; the concatenated chunk strings form one base64(gzip(script)) stream.
239
+ const chunks = (await Promise.all(Array.from({ length: Number(scriptCount) }, (_, i) => client.readContract({
240
+ address: registry,
241
+ abi: DEPENDENCY_REGISTRY_ABI,
242
+ functionName: 'getDependencyScript',
243
+ args: [ref, BigInt(i)],
244
+ }))));
245
+ if (!opts.inflate)
246
+ throw new InflateRequiredError();
247
+ const gz = base64ToBytes(chunks.join(''));
248
+ const script = new TextDecoder().decode(opts.inflate(gz));
249
+ const value = { kind: 'onchain', script };
250
+ registryCache.set(key, { value, expiresAt: Date.now() + REGISTRY_CACHE_TTL_MS });
251
+ return { resolution: value, cached: false };
252
+ }
253
+ if (preferredCDN) {
254
+ const value = { kind: 'cdn', url: preferredCDN };
255
+ registryCache.set(key, { value, expiresAt: Date.now() + REGISTRY_CACHE_TTL_MS });
256
+ return { resolution: value, cached: false };
257
+ }
258
+ // An empty struct back means the entry simply isn't registered.
259
+ const why = nameAndVersion
260
+ ? 'registered but has neither on-chain bytes nor a preferredCDN'
261
+ : 'not registered in the registry';
262
+ return failRegistryResolution(key, dep, registry, why);
263
+ }
264
+ catch (err) {
265
+ // A missing inflate is a host-configuration bug, not a resolution outcome — surface it
266
+ // rather than mis-reporting it as "registry read failed" and quietly falling back.
267
+ if (err instanceof InflateRequiredError)
268
+ throw err;
269
+ return failRegistryResolution(key, dep, registry, `registry read failed: ${err.message}`);
270
+ }
271
+ }
272
+ /** Negative-cache a failed resolution + one warn (per negative-TTL window). Never throws. */
273
+ function failRegistryResolution(key, dep, registry, why) {
274
+ registryCache.set(key, { value: null, error: why, expiresAt: Date.now() + REGISTRY_NEGATIVE_TTL_MS });
275
+ console.warn(`[deps] registry resolution failed for ${dep.refDecoded} via ${registry}: ${why} — falling back to the built-in CDN map`);
276
+ return { resolution: null, cached: false, error: why };
277
+ }
278
+ /**
279
+ * Resolve a `name@version` registry ref to a CDN URL — the built-in reference convention,
280
+ * the LAST-resort rung of the resolution order (the soft registry pointer stays
281
+ * non-validating). Known runtimes get their real dist paths; anything else is best-effort npm.
282
+ */
283
+ export function registryDepUrl(ref) {
284
+ const at = ref.lastIndexOf('@');
285
+ if (at <= 0)
286
+ return null;
287
+ const name = ref.slice(0, at);
288
+ const version = ref.slice(at + 1);
289
+ const known = {
290
+ p5js: `https://cdn.jsdelivr.net/npm/p5@${version}/lib/p5.min.js`,
291
+ p5: `https://cdn.jsdelivr.net/npm/p5@${version}/lib/p5.min.js`,
292
+ threejs: `https://cdn.jsdelivr.net/npm/three@${version}/build/three.min.js`,
293
+ three: `https://cdn.jsdelivr.net/npm/three@${version}/build/three.min.js`,
294
+ tonejs: `https://cdn.jsdelivr.net/npm/tone@${version}/build/Tone.js`,
295
+ };
296
+ return known[name] ?? `https://cdn.jsdelivr.net/npm/${name}@${version}`;
297
+ }
298
+ /**
299
+ * The ordered dependency `<script>` tags for the generator document, each dep resolved per
300
+ * the Consumers table: registry on-chain bytes → registry preferredCDN → built-in map;
301
+ * `onchain`-resolution refs read their SSTORE2 data contract directly (never a registry).
302
+ * Never throws for a resolution failure — an unresolvable dep is skipped (after the warn) and
303
+ * the document assembles. DOES propagate {@link InflateRequiredError} (see
304
+ * {@link resolveRegistryDep}) — a missing `inflate` is a host wiring bug, not a bad dep.
305
+ */
306
+ export async function dependencyScriptTags(client, state, opts = {}) {
307
+ const registry = activeRegistry(state);
308
+ const tags = [];
309
+ for (const dep of state.dependencies?.list ?? []) {
310
+ if (dep.resolution === 'registry') {
311
+ if (registry) {
312
+ const { resolution } = await resolveRegistryDep(client, registry, dep, opts);
313
+ if (resolution?.kind === 'onchain') {
314
+ tags.push(`<script>${escapeInlineScript(resolution.script)}</script>`);
315
+ continue;
316
+ }
317
+ if (resolution?.kind === 'cdn') {
318
+ tags.push(`<script src="${resolution.url}"></script>`);
319
+ continue;
320
+ }
321
+ // fell through — resolveRegistryDep already warned; last resort below
322
+ }
323
+ const url = registryDepUrl(dep.refDecoded);
324
+ if (url)
325
+ tags.push(`<script src="${url}"></script>`);
326
+ }
327
+ else {
328
+ // on-chain dep: an SSTORE2 data contract holding the JS (code = 0x00 ‖ content). No
329
+ // inflate needed here — raw bytecode, never gzip'd — so this branch never touches `opts`.
330
+ const bytecode = await client.getCode({ address: dep.refDecoded });
331
+ if (bytecode && bytecode.length > 4) {
332
+ tags.push(`<script>${escapeInlineScript(hexToString(('0x' + bytecode.slice(4))))}</script>`);
333
+ }
334
+ }
335
+ }
336
+ return tags;
337
+ }
338
+ /** The spec's URL-carried tokenData size budget: gateway front-ends commonly cap request lines
339
+ * near 8KB. Applies to URL-carried `?abx=` payloads (a resolver's directory-mode 302 fallback);
340
+ * inline document serving is unaffected. Hoisted alongside the rest of this lane — the
341
+ * budget-tracking/observability surface built on it (`checkUrlBudget`, `urlBudgetStatus`) stays
342
+ * resolver-local (token-api/src/deps.ts), since it's a serving-observability concern rather than
343
+ * a resolution rule. */
344
+ export const URL_BUDGET_BYTES = 8192;
103
345
  //# sourceMappingURL=deps.js.map
package/dist/deps.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"deps.js","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deps.js","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAWA,wBAAgB,UAAU,CAAC,QAAQ,GAAE,MAAsB,GAAG,IAAI,CAcjE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAAC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAC,CA6BzG"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAmBA,wBAAgB,UAAU,CAAC,QAAQ,GAAE,MAAsB,GAAG,IAAI,CAcjE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAAC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAC,CA6BzG"}
package/dist/env.js CHANGED
@@ -5,6 +5,14 @@ import { dirname, resolve } from 'node:path';
5
5
  * root looking for a `.env`, and sets any keys not already present in the
6
6
  * environment. Deliberately tiny — the toolkit must run with `pnpm install`
7
7
  * and nothing else.
8
+ *
9
+ * Node-only (needs `node:fs` + `node:path`) — reached exclusively through the
10
+ * `@artblocks/abx-sdk/node` subpath, never the package's main entry (which a browser
11
+ * bundle must be able to import — see `test/browser-bundle.test.ts`). A host calls
12
+ * {@link loadDotEnv} once at startup; the SDK core never calls it itself (it reads
13
+ * whatever's already in `process.env` via `util.ts`'s `readEnv`). Because this module is
14
+ * Node-subpath-only, `parseInto`'s `console.error` on a conflicting duplicate key is fine
15
+ * to leave as a direct console write — there is no browser caller to surprise.
8
16
  */
9
17
  let loaded = false;
10
18
  export function loadDotEnv(startDir = process.cwd()) {
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AACjD,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAE3C;;;;;;;;;;;;;GAaG;AACH,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,UAAU,UAAU,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IACzD,IAAI,MAAM;QAAE,OAAO;IACnB,MAAM,GAAG,IAAI,CAAC;IACd,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,2FAA2F;YAC3F,yFAAyF;YACzF,4FAA4F;YAC5F,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/E,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,EAAC,OAAO,EAAE,UAAU,EAAC,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,MAAM,EAAC,OAAO,EAAE,UAAU,EAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC/D,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CACX,eAAe,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,2BAA2B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACpH,+HAA+H,CAClI,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,94 @@
1
+ import type { Address, Hex } from 'viem';
2
+ import type { SeedSourceProbe, SeedSourceVerdict } from './ops.js';
3
+ /**
4
+ * The SDK's error taxonomy — deliberately minimal. A caller that wants to react to a SPECIFIC
5
+ * failure (retry a stale estimate, surface a revert's tx hash) should catch by TYPE, not by
6
+ * parsing `.message`; every SDK-thrown error a caller is expected to distinguish extends this,
7
+ * following the same `name` + typed-fields convention `AbxServiceError` already uses (service.ts).
8
+ * This module stays small on purpose — it grows only when a real caller needs a new type to catch,
9
+ * not as a speculative taxonomy of everything that could go wrong.
10
+ */
11
+ export declare class AbxSdkError extends Error {
12
+ constructor(message: string);
13
+ }
14
+ /**
15
+ * A sent transaction MINED with `status: 'reverted'`. Thrown by {@link makeHotSender} (and anything
16
+ * else driving `SendTx`) instead of letting a revert masquerade as a "confirmed" send — carries the
17
+ * tx hash so a caller can look it up on an explorer without re-parsing a message string.
18
+ */
19
+ export declare class TxRevertedError extends AbxSdkError {
20
+ readonly op: string;
21
+ readonly txHash: Hex;
22
+ constructor(op: string, txHash: Hex);
23
+ }
24
+ /**
25
+ * `pinGas`'s refusal: every estimate attempt came back below the transaction's PROVABLE gas floor
26
+ * (`PreparedTx.gasFloor` — EVM code deposit at exactly 200 gas/byte, and nothing else is physics).
27
+ * That is proof the node answering the estimate hasn't seen the target's deploy block yet, not that
28
+ * the floor is wrong — see `pinGas` in `execute.ts` for the full reasoning. Carries both numbers so a
29
+ * caller can decide to retry against a different RPC rather than re-parse the message.
30
+ */
31
+ export declare class GasEstimateBelowFloorError extends AbxSdkError {
32
+ readonly estimate: bigint;
33
+ readonly floor: bigint;
34
+ constructor(estimate: bigint, floor: bigint);
35
+ }
36
+ /**
37
+ * No signing key resolved. SINGLE env name: `ABX_DEPLOYER_PK` — thrown by {@link makeWalletClient}
38
+ * and {@link envSigningKey} (clients.ts). Names the two retired names explicitly (`SEPOLIA_FUNDED_PK`
39
+ * / `SEPOLIA_WALLET_PK`) rather than just omitting them, because a caller upgrading from an older
40
+ * alpha has one of those set in their `.env` and would otherwise see a plain "no key found" with no
41
+ * clue that the key IS there, just under a name the SDK no longer reads.
42
+ */
43
+ export declare class MissingSigningKeyError extends AbxSdkError {
44
+ constructor();
45
+ }
46
+ /**
47
+ * A registry-resolved dependency's on-chain bytes are gzip'd, and no `inflate` was supplied to
48
+ * decompress them (`resolveRegistryDep`/`dependencyScriptTags`, deps.ts). SDK core carries no
49
+ * `node:zlib` — it has to stay reachable from a browser bundle (see `test/browser-bundle.test.ts`)
50
+ * — so decompression is an injected function rather than a direct call. Thrown instead of letting
51
+ * the caller either crash on `opts.inflate(...)` being undefined or silently serve a broken
52
+ * document; names the exact fix instead of a generic "cannot read properties of undefined".
53
+ */
54
+ export declare class InflateRequiredError extends AbxSdkError {
55
+ constructor();
56
+ }
57
+ /** The bootstrap-or-refuse trust anchors / singletons `ensureFactory` & co. (anchors.ts) resolve —
58
+ * the 721 set (five) plus the ERC-1155 editions twins (`ensureOneOfOneEditionFactory`/
59
+ * `ensureEditionFactory`/`ensureEditionCodeFactory`). */
60
+ export type AnchorKind = 'factory' | 'series-factory' | 'series-code-factory' | 'renderer' | 'seed-source' | 'one-of-one-edition-factory' | 'edition-factory' | 'edition-code-factory';
61
+ /**
62
+ * A trust anchor {@link AnchorKind} that `ensureFactory`/`ensureSeriesFactory`/
63
+ * `ensureSeriesCodeFactory` (anchors.ts) could not resolve to a usable address, with
64
+ * `allowBootstrap` false — the caller must either point at a working one (override / env /
65
+ * manifest) or opt in to deploying a private one. Carries structured `detail` + `address` instead
66
+ * of a formatted sentence: the SDK doesn't know a UX's flag names or chain-key strings, so it never
67
+ * composes the actual guidance text itself — that's the CLI's `refuseMissingFactory`, which catches
68
+ * this and names the env var / `--bootstrap-factory` / the chain.
69
+ */
70
+ export declare class AnchorUnavailableError extends AbxSdkError {
71
+ readonly anchor: AnchorKind;
72
+ readonly detail: 'no-code' | 'stale-version' | 'not-configured';
73
+ readonly address?: Address;
74
+ constructor(anchor: AnchorKind, detail: 'no-code' | 'stale-version' | 'not-configured', address?: Address);
75
+ }
76
+ /**
77
+ * A candidate seed source that {@link probeSeedSource} found unusable — thrown by
78
+ * `assertSeedSourceUsable` (ops.ts). Carries the whole probe (verdict + what was observed) rather
79
+ * than a formatted sentence, same reason as {@link AnchorUnavailableError}: the SDK doesn't know
80
+ * whether the caller got this address from a `--seed-source` flag, an env var, or a form field, so
81
+ * it never composes the guidance itself.
82
+ *
83
+ * Worth catching by type: this is the ONE misconfiguration whose consequence is "every mint of the
84
+ * collection reverts", and it is invisible on every read surface (`seedSource()` returns exactly
85
+ * what was set; the `SeedSourceSet` event fires) — so a UX should treat it as a hard stop, not a
86
+ * warning it can proceed past.
87
+ */
88
+ export declare class SeedSourceUnusableError extends AbxSdkError {
89
+ readonly verdict: SeedSourceVerdict;
90
+ readonly address: Address;
91
+ readonly probe: SeedSourceProbe;
92
+ constructor(probe: SeedSourceProbe);
93
+ }
94
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,GAAG,EAAC,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAC,eAAe,EAAE,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAEjE;;;;;;;GAOG;AACH,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;gBACT,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;CAMpC;AAED;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,WAAW;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACX,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAW5C;AAED;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,WAAW;;CAQtD;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;;CAUpD;AAED;;0DAE0D;AAC1D,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,gBAAgB,GAChB,qBAAqB,GACrB,UAAU,GACV,aAAa,GACb,4BAA4B,GAC5B,iBAAiB,GACjB,sBAAsB,CAAC;AAE3B;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,SAAQ,WAAW;IACrD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe,GAAG,gBAAgB,CAAC;IAChE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBACf,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,eAAe,GAAG,gBAAgB,EAAE,OAAO,CAAC,EAAE,OAAO;CAO1G;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,SAAQ,WAAW;IACtD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;gBACpB,KAAK,EAAE,eAAe;CAOnC"}
package/dist/errors.js ADDED
@@ -0,0 +1,126 @@
1
+ /**
2
+ * The SDK's error taxonomy — deliberately minimal. A caller that wants to react to a SPECIFIC
3
+ * failure (retry a stale estimate, surface a revert's tx hash) should catch by TYPE, not by
4
+ * parsing `.message`; every SDK-thrown error a caller is expected to distinguish extends this,
5
+ * following the same `name` + typed-fields convention `AbxServiceError` already uses (service.ts).
6
+ * This module stays small on purpose — it grows only when a real caller needs a new type to catch,
7
+ * not as a speculative taxonomy of everything that could go wrong.
8
+ */
9
+ export class AbxSdkError extends Error {
10
+ constructor(message) {
11
+ super(message);
12
+ this.name = 'AbxSdkError';
13
+ }
14
+ }
15
+ /**
16
+ * A sent transaction MINED with `status: 'reverted'`. Thrown by {@link makeHotSender} (and anything
17
+ * else driving `SendTx`) instead of letting a revert masquerade as a "confirmed" send — carries the
18
+ * tx hash so a caller can look it up on an explorer without re-parsing a message string.
19
+ */
20
+ export class TxRevertedError extends AbxSdkError {
21
+ op;
22
+ txHash;
23
+ constructor(op, txHash) {
24
+ super(`${op} reverted (${txHash})`);
25
+ this.name = 'TxRevertedError';
26
+ this.op = op;
27
+ this.txHash = txHash;
28
+ }
29
+ }
30
+ /**
31
+ * `pinGas`'s refusal: every estimate attempt came back below the transaction's PROVABLE gas floor
32
+ * (`PreparedTx.gasFloor` — EVM code deposit at exactly 200 gas/byte, and nothing else is physics).
33
+ * That is proof the node answering the estimate hasn't seen the target's deploy block yet, not that
34
+ * the floor is wrong — see `pinGas` in `execute.ts` for the full reasoning. Carries both numbers so a
35
+ * caller can decide to retry against a different RPC rather than re-parse the message.
36
+ */
37
+ export class GasEstimateBelowFloorError extends AbxSdkError {
38
+ estimate;
39
+ floor;
40
+ constructor(estimate, floor) {
41
+ super(`Refusing to send: the RPC estimated ${estimate} gas for a transaction that provably needs at least ${floor} ` +
42
+ `(storing ${floor / 200n} bytes on-chain costs 200 gas/byte in code deposit alone). An estimate below the floor means the node ` +
43
+ `is answering from stale state — usually it has not seen the contract's deploy block yet, so the call looks like it is going to ` +
44
+ `an empty account. Sending this would revert DeploymentFailed() and burn the gas. Retry in a few seconds, or use a different RPC.`);
45
+ this.name = 'GasEstimateBelowFloorError';
46
+ this.estimate = estimate;
47
+ this.floor = floor;
48
+ }
49
+ }
50
+ /**
51
+ * No signing key resolved. SINGLE env name: `ABX_DEPLOYER_PK` — thrown by {@link makeWalletClient}
52
+ * and {@link envSigningKey} (clients.ts). Names the two retired names explicitly (`SEPOLIA_FUNDED_PK`
53
+ * / `SEPOLIA_WALLET_PK`) rather than just omitting them, because a caller upgrading from an older
54
+ * alpha has one of those set in their `.env` and would otherwise see a plain "no key found" with no
55
+ * clue that the key IS there, just under a name the SDK no longer reads.
56
+ */
57
+ export class MissingSigningKeyError extends AbxSdkError {
58
+ constructor() {
59
+ super('No signing key found. Set ABX_DEPLOYER_PK in your .env. ' +
60
+ '(SEPOLIA_FUNDED_PK and SEPOLIA_WALLET_PK are no longer read — rename the key to ABX_DEPLOYER_PK.)');
61
+ this.name = 'MissingSigningKeyError';
62
+ }
63
+ }
64
+ /**
65
+ * A registry-resolved dependency's on-chain bytes are gzip'd, and no `inflate` was supplied to
66
+ * decompress them (`resolveRegistryDep`/`dependencyScriptTags`, deps.ts). SDK core carries no
67
+ * `node:zlib` — it has to stay reachable from a browser bundle (see `test/browser-bundle.test.ts`)
68
+ * — so decompression is an injected function rather than a direct call. Thrown instead of letting
69
+ * the caller either crash on `opts.inflate(...)` being undefined or silently serve a broken
70
+ * document; names the exact fix instead of a generic "cannot read properties of undefined".
71
+ */
72
+ export class InflateRequiredError extends AbxSdkError {
73
+ constructor() {
74
+ super("A registry-resolved dependency's on-chain bytes are gzip-compressed, but no `inflate` was " +
75
+ 'provided to decompress them. On a Node host, pass `nodeInflate` from `@artblocks/abx-sdk/node` ' +
76
+ "(e.g. `dependencyScriptTags(client, state, {inflate: nodeInflate})`). In a browser, pass a " +
77
+ 'DecompressionStream-based implementation — SDK core carries no `node:zlib` so it never assumes one.');
78
+ this.name = 'InflateRequiredError';
79
+ }
80
+ }
81
+ /**
82
+ * A trust anchor {@link AnchorKind} that `ensureFactory`/`ensureSeriesFactory`/
83
+ * `ensureSeriesCodeFactory` (anchors.ts) could not resolve to a usable address, with
84
+ * `allowBootstrap` false — the caller must either point at a working one (override / env /
85
+ * manifest) or opt in to deploying a private one. Carries structured `detail` + `address` instead
86
+ * of a formatted sentence: the SDK doesn't know a UX's flag names or chain-key strings, so it never
87
+ * composes the actual guidance text itself — that's the CLI's `refuseMissingFactory`, which catches
88
+ * this and names the env var / `--bootstrap-factory` / the chain.
89
+ */
90
+ export class AnchorUnavailableError extends AbxSdkError {
91
+ anchor;
92
+ detail;
93
+ address;
94
+ constructor(anchor, detail, address) {
95
+ super(`${anchor} trust anchor unavailable (${detail}${address ? `: ${address}` : ''})`);
96
+ this.name = 'AnchorUnavailableError';
97
+ this.anchor = anchor;
98
+ this.detail = detail;
99
+ this.address = address;
100
+ }
101
+ }
102
+ /**
103
+ * A candidate seed source that {@link probeSeedSource} found unusable — thrown by
104
+ * `assertSeedSourceUsable` (ops.ts). Carries the whole probe (verdict + what was observed) rather
105
+ * than a formatted sentence, same reason as {@link AnchorUnavailableError}: the SDK doesn't know
106
+ * whether the caller got this address from a `--seed-source` flag, an env var, or a form field, so
107
+ * it never composes the guidance itself.
108
+ *
109
+ * Worth catching by type: this is the ONE misconfiguration whose consequence is "every mint of the
110
+ * collection reverts", and it is invisible on every read surface (`seedSource()` returns exactly
111
+ * what was set; the `SeedSourceSet` event fires) — so a UX should treat it as a hard stop, not a
112
+ * warning it can proceed past.
113
+ */
114
+ export class SeedSourceUnusableError extends AbxSdkError {
115
+ verdict;
116
+ address;
117
+ probe;
118
+ constructor(probe) {
119
+ super(`seed source ${probe.address} is not usable (${probe.verdict}${probe.error ? `: ${probe.error}` : ''})`);
120
+ this.name = 'SeedSourceUnusableError';
121
+ this.verdict = probe.verdict;
122
+ this.address = probe.address;
123
+ this.probe = probe;
124
+ }
125
+ }
126
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IACrC,EAAE,CAAS;IACX,MAAM,CAAM;IACrB,YAAY,EAAU,EAAE,MAAW;QACjC,KAAK,CAAC,GAAG,EAAE,cAAc,MAAM,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,0BAA2B,SAAQ,WAAW;IAChD,QAAQ,CAAS;IACjB,KAAK,CAAS;IACvB,YAAY,QAAgB,EAAE,KAAa;QACzC,KAAK,CACH,uCAAuC,QAAQ,uDAAuD,KAAK,GAAG;YAC5G,YAAY,KAAK,GAAG,IAAI,wGAAwG;YAChI,iIAAiI;YACjI,kIAAkI,CACrI,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IACrD;QACE,KAAK,CACH,0DAA0D;YACxD,mGAAmG,CACtG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD;QACE,KAAK,CACH,4FAA4F;YAC1F,iGAAiG;YACjG,6FAA6F;YAC7F,qGAAqG,CACxG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAeD;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IAC5C,MAAM,CAAa;IACnB,MAAM,CAAiD;IACvD,OAAO,CAAW;IAC3B,YAAY,MAAkB,EAAE,MAAsD,EAAE,OAAiB;QACvG,KAAK,CAAC,GAAG,MAAM,8BAA8B,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IAC7C,OAAO,CAAoB;IAC3B,OAAO,CAAU;IACjB,KAAK,CAAkB;IAChC,YAAY,KAAsB;QAChC,KAAK,CAAC,eAAe,KAAK,CAAC,OAAO,mBAAmB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/G,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}