@artblocks/abx-sdk 0.1.0-alpha.9 → 0.1.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 (167) hide show
  1. package/CHANGELOG.md +188 -0
  2. package/README.md +130 -0
  3. package/dist/abi/generated.d.ts +7942 -142
  4. package/dist/abi/generated.d.ts.map +1 -1
  5. package/dist/abi/generated.js +41 -23
  6. package/dist/abi/generated.js.map +1 -1
  7. package/dist/abi/index.d.ts +2364 -84
  8. package/dist/abi/index.d.ts.map +1 -1
  9. package/dist/abi/index.js +34 -7
  10. package/dist/abi/index.js.map +1 -1
  11. package/dist/anchors.d.ts +325 -0
  12. package/dist/anchors.d.ts.map +1 -0
  13. package/dist/anchors.js +740 -0
  14. package/dist/anchors.js.map +1 -0
  15. package/dist/chain-support.d.ts +28 -0
  16. package/dist/chain-support.d.ts.map +1 -0
  17. package/dist/chain-support.js +65 -0
  18. package/dist/chain-support.js.map +1 -0
  19. package/dist/chain-support.json +60 -0
  20. package/dist/chains.d.ts +23 -11
  21. package/dist/chains.d.ts.map +1 -1
  22. package/dist/chains.js +51 -19
  23. package/dist/chains.js.map +1 -1
  24. package/dist/chunks.d.ts +130 -32
  25. package/dist/chunks.d.ts.map +1 -1
  26. package/dist/chunks.js +140 -15
  27. package/dist/chunks.js.map +1 -1
  28. package/dist/clients.d.ts +23 -11
  29. package/dist/clients.d.ts.map +1 -1
  30. package/dist/clients.js +17 -18
  31. package/dist/clients.js.map +1 -1
  32. package/dist/contract-generations.d.ts +58 -0
  33. package/dist/contract-generations.d.ts.map +1 -0
  34. package/dist/contract-generations.js +109 -0
  35. package/dist/contract-generations.js.map +1 -0
  36. package/dist/contract-generations.json +48 -0
  37. package/dist/create2.d.ts +88 -1
  38. package/dist/create2.d.ts.map +1 -1
  39. package/dist/create2.js +174 -4
  40. package/dist/create2.js.map +1 -1
  41. package/dist/creator-token.d.ts +75 -8
  42. package/dist/creator-token.d.ts.map +1 -1
  43. package/dist/creator-token.js +98 -8
  44. package/dist/creator-token.js.map +1 -1
  45. package/dist/creators-service.d.ts +79 -0
  46. package/dist/creators-service.d.ts.map +1 -0
  47. package/dist/creators-service.js +171 -0
  48. package/dist/creators-service.js.map +1 -0
  49. package/dist/deploy.d.ts +224 -14
  50. package/dist/deploy.d.ts.map +1 -1
  51. package/dist/deploy.js +289 -111
  52. package/dist/deploy.js.map +1 -1
  53. package/dist/deployments.d.ts +38 -5
  54. package/dist/deployments.d.ts.map +1 -1
  55. package/dist/deployments.js +157 -45
  56. package/dist/deployments.js.map +1 -1
  57. package/dist/deps.d.ts +123 -6
  58. package/dist/deps.d.ts.map +1 -1
  59. package/dist/deps.js +249 -7
  60. package/dist/deps.js.map +1 -1
  61. package/dist/env.d.ts +5 -4
  62. package/dist/env.d.ts.map +1 -1
  63. package/dist/env.js +20 -5
  64. package/dist/env.js.map +1 -1
  65. package/dist/errors.d.ts +109 -0
  66. package/dist/errors.d.ts.map +1 -0
  67. package/dist/errors.js +148 -0
  68. package/dist/errors.js.map +1 -0
  69. package/dist/execute.d.ts +118 -0
  70. package/dist/execute.d.ts.map +1 -0
  71. package/dist/execute.js +159 -0
  72. package/dist/execute.js.map +1 -0
  73. package/dist/gateways.d.ts +79 -0
  74. package/dist/gateways.d.ts.map +1 -0
  75. package/dist/gateways.js +156 -0
  76. package/dist/gateways.js.map +1 -0
  77. package/dist/generator-document.d.ts +57 -0
  78. package/dist/generator-document.d.ts.map +1 -0
  79. package/dist/generator-document.js +123 -0
  80. package/dist/generator-document.js.map +1 -0
  81. package/dist/generator.d.ts +45 -3
  82. package/dist/generator.d.ts.map +1 -1
  83. package/dist/generator.js +29 -0
  84. package/dist/generator.js.map +1 -1
  85. package/dist/index.d.ts +19 -3
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +19 -3
  88. package/dist/index.js.map +1 -1
  89. package/dist/inspect.d.ts +48 -0
  90. package/dist/inspect.d.ts.map +1 -0
  91. package/dist/inspect.js +295 -0
  92. package/dist/inspect.js.map +1 -0
  93. package/dist/migrate.d.ts +41 -0
  94. package/dist/migrate.d.ts.map +1 -0
  95. package/dist/migrate.js +142 -0
  96. package/dist/migrate.js.map +1 -0
  97. package/dist/mime.d.ts +11 -0
  98. package/dist/mime.d.ts.map +1 -0
  99. package/dist/mime.js +40 -0
  100. package/dist/mime.js.map +1 -0
  101. package/dist/node.d.ts +69 -0
  102. package/dist/node.d.ts.map +1 -0
  103. package/dist/node.js +92 -0
  104. package/dist/node.js.map +1 -0
  105. package/dist/onchain-uri.d.ts +110 -0
  106. package/dist/onchain-uri.d.ts.map +1 -0
  107. package/dist/onchain-uri.js +276 -0
  108. package/dist/onchain-uri.js.map +1 -0
  109. package/dist/ops.d.ts +437 -13
  110. package/dist/ops.d.ts.map +1 -1
  111. package/dist/ops.js +754 -34
  112. package/dist/ops.js.map +1 -1
  113. package/dist/policy.d.ts +57 -0
  114. package/dist/policy.d.ts.map +1 -0
  115. package/dist/policy.js +35 -0
  116. package/dist/policy.js.map +1 -0
  117. package/dist/probe.d.ts +58 -0
  118. package/dist/probe.d.ts.map +1 -1
  119. package/dist/probe.js +190 -9
  120. package/dist/probe.js.map +1 -1
  121. package/dist/reconstruct.d.ts +135 -8
  122. package/dist/reconstruct.d.ts.map +1 -1
  123. package/dist/reconstruct.js +400 -84
  124. package/dist/reconstruct.js.map +1 -1
  125. package/dist/resume.d.ts +147 -0
  126. package/dist/resume.d.ts.map +1 -0
  127. package/dist/resume.js +146 -0
  128. package/dist/resume.js.map +1 -0
  129. package/dist/script-chunks.d.ts +105 -0
  130. package/dist/script-chunks.d.ts.map +1 -0
  131. package/dist/script-chunks.js +158 -0
  132. package/dist/script-chunks.js.map +1 -0
  133. package/dist/service.d.ts +172 -7
  134. package/dist/service.d.ts.map +1 -1
  135. package/dist/service.js +132 -10
  136. package/dist/service.js.map +1 -1
  137. package/dist/spine.d.ts +47 -4
  138. package/dist/spine.d.ts.map +1 -1
  139. package/dist/spine.js +0 -0
  140. package/dist/spine.js.map +1 -1
  141. package/dist/staging.d.ts +139 -0
  142. package/dist/staging.d.ts.map +1 -0
  143. package/dist/staging.js +139 -0
  144. package/dist/staging.js.map +1 -0
  145. package/dist/token.d.ts +11 -1
  146. package/dist/token.d.ts.map +1 -1
  147. package/dist/token.js +32 -1
  148. package/dist/token.js.map +1 -1
  149. package/dist/tokendata.d.ts +4 -4
  150. package/dist/tokendata.d.ts.map +1 -1
  151. package/dist/tokendata.js +28 -9
  152. package/dist/tokendata.js.map +1 -1
  153. package/dist/tokens.d.ts +74 -9
  154. package/dist/tokens.d.ts.map +1 -1
  155. package/dist/tokens.js +175 -5
  156. package/dist/tokens.js.map +1 -1
  157. package/dist/types.d.ts +107 -5
  158. package/dist/types.d.ts.map +1 -1
  159. package/dist/uri-lock.d.ts +17 -0
  160. package/dist/uri-lock.d.ts.map +1 -0
  161. package/dist/uri-lock.js +33 -0
  162. package/dist/uri-lock.js.map +1 -0
  163. package/dist/util.d.ts +74 -0
  164. package/dist/util.d.ts.map +1 -0
  165. package/dist/util.js +106 -0
  166. package/dist/util.js.map +1 -0
  167. package/package.json +15 -6
@@ -1,53 +1,132 @@
1
+ import { readEnv } from './util.js';
2
+ export { ANCHOR_GENERATIONS, currentAnchorGeneration, findAnchorGenerationByCoreVersion, findAnchorGenerationByFactory, findAnchorGenerationForProject, findAnchorGenerationById, summarizeAnchorGeneration, supportsGenerationOperation, } from './contract-generations.js';
1
3
  /**
2
4
  * The cross-chain-identical set — CREATE2 (keyless proxy + `AbxSalts`), so these addresses are the
3
5
  * SAME on every chain. Factory addresses list their EIP-1167 implementation; the implementations are
4
6
  * identical cross-chain too (a factory does exactly one CREATE at nonce 1 from its own — identical —
5
- * address). The renderer is spec v4 (on-chain param enumeration → `abx_params` in tokenURI, and
6
- * inline/reader `animation_url` as a `data:text/html;base64` URI; v3 added the artifacts manifest +
7
- * authorship/rights contractURI fields). SeriesCode's delegatecalled write-path libraries are also
8
- * CREATE2-deterministic and identical everywhere:
9
- * AbxParamsLib 0xdC8FeEDabd8B6f4F7819FD96F3ea34b7c2470817 (v3, externalized read surface — B22
10
- * step 1; replaced 0xE26bFde1835D8c9ba6cd66c3C4eAE1B47EDA6130 v2, which replaced
11
- * 0x7DAa26bADD99812a77384B461b6375e0c04F2865), AbxCodeLib 0xCd12078E81A3BDEACdcd57AE390f4D59F832766B.
7
+ * address). The renderer is **spec v11** — the version `isCurrentRenderer` gates on, and the reason a
8
+ * behind-spec renderer is treated as stale rather than merely older: each bump changed what the
9
+ * document actually contains (v5 escaped the provenance note, v6 changed rendered output for hostile
10
+ * input, v7 renamed the `artist` collection field to `creator`, v8 retired the `abx_params` block and
11
+ * narrowed provenance to the route a field took rather than a claim about its destination, v9 stopped
12
+ * duplicating a computed image into `artifacts`, which changes what the document contains, v10 added
13
+ * four reserved keys neither plane emitted, and v11 moved `ipfs`/`arweave` out of the fallback set:
14
+ * a v10 renderer serves the placeholder SVG for chain state a v11 renderer resolves).
15
+ *
16
+ * The delegatecalled write-path libraries are CREATE2-deterministic and identical everywhere too —
17
+ * that is a property of CREATE2, not a lucky accident, and linking a library does not cost the
18
+ * linking factory its own deterministic address (see `create2.ts`'s write-path-library note, which
19
+ * explains what IS a real trap here). They are deployed EXPLICITLY at `AbxSalts.METADATA_LIB` /
20
+ * `.PARAMS_LIB` / `.CODE_LIB` / `.EDITION_LIB` (`abx.lib.metadata.v1` / `abx.lib.params.v1` /
21
+ * `abx.lib.code.v1` / `abx.lib.edition.v1`) by
22
+ * `DeployLibraries.s.sol` and by the SDK's own bootstrap — not by forge's automatic linking, which
23
+ * routes through the same proxy but at its own salt of zero. So every library address below is
24
+ * recomputable from (proxy, salt, creation bytecode) alone: `predictMetadataLib()` /
25
+ * `predictParamsLib()` / `predictCodeLib()` / `predictEditionLib()`.
26
+ *
27
+ * NO SUPERSEDED ADDRESS IS EVER LIVE STATE IN THIS FILE, deliberately — and the rule is narrower and
28
+ * more useful than "no old addresses anywhere", which is what it used to say while the entries below
29
+ * carried `replaces 0x…` notes. The hazard was never provenance; it is a stale address sitting where
30
+ * something might *bind* it, because several superseded contracts still have code on chain and a
31
+ * factory bound to an un-manifested library is the exact failure this file exists to prevent. So:
32
+ *
33
+ * · The live record ({@link CANONICAL} + the per-chain blocks) holds only what is current. A
34
+ * superseded address may appear beside it as a `replaces 0x…` note, which is prose, and in the
35
+ * contract-generation registry, which holds only the six FACTORY anchors — never a library,
36
+ * renderer, minter or seed source, the entries where a wrong bind would do damage.
37
+ * · {@link ANCHOR_GENERATIONS} is **provenance, never trust.** It answers "was this deployed by an
38
+ * ABX factory, and which generation" — it must never widen an allowlist or feed
39
+ * `verifyCanonical`.
40
+ *
12
41
  */
13
42
  const CANONICAL = {
14
- // 721C unit (2026-08-04): all three factories replaced — InitParams gained `transferValidator`
15
- // (13 fields) and every token type composes the CreatorToken (ERC-721C) mixin. Projects deployed
16
- // from the previous anchors keep working on their frozen implementations.
17
- // replaced: factory 0xB9eEE39DB7D03E0b94CE403F69E928e2a5F134Ca (impl 0xf1F0893897CC19e75d829fa550a5228c5119cA39)
18
- factory: '0xbc44F467083d0C10a843485876A839C239222605', // impl 0x76E856602EAEE8b9E41BF269BEfcE2B9d5EaFcA5
19
- // replaced: seriesFactory 0x9d97C00100351682e6625961e033b6F43E60639A (impl 0x58D8b9F7ABa3043734cBeBfaa9c46875070E16ed)
20
- seriesFactory: '0xA5B03A7CEc64E083523202d7264F03B2511baF75', // impl 0x38715c1cAedDAe6F445372cF4E8c79E92f8D6014
21
- // replaced: seriesCodeFactory 0xADE45e2D5C45090b412008644867C737100F5503 (impl 0xd5f3db6418AA362e62431BC73B890632709fFfbB);
22
- // the param-enumeration unit (2026-08-03) had replaced 0x77f61Ead461f368dbF3788EeFe9693bA5a73Bd87
23
- // (impl 0xfd2034B6af517AD019f0dD7b007F07eF358D4053) — pre-enumeration projects stay on those.
24
- seriesCodeFactory: '0x45bE6050553c96B6d4400f693DcB4eC595daF492', // impl 0xB505Eb888625dEC413F45F04824266485dd5e4E9
25
- renderer: '0x65CB990249d11832b64Db5E3ceaC61f9104d803b', // spec v4; replaced 0x837A5cF907E7a6727B08acfE2A865F2bD5C50b1D (v3)
26
- chunkStore: '0x03d3a962602093a937B96ee9C0b5C54cec3e701E',
27
- fixedPriceMinter: '0xd970A2c936FFbb2130c2e4Ddf4245FF92465fEA5',
28
- seedSource: '0x53eDFD2047e00C133378DEb430183DEE285E652e',
43
+ // Superseded addresses stay out of the live manifest. Two properties hold for every entry:
44
+ // 1. Identical on every shipped chain — CREATE2 through the keyless proxy at the canonical
45
+ // salts in `AbxSalts.sol` / `ABX_SALT`. Only `generator` differs per chain (its constructor
46
+ // bakes chain-specific immutables), which is why it lives in the per-chain blocks below.
47
+ // 2. Recomputable from this build alone — `predictFactory()`, `predictRenderer()`,
48
+ // `predictSeriesCodeFactory()` and friends reproduce every one of them, and the write-path
49
+ // libraries are now deployed EXPLICITLY by `DeployLibraries.s.sol` at named salts rather
50
+ // than by forge's automatic linking at salt zero.
51
+ //
52
+ // Implementations are noted inline because a factory's implementation is the code a clone runs;
53
+ // `abxVersion()` reads 3 on all six, and `specVersion()` reads 11 on the renderer.
54
+ factory: '0x2ff8828a9150401225bB217CAA8b9b5e666a1c97', // impl 0x71D8aeB80Ee9baeAa56Eadc4D4956B1A11E2a0e1
55
+ seriesFactory: '0x83222f791cA243FEb0c1Fef93a8732eCe3001b4b', // impl 0x2a548E83E106c6DdA42076042755ca1E2F15aDCe
56
+ seriesCodeFactory: '0xEAB8a19fEada0DDba2FDE324715eBbB6234B5616', // impl 0x785CD3F74e86E4495c178B5FFCD047c57e699270
57
+ oneOfOneEditionFactory: '0x4e9dFcC70dCC02FA5bad113Bc2CF0A2218358B1E', // impl 0x60aB775BfE06C063aEA7095BdB2Bf2d8E66F152B
58
+ editionFactory: '0xCC29eD68f26693dc9Aa5f090B21F37985206cc19', // impl 0x656794e3608e179088155499f4c25baAF9f19a59
59
+ editionCodeFactory: '0x86f9CFe597ab145452f4A66ac102291d54e8EB46', // impl 0x752533e77F5f6EF87b72B51eb453B631Eb0FbafA
60
+ renderer: '0x5772249A8fA0bAFfD4B2e3378189465B4dB67417', // spec v11
61
+ chunkStore: '0x1Ca63a4ADEeF5e722ADA25b892BA40E3b2bcB905',
62
+ seedSource: '0xD01d4eDc17F8b4493A43A5e70DCD9813FB1b9A0A',
63
+ fixedPriceMinter: '0xfb5C61274a3A7dA83CcDD88DdEC914438244E2c9',
64
+ fixedPriceMinter1155: '0x2af9f0c477c34a23cBeC646a3b6BC0cA4Df5d37f',
65
+ // The delegatecalled write-path libraries. Every one of the six token implementations links
66
+ // `AbxMetadataLib` — the on-chain metadata field store is external as of this generation, which is
67
+ // what bought the two code types their EIP-170 headroom (and is why the two ERC-721 image
68
+ // factories, which linked NOTHING before, link one now). On top of that: `AbxParamsLib` +
69
+ // `AbxCodeLib` for the two code types, `AbxEditionLib` for all three ERC-1155 types (and
70
+ // `AbxEditionLib` itself links `AbxParamsLib`, which is why it is deployed after it).
71
+ // Recomputable via `predictMetadataLib()` / `predictParamsLib()` / `predictCodeLib()` /
72
+ // `predictEditionLib()`.
73
+ metadataLib: '0x404B48AA9784FCC042B317c64bE917390Ec4b55F',
74
+ paramsLib: '0x7200fAb33E5CbDAAb00d0b5ED3b27174F11bCf90',
75
+ codeLib: '0xD6b9cbC480D172B7Ba3f475f73bB197Dd20B047C',
76
+ editionLib: '0x277FE8B9302FC8d015EE5DE7c98E669F8cC19E2c',
29
77
  };
30
78
  export const DEPLOYMENTS = {
31
- // Sepolia (testnet) — CANONICAL infra + its own generator. Generator wired to AB's Sepolia
32
- // dependency registry; default gateways ipfs.io / arweave.net. Runtime asset pointers (SSTORE2):
33
- // abxJsPointer 0x966FEe5a9079aA3461EBA78A60Ba554693037906, gunzipScriptPointer
34
- // 0x957FBC14124db49222b90D7f2Ba594047B4F3D2C. Enumeration-reading generator; replaced
35
- // 0x819D26830E1FbD1a3b383EcA1C24bc2770000910 (params.keys convention).
79
+ // Sepolia (testnet). Generator wired to Art Blocks' Sepolia DependencyRegistryV0
80
+ // (0x5Fcc415BCFb164C5F826B5305274749BeB684e9b); SSTORE2 asset pointers
81
+ // abxJsPointer 0x16998723deD1AedB8987745db52E782d2AF62f7e,
82
+ // gunzipScriptPointer 0xEAEc86c34E02684c23236f53f9C95FEBE68DD6B0.
36
83
  11155111: {
37
84
  ...CANONICAL,
38
- generator: '0xd6371ABbaA21D4363c413816038D576F37D45bEb',
85
+ generator: '0x7fcf8118D400FF004fF0772a37c24196D9aA7b17',
39
86
  },
40
- // Base Sepolia (testnet) — same CANONICAL infra; its own generator (no AB DependencyRegistry on
41
- // this chain, so deployed with defaultDependencyRegistry = address(0); collections point at
42
- // their own). Runtime asset pointers (SSTORE2): abxJsPointer 0x8FBAEea8Fdb5B7784756239D05747751D7F72044,
43
- // gunzipScriptPointer 0xfc74aA86F18259204b3E2DcC4163dA5E54F927E6. Enumeration-reading generator;
44
- // replaced 0x229337CA6A442b266BD43B7C70F0f24A2E378cB2 (params.keys convention).
87
+ // Base Sepolia (testnet). No Art Blocks DependencyRegistry on this chain, so the generator is
88
+ // deployed with defaultDependencyRegistry = address(0) — collections point at their own. SSTORE2
89
+ // asset pointers: abxJsPointer 0x8E13Dc62B2668253337366806449a23a021Bd1A6,
90
+ // gunzipScriptPointer 0x5DF349Dc68561a5E61e04f55BF4669a930dE8b92. Recorded here because they are
91
+ // the ONLY way to re-run `DeployAbxGenerator` idempotently — without them the script writes fresh
92
+ // pointers, which moves the generator's CREATE2 address and quietly deploys a second one.
45
93
  84532: {
46
94
  ...CANONICAL,
47
- generator: '0x916288Ae2D9eEF81Db78EE8667a0ad6326dcC952',
95
+ generator: '0x05823faC69865F8A6c15c69D1Cb8F10Db87014e2',
96
+ },
97
+ // Robinhood Chain Testnet (experimental). Contracts were deployed and source-verified from this
98
+ // release on 2026-09-16. No canonical dependency registry exists, so the generator fallback is
99
+ // address(0). SSTORE2 asset pointers:
100
+ // abxJsPointer 0xbeD5a9dec0c94fF39F7874df979eBdC3Adab568D,
101
+ // gunzipScriptPointer 0x686CE62bdE8FE4Fc3de70c8fC65b574A05a23D52.
102
+ 46630: {
103
+ ...CANONICAL,
104
+ generator: '0x4F74De4835B51414a4DA83527589aEDc41A26FaE',
105
+ },
106
+ // Base (production beta). Contracts are deployed and source-verified. Base has no configured Art
107
+ // Blocks DependencyRegistry. SSTORE2 asset pointers:
108
+ // abxJsPointer 0xbeD5a9dec0c94fF39F7874df979eBdC3Adab568D,
109
+ // gunzipScriptPointer 0x686CE62bdE8FE4Fc3de70c8fC65b574A05a23D52.
110
+ 8453: {
111
+ ...CANONICAL,
112
+ generator: '0x4F74De4835B51414a4DA83527589aEDc41A26FaE',
113
+ },
114
+ // Robinhood Chain (production beta). Contracts were deployed from this release on
115
+ // 2026-09-17 and have exact-match source records on Sourcify. Beta enablement followed paired-testnet
116
+ // qualification and managed-service validation; low-value production acceptance follows under the
117
+ // beta warning. No canonical dependency registry exists, so the generator fallback is address(0).
118
+ // SSTORE2 asset pointers:
119
+ // abxJsPointer 0xbeD5a9dec0c94fF39F7874df979eBdC3Adab568D,
120
+ // gunzipScriptPointer 0x686CE62bdE8FE4Fc3de70c8fC65b574A05a23D52.
121
+ 4663: {
122
+ ...CANONICAL,
123
+ generator: '0x4F74De4835B51414a4DA83527589aEDc41A26FaE',
48
124
  },
49
125
  };
50
- /** The canonical deployment record for a chain (empty if the chain isn't shipped yet). */
126
+ /** The canonical deployment record a *new* deploy on this chain should use (empty if the chain
127
+ * isn't shipped yet). Not "what this already-deployed collection points at" — reconstruct that
128
+ * collection, then read `state.tokenURIRenderer` and `generatorFor(state)`. Later releases can
129
+ * move the canonical singletons without changing addresses already stored by a collection. */
51
130
  export function getDeployment(chainId) {
52
131
  return DEPLOYMENTS[chainId] ?? {};
53
132
  }
@@ -56,32 +135,65 @@ function pick(override, env, manifest) {
56
135
  return (override ?? env ?? manifest);
57
136
  }
58
137
  export function resolveFactory(chainId, override) {
59
- return pick(override, process.env.ABX_FACTORY, getDeployment(chainId).factory);
138
+ return pick(override, readEnv('ABX_FACTORY'), getDeployment(chainId).factory);
60
139
  }
61
140
  export function resolveSeriesFactory(chainId, override) {
62
- return pick(override, process.env.ABX_SERIES_FACTORY, getDeployment(chainId).seriesFactory);
141
+ return pick(override, readEnv('ABX_SERIES_FACTORY'), getDeployment(chainId).seriesFactory);
63
142
  }
64
143
  export function resolveRenderer(chainId, override) {
65
- return pick(override, process.env.ABX_RENDERER, getDeployment(chainId).renderer);
144
+ return pick(override, readEnv('ABX_RENDERER'), getDeployment(chainId).renderer);
66
145
  }
67
146
  export function resolveChunkStore(chainId, override) {
68
- return pick(override, process.env.ABX_CHUNK_STORE, getDeployment(chainId).chunkStore);
147
+ return pick(override, readEnv('ABX_CHUNK_STORE'), getDeployment(chainId).chunkStore);
69
148
  }
70
149
  export function resolveFixedPriceMinter(chainId, override) {
71
- return pick(override, process.env.ABX_FIXED_PRICE_MINTER, getDeployment(chainId).fixedPriceMinter);
150
+ return pick(override, readEnv('ABX_FIXED_PRICE_MINTER'), getDeployment(chainId).fixedPriceMinter);
72
151
  }
73
152
  export function resolveSeriesCodeFactory(chainId, override) {
74
- return pick(override, process.env.ABX_SERIES_CODE_FACTORY, getDeployment(chainId).seriesCodeFactory);
153
+ return pick(override, readEnv('ABX_SERIES_CODE_FACTORY'), getDeployment(chainId).seriesCodeFactory);
75
154
  }
76
155
  export function resolveSeedSource(chainId, override) {
77
- return pick(override, process.env.ABX_SEED_SOURCE, getDeployment(chainId).seedSource);
156
+ return pick(override, readEnv('ABX_SEED_SOURCE'), getDeployment(chainId).seedSource);
157
+ }
158
+ // ERC-1155 editions — same override → env → manifest precedence as every resolver above.
159
+ export function resolveOneOfOneEditionFactory(chainId, override) {
160
+ return pick(override, readEnv('ABX_ONE_OF_ONE_EDITION_FACTORY'), getDeployment(chainId).oneOfOneEditionFactory);
161
+ }
162
+ export function resolveEditionFactory(chainId, override) {
163
+ return pick(override, readEnv('ABX_EDITION_FACTORY'), getDeployment(chainId).editionFactory);
164
+ }
165
+ export function resolveEditionCodeFactory(chainId, override) {
166
+ return pick(override, readEnv('ABX_EDITION_CODE_FACTORY'), getDeployment(chainId).editionCodeFactory);
167
+ }
168
+ export function resolveFixedPriceMinter1155(chainId, override) {
169
+ return pick(override, readEnv('ABX_FIXED_PRICE_MINTER_1155'), getDeployment(chainId).fixedPriceMinter1155);
78
170
  }
79
171
  export function resolveGenerator(chainId, override) {
80
- return pick(override, process.env.ABX_GENERATOR, getDeployment(chainId).generator);
172
+ return pick(override, readEnv('ABX_GENERATOR'), getDeployment(chainId).generator);
173
+ }
174
+ /**
175
+ * Is `generator` the chain's CURRENT canonical generator — the per-collection pointer check
176
+ * `abx verify` runs for the singleton `generatorFor(state)` resolves (see site/content/docs).
177
+ *
178
+ * Binary by construction, on purpose: it answers current / not-current and nothing finer. A
179
+ * mismatch can mean either "pinned to a prior canonical generation" or "a fully custom field
180
+ * renderer", and this file's own docstring is explicit that no superseded generator address is
181
+ * EVER kept as live state here — so there is nothing recorded to tell those two apart against.
182
+ * Building that historical registry is deliberately out of scope (the factory-generation
183
+ * ladder already has one, {@link ANCHOR_GENERATIONS}; the generator deliberately does not).
184
+ *
185
+ * `null` ⇒ this chain has no canonical generator recorded at all (unshipped) — a different fact
186
+ * from "doesn't match the canonical one", so a caller must not collapse the two into `false`.
187
+ */
188
+ export function isCurrentGenerator(chainId, generator, override) {
189
+ const canonical = resolveGenerator(chainId, override);
190
+ if (!canonical)
191
+ return null;
192
+ return generator.toLowerCase() === canonical.toLowerCase();
81
193
  }
82
194
  /**
83
195
  * The known `name@version` resolution roots per chain — Art Blocks' DependencyRegistryV0
84
- * (specs/protocol/dependency-registry.md). ABX points at it and speaks its READ interface;
196
+ * (site/content/docs/protocol/code-projects.mdx). ABX points at it and speaks its READ interface;
85
197
  * we never deploy our own. The pointer a collection stores is soft and non-validating, so
86
198
  * a chain with no entry simply deploys without one (the resolver falls back to its built-in
87
199
  * CDN map) — never a blocker.
@@ -91,6 +203,6 @@ export const AB_DEPENDENCY_REGISTRY = {
91
203
  11155111: '0x5Fcc415BCFb164C5F826B5305274749BeB684e9b', // Sepolia
92
204
  };
93
205
  export function resolveDependencyRegistry(chainId, override) {
94
- return pick(override, process.env.ABX_DEPENDENCY_REGISTRY, AB_DEPENDENCY_REGISTRY[chainId]);
206
+ return pick(override, readEnv('ABX_DEPENDENCY_REGISTRY'), AB_DEPENDENCY_REGISTRY[chainId]);
95
207
  }
96
208
  //# sourceMappingURL=deployments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../src/deployments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../src/deployments.ts"],"names":[],"mappings":"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"}
package/dist/deps.d.ts CHANGED
@@ -11,10 +11,15 @@
11
11
  * in bytes32 — read directly, never through a registry.
12
12
  *
13
13
  * Also speaks the AB-compatible registry READ interface (`IDependencyRegistryV0`,
14
- * specs/protocol/dependency-registry.md): `getDependencyDetails(bytes32)` is the
15
- * load-bearing read behind the CLI's best-effort selection-time check.
14
+ * site/content/docs/protocol/code-projects.mdx): `getDependencyDetails(bytes32)` is the
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 — shared with
18
+ * `@artblocks/abx-token-api`, because it uses this exact
19
+ * vocabulary end to end).
16
20
  */
17
- import { type Address, type Hex } from 'viem';
21
+ import { type Address, type Hex, type PublicClient } from 'viem';
22
+ import type { DependencyInfo, ProjectState } from './types.js';
18
23
  /** `IAbxDependencies.Resolution` — index-aligned with the Solidity enum. */
19
24
  export declare const DEP_RESOLUTION: {
20
25
  readonly registry: 0;
@@ -40,9 +45,16 @@ export declare function parseDependencyRef(input: string): ParsedDependencyRef;
40
45
  /** The reverse read: an evented `(resolution, bytes32)` back to its human form (the twin of
41
46
  * the reconstruction fold's decode — registry ⇒ the tag, onchain ⇒ the address). */
42
47
  export declare function decodeDependencyRef(resolution: DepResolution, ref: Hex): string;
43
- /** The load-bearing read of AB's `IDependencyRegistryV0` — the exact upstream signature
44
- * (any registry ABX consumers read from speaks this shape; see the dependency-registry spec). */
45
- export declare const dependencyRegistryReadAbi: readonly [{
48
+ /**
49
+ * The load-bearing reads of AB's `IDependencyRegistryV0` — the exact upstream signatures (any
50
+ * registry ABX consumers read from speaks this shape; see the dependency-registry spec).
51
+ * `getDependencyDetails` backs both the CLI's best-effort selection-time check and the
52
+ * resolver's own resolution; `getDependencyScript` is the resolver-only per-chunk read for a
53
+ * dep whose bytes live on chain. (Merging this hoist: token-api's `DEPENDENCY_REGISTRY_ABI` and
54
+ * this module's prior `dependencyRegistryReadAbi` declared the identical `getDependencyDetails`
55
+ * entry twice — one array now backs both callers.)
56
+ */
57
+ export declare const DEPENDENCY_REGISTRY_ABI: readonly [{
46
58
  readonly type: "function";
47
59
  readonly name: "getDependencyDetails";
48
60
  readonly stateMutability: "view";
@@ -78,6 +90,20 @@ export declare const dependencyRegistryReadAbi: readonly [{
78
90
  readonly name: "scriptCount";
79
91
  readonly type: "uint24";
80
92
  }];
93
+ }, {
94
+ readonly type: "function";
95
+ readonly name: "getDependencyScript";
96
+ readonly stateMutability: "view";
97
+ readonly inputs: readonly [{
98
+ readonly name: "dependencyNameAndVersion";
99
+ readonly type: "bytes32";
100
+ }, {
101
+ readonly name: "index";
102
+ readonly type: "uint256";
103
+ }];
104
+ readonly outputs: readonly [{
105
+ readonly type: "string";
106
+ }];
81
107
  }];
82
108
  /** What the selection-time check cares about from a registry record. */
83
109
  export interface RegistryDependencyDetails {
@@ -106,4 +132,95 @@ export interface DependencyReadClient {
106
132
  * (a revert) or "check unavailable" (RPC down); this stays a pure read.
107
133
  */
108
134
  export declare function readRegistryDependency(client: DependencyReadClient, registry: Address, ref: Hex): Promise<RegistryDependencyDetails | null>;
135
+ /**
136
+ * The registry pointer a deploy with ≥1 Registry-resolution dep should set: an explicit
137
+ * `--dep-registry` wins (validated), else the chain's known AB registry (env-overridable),
138
+ * else none — the caller WARNS and skips the leg (soft pointer; the resolver falls back to
139
+ * its built-in CDN map). Never a blocker.
140
+ */
141
+ export declare function resolveDepRegistryPointer(flagValue: string | undefined, chainId: number): {
142
+ registry: Address | null;
143
+ source: 'flag' | 'default' | 'none';
144
+ };
145
+ /**
146
+ * The dependency legs of the setup multicall: one `setDependency(i, resolution, ref)` per
147
+ * dep in index order, plus the `setDependencyRegistry` leg when a pointer resolved. These
148
+ * ride the SAME atomic setup multicall as script chunks/schemas/mints, in every signing lane.
149
+ */
150
+ export declare function dependencySetupCalls(deps: ParsedDependencyRef[], registry: Address | null): Hex[];
151
+ /** One dep's selection-time verdict (Registry-resolution deps only — OnChain refs never touch a registry). */
152
+ export type DepCheck = {
153
+ dep: string;
154
+ status: 'found';
155
+ details: RegistryDependencyDetails;
156
+ } | {
157
+ dep: string;
158
+ status: 'not-found';
159
+ } | {
160
+ dep: string;
161
+ status: 'skipped';
162
+ };
163
+ /**
164
+ * Best-effort existence/on-chain-ness check of every Registry-resolution dep against the
165
+ * pointer registry. A revert or an empty record ⇒ `not-found` (a warning — the owner may
166
+ * intend a custom registry). A transport failure ⇒ the remaining checks are `skipped` and
167
+ * `rpcOk: false` — one info line, never an error: the deploy proceeds regardless.
168
+ */
169
+ export declare function checkRegistryDeps(client: DependencyReadClient, registry: Address, deps: ParsedDependencyRef[]): Promise<{
170
+ checks: DepCheck[];
171
+ rpcOk: boolean;
172
+ }>;
173
+ /** What a registry ref resolved to: on-chain bytes (decompressed, inline-ready JS) or a CDN URL. */
174
+ export type RegistryResolution = {
175
+ kind: 'onchain';
176
+ script: string;
177
+ } | {
178
+ kind: 'cdn';
179
+ url: string;
180
+ };
181
+ export interface RegistryResolveOptions {
182
+ /** Decompress gzip bytes — required only when the resolved dependency is on-chain bytes
183
+ * (`availableOnChain` with `scriptCount > 0`); a CDN-resolved or unresolved dep never needs
184
+ * it. Omitting it in that case throws {@link InflateRequiredError} naming the fix. */
185
+ inflate?: (bytes: Uint8Array) => Uint8Array;
186
+ }
187
+ /** Reset the in-process registry-resolution cache — for tests. */
188
+ export declare function resetRegistryDependencyCache(): void;
189
+ /** The collection's registry pointer, if set to a real address (zero/undefined ⇒ none). */
190
+ export declare function activeRegistry(state: ProjectState): Address | null;
191
+ /**
192
+ * Resolve one `name@version` ref through the collection's registry. Returns the resolution
193
+ * (or null when the registry couldn't answer — caller falls back to the built-in map) plus
194
+ * whether it was served from cache. Never throws for a resolution failure; a fresh one logs ONE
195
+ * warn (the negative cache rate-limits it) naming the dep and why. DOES throw
196
+ * {@link InflateRequiredError} when the resolution needs decompression and `opts.inflate` is
197
+ * absent — that is a caller-configuration bug, not a resolution outcome.
198
+ */
199
+ export declare function resolveRegistryDep(client: PublicClient, registry: Address, dep: DependencyInfo, opts?: RegistryResolveOptions): Promise<{
200
+ resolution: RegistryResolution | null;
201
+ cached: boolean;
202
+ error?: string;
203
+ }>;
204
+ /**
205
+ * Resolve a `name@version` registry ref to a CDN URL — the built-in reference convention,
206
+ * the LAST-resort rung of the resolution order (the soft registry pointer stays
207
+ * non-validating). Known runtimes get their real dist paths; anything else is best-effort npm.
208
+ */
209
+ export declare function registryDepUrl(ref: string): string | null;
210
+ /**
211
+ * The ordered dependency `<script>` tags for the generator document, each dep resolved per
212
+ * the Consumers table: registry on-chain bytes → registry preferredCDN → built-in map;
213
+ * `onchain`-resolution refs read their SSTORE2 data contract directly (never a registry).
214
+ * Never throws for a resolution failure — an unresolvable dep is skipped (after the warn) and
215
+ * the document assembles. DOES propagate {@link InflateRequiredError} (see
216
+ * {@link resolveRegistryDep}) — a missing `inflate` is a host wiring bug, not a bad dep.
217
+ */
218
+ export declare function dependencyScriptTags(client: PublicClient, state: ProjectState, opts?: RegistryResolveOptions): Promise<string[]>;
219
+ /** The spec's URL-carried tokenData size budget: gateway front-ends commonly cap request lines
220
+ * near 8KB. Applies to URL-carried `?abx=` payloads (a resolver's directory-mode 302 fallback);
221
+ * inline document serving is unaffected. Hoisted alongside the rest of this lane — the
222
+ * budget-tracking/observability surface built on it (`checkUrlBudget`, `urlBudgetStatus`) stays
223
+ * resolver-local (token-api/src/deps.ts), since it's a serving-observability concern rather than
224
+ * a resolution rule. */
225
+ export declare const URL_BUDGET_BYTES = 8192;
109
226
  //# sourceMappingURL=deps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,GAAG,EAAC,MAAM,MAAM,CAAC;AAG3D,4EAA4E;AAC5E,eAAO,MAAM,cAAc;;;CAAqC,CAAC;AACjE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEjF,oGAAoG;AACpG,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,aAAa,CAAC;IAC1B,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;sFAEsF;AACtF,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,GAAG,CAahE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAOrE;AAED;qFACqF;AACrF,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAE/E;AAID;kGACkG;AAClG,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB5B,CAAC;AAEX,wEAAwE;AACxE,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,uGAAuG;AACvG,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,IAAI,EAAE;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAA;KAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnI;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAW3C"}
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"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"}