@artblocks/abx-sdk 0.1.0-alpha.4 → 0.1.0-alpha.41

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 (159) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +130 -0
  3. package/dist/abi/generated.d.ts +8502 -129
  4. package/dist/abi/generated.d.ts.map +1 -1
  5. package/dist/abi/generated.js +40 -22
  6. package/dist/abi/generated.js.map +1 -1
  7. package/dist/abi/index.d.ts +2645 -168
  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 +24 -10
  21. package/dist/chains.d.ts.map +1 -1
  22. package/dist/chains.js +51 -17
  23. package/dist/chains.js.map +1 -1
  24. package/dist/chunks.d.ts +162 -31
  25. package/dist/chunks.d.ts.map +1 -1
  26. package/dist/chunks.js +179 -14
  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 +84 -1
  38. package/dist/create2.d.ts.map +1 -1
  39. package/dist/create2.js +158 -2
  40. package/dist/create2.js.map +1 -1
  41. package/dist/creator-token.d.ts +132 -0
  42. package/dist/creator-token.d.ts.map +1 -0
  43. package/dist/creator-token.js +183 -0
  44. package/dist/creator-token.js.map +1 -0
  45. package/dist/deploy.d.ts +234 -14
  46. package/dist/deploy.d.ts.map +1 -1
  47. package/dist/deploy.js +289 -111
  48. package/dist/deploy.js.map +1 -1
  49. package/dist/deployments.d.ts +38 -5
  50. package/dist/deployments.d.ts.map +1 -1
  51. package/dist/deployments.js +157 -30
  52. package/dist/deployments.js.map +1 -1
  53. package/dist/deps.d.ts +123 -6
  54. package/dist/deps.d.ts.map +1 -1
  55. package/dist/deps.js +249 -7
  56. package/dist/deps.js.map +1 -1
  57. package/dist/env.d.ts +5 -4
  58. package/dist/env.d.ts.map +1 -1
  59. package/dist/env.js +20 -5
  60. package/dist/env.js.map +1 -1
  61. package/dist/errors.d.ts +109 -0
  62. package/dist/errors.d.ts.map +1 -0
  63. package/dist/errors.js +148 -0
  64. package/dist/errors.js.map +1 -0
  65. package/dist/execute.d.ts +118 -0
  66. package/dist/execute.d.ts.map +1 -0
  67. package/dist/execute.js +159 -0
  68. package/dist/execute.js.map +1 -0
  69. package/dist/gateways.d.ts +79 -0
  70. package/dist/gateways.d.ts.map +1 -0
  71. package/dist/gateways.js +156 -0
  72. package/dist/gateways.js.map +1 -0
  73. package/dist/generator-document.d.ts +57 -0
  74. package/dist/generator-document.d.ts.map +1 -0
  75. package/dist/generator-document.js +123 -0
  76. package/dist/generator-document.js.map +1 -0
  77. package/dist/generator.d.ts +44 -2
  78. package/dist/generator.d.ts.map +1 -1
  79. package/dist/generator.js +29 -0
  80. package/dist/generator.js.map +1 -1
  81. package/dist/index.d.ts +19 -3
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +19 -3
  84. package/dist/index.js.map +1 -1
  85. package/dist/inspect.d.ts +48 -0
  86. package/dist/inspect.d.ts.map +1 -0
  87. package/dist/inspect.js +295 -0
  88. package/dist/inspect.js.map +1 -0
  89. package/dist/migrate.d.ts +41 -0
  90. package/dist/migrate.d.ts.map +1 -0
  91. package/dist/migrate.js +142 -0
  92. package/dist/migrate.js.map +1 -0
  93. package/dist/mime.d.ts +11 -0
  94. package/dist/mime.d.ts.map +1 -0
  95. package/dist/mime.js +40 -0
  96. package/dist/mime.js.map +1 -0
  97. package/dist/node.d.ts +69 -0
  98. package/dist/node.d.ts.map +1 -0
  99. package/dist/node.js +92 -0
  100. package/dist/node.js.map +1 -0
  101. package/dist/onchain-uri.d.ts +110 -0
  102. package/dist/onchain-uri.d.ts.map +1 -0
  103. package/dist/onchain-uri.js +276 -0
  104. package/dist/onchain-uri.js.map +1 -0
  105. package/dist/ops.d.ts +507 -14
  106. package/dist/ops.d.ts.map +1 -1
  107. package/dist/ops.js +850 -34
  108. package/dist/ops.js.map +1 -1
  109. package/dist/policy.d.ts +57 -0
  110. package/dist/policy.d.ts.map +1 -0
  111. package/dist/policy.js +35 -0
  112. package/dist/policy.js.map +1 -0
  113. package/dist/probe.d.ts +58 -0
  114. package/dist/probe.d.ts.map +1 -1
  115. package/dist/probe.js +190 -9
  116. package/dist/probe.js.map +1 -1
  117. package/dist/reconstruct.d.ts +141 -3
  118. package/dist/reconstruct.d.ts.map +1 -1
  119. package/dist/reconstruct.js +479 -100
  120. package/dist/reconstruct.js.map +1 -1
  121. package/dist/resume.d.ts +147 -0
  122. package/dist/resume.d.ts.map +1 -0
  123. package/dist/resume.js +146 -0
  124. package/dist/resume.js.map +1 -0
  125. package/dist/script-chunks.d.ts +105 -0
  126. package/dist/script-chunks.d.ts.map +1 -0
  127. package/dist/script-chunks.js +158 -0
  128. package/dist/script-chunks.js.map +1 -0
  129. package/dist/service.d.ts +155 -9
  130. package/dist/service.d.ts.map +1 -1
  131. package/dist/service.js +103 -11
  132. package/dist/service.js.map +1 -1
  133. package/dist/spine.d.ts +47 -4
  134. package/dist/spine.d.ts.map +1 -1
  135. package/dist/spine.js +0 -0
  136. package/dist/spine.js.map +1 -1
  137. package/dist/staging.d.ts +139 -0
  138. package/dist/staging.d.ts.map +1 -0
  139. package/dist/staging.js +139 -0
  140. package/dist/staging.js.map +1 -0
  141. package/dist/token.d.ts +11 -1
  142. package/dist/token.d.ts.map +1 -1
  143. package/dist/token.js +32 -1
  144. package/dist/token.js.map +1 -1
  145. package/dist/tokendata.d.ts +63 -3
  146. package/dist/tokendata.d.ts.map +1 -1
  147. package/dist/tokendata.js +81 -19
  148. package/dist/tokendata.js.map +1 -1
  149. package/dist/tokens.d.ts +119 -0
  150. package/dist/tokens.d.ts.map +1 -0
  151. package/dist/tokens.js +317 -0
  152. package/dist/tokens.js.map +1 -0
  153. package/dist/types.d.ts +107 -5
  154. package/dist/types.d.ts.map +1 -1
  155. package/dist/util.d.ts +74 -0
  156. package/dist/util.d.ts.map +1 -0
  157. package/dist/util.js +106 -0
  158. package/dist/util.js.map +1 -0
  159. package/package.json +15 -6
package/dist/deploy.js CHANGED
@@ -1,6 +1,7 @@
1
- import { concat, getAddress, toHex, zeroAddress, keccak256, toBytes, } from 'viem';
2
- import { oneOfOneImageFactoryAbi, oneOfOneImageFactoryBytecode, seriesImageFactoryAbi, seriesImageFactoryBytecode, abxMetadataRendererAbi, abxMetadataRendererBytecode, abxFixedPriceMinterBytecode, seriesCodeFactoryAbi, seriesCodeFactoryBytecode, abxSeedSourceBytecode, abxParamsLibBytecode, abxCodeLibBytecode, } from './abi/index.js';
3
- import { ABX_SALT, CREATE2_PROXY, create2Calldata, predictCreate2Address } from './create2.js';
1
+ import { concat, getAddress, toHex, zeroAddress } from 'viem';
2
+ import { oneOfOneImageFactoryAbi, seriesImageFactoryAbi, abxMetadataRendererAbi, seriesCodeFactoryAbi, abxMetadataLibBytecode, abxParamsLibBytecode, abxCodeLibBytecode, oneOfOneEditionFactoryAbi, editionImageFactoryAbi, editionCodeFactoryAbi, } from './abi/index.js';
3
+ import { predictFactory, predictSeriesFactory, predictRenderer, predictFixedPriceMinter, predictSeedSource, predictOneOfOneEditionFactory, predictEditionFactory, predictFixedPriceMinter1155, predictCreate2Address, predictSeriesCodeFactory, predictEditionCodeFactory, linkSeriesCodeFactory, linkEditionCodeFactory, linkEditionLib, create2Calldata, CREATE2_PROXY, ABX_SALT, } from './create2.js';
4
+ import { prepareDeployFactory, prepareDeploySeriesFactory, prepareDeployRenderer, prepareDeployFixedPriceMinter, prepareDeploySeedSource, prepareDeployOneOfOne, prepareDeploySeries, prepareDeployOneOfOneEdition, prepareDeployOneOfOneEditionFactory, prepareDeployEditionImage, prepareDeployEditionFactory, prepareDeployFixedPriceMinter1155, } from './ops.js';
4
5
  /** 12 bytes of entropy — the non-guard tail of a deterministic-deploy salt. */
5
6
  function entropy12() {
6
7
  return toHex(crypto.getRandomValues(new Uint8Array(12)));
@@ -21,6 +22,11 @@ export function saltFor(deployer, entropy = entropy12()) {
21
22
  * A permissionless salt: an all-zero guard prefix, so **anyone** may deploy to the
22
23
  * address it predicts (a shared, canonical deployment). No front-run protection —
23
24
  * use only when a publicly-deployable, caller-independent address is the point.
25
+ *
26
+ * **Never use this for a pre-published or pre-funded address.** If you predict an address with
27
+ * this salt and share it (or send value to it) before deploying, a third party can occupy that
28
+ * exact address first with their own `InitParams` (their owner, their URIs). For any address a
29
+ * creator reserves, use {@link saltFor} — its deployer-bound prefix is front-run-proof.
24
30
  */
25
31
  export function permissionlessSalt(entropy = entropy12()) {
26
32
  return concat([zeroAddress, entropy]); // zero prefix + 12 bytes
@@ -29,108 +35,183 @@ export function permissionlessSalt(entropy = entropy12()) {
29
35
  export function saltGuard(salt) {
30
36
  return getAddress(`0x${salt.slice(2, 42)}`);
31
37
  }
38
+ /** The chain id a `PublicClient` is bound to — `makePublicClient` always sets `.chain`, but a
39
+ * caller-constructed one might not, so fall back to the live read rather than assume. */
40
+ async function chainIdOf(publicClient) {
41
+ return publicClient.chain?.id ?? (await publicClient.getChainId());
42
+ }
32
43
  /**
33
44
  * Deploy the canonical clone factory — the trust anchor. Ownerless and immutable;
34
45
  * once deployed, its address is what platforms allowlist. Deploy this once per
35
46
  * (chain, core version) and reuse it for every clone.
36
47
  */
37
- export async function deployFactory(wallet, account, publicClient) {
38
- const txHash = await wallet.deployContract({
39
- abi: oneOfOneImageFactoryAbi,
40
- bytecode: oneOfOneImageFactoryBytecode,
41
- account,
42
- chain: wallet.chain,
43
- args: [],
44
- });
45
- const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
46
- if (!receipt.contractAddress)
47
- throw new Error('Factory deploy produced no contract address');
48
- const factory = receipt.contractAddress;
48
+ export async function deployFactory(send, publicClient) {
49
+ const chainId = await chainIdOf(publicClient);
50
+ // OneOfOneImage links AbxMetadataLib since the metadata field store was externalized. These two
51
+ // factories linked NOTHING before, so this leg is new here rather than merely reordered —
52
+ // and without it the factory deploys against an unresolved placeholder.
53
+ const metadataLib = await ensureMetadataLib(send, publicClient, chainId, 'OneOfOneImage');
54
+ // CREATE2 via the keyless proxy: the tx targets the PROXY, so it is a call, not a contract
55
+ // creation, and `receipt.contractAddress` is null by protocol. Compute the address instead —
56
+ // the same thing `deployRenderer` and every newer factory bootstrap here already do. Reading
57
+ // the receipt made the first bootstrap on a fresh chain always throw AFTER the factory had
58
+ // actually landed, so `--bootstrap-factory` appeared broken while a second run "fixed" it.
59
+ const factory = predictFactory();
60
+ const receipt = await send(prepareDeployFactory({ chainId }));
49
61
  const implementation = (await publicClient.readContract({
50
62
  address: factory,
51
63
  abi: oneOfOneImageFactoryAbi,
52
64
  functionName: 'implementation',
53
65
  }));
54
- return { factory, implementation, txHash, blockNumber: receipt.blockNumber };
66
+ return { factory, implementation, metadataLib, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
55
67
  }
56
68
  /**
57
69
  * Deploy the canonical Series clone factory — the trust anchor for multi-token drops.
58
70
  * Ownerless and immutable; the sibling of `deployFactory`. Deploy once per (chain, core
59
71
  * version). The shared renderer + chunk store are reused (deploy them separately).
60
72
  */
61
- export async function deploySeriesFactory(wallet, account, publicClient) {
62
- const txHash = await wallet.deployContract({
63
- abi: seriesImageFactoryAbi,
64
- bytecode: seriesImageFactoryBytecode,
65
- account,
66
- chain: wallet.chain,
67
- args: [],
68
- });
69
- const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
70
- if (!receipt.contractAddress)
71
- throw new Error('Series factory deploy produced no contract address');
72
- const factory = receipt.contractAddress;
73
+ export async function deploySeriesFactory(send, publicClient) {
74
+ const chainId = await chainIdOf(publicClient);
75
+ // SeriesImage links AbxMetadataLib since the metadata field store was externalized. These two
76
+ // factories linked NOTHING before, so this leg is new here rather than merely reordered —
77
+ // and without it the factory deploys against an unresolved placeholder.
78
+ const metadataLib = await ensureMetadataLib(send, publicClient, chainId, 'SeriesImage');
79
+ // Deterministic address, not a receipt read — see `deployFactory` for why the receipt is null.
80
+ const factory = predictSeriesFactory();
81
+ const receipt = await send(prepareDeploySeriesFactory({ chainId }));
73
82
  const implementation = (await publicClient.readContract({
74
83
  address: factory,
75
84
  abi: seriesImageFactoryAbi,
76
85
  functionName: 'implementation',
77
86
  }));
78
- return { factory, implementation, txHash, blockNumber: receipt.blockNumber };
87
+ return { factory, implementation, metadataLib, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
79
88
  }
80
- /** The solc link placeholder for a fully-qualified library name: `__$<keccak(fqn)[0:34]>$__`. */
81
- function libPlaceholder(fullyQualified) {
82
- return `__$${keccak256(toBytes(fullyQualified)).slice(2, 36)}$__`;
89
+ /**
90
+ * CREATE2-deploy one write-path library through the keyless proxy at its canonical salt — the TS
91
+ * twin of `DeployLibraries.s.sol`, so an SDK-bootstrapped chain and a forge-bootstrapped chain put
92
+ * the library at the SAME address, and every chain agrees with every other.
93
+ *
94
+ * Idempotent out of necessity, not politeness: the proxy reverts when the target address already
95
+ * has code, so a chain that forge (or an earlier bootstrap) already set up must be detected and
96
+ * reused rather than re-deployed. That is also what makes a partially-bootstrapped chain
97
+ * recoverable — re-running finishes the job instead of failing on step one.
98
+ */
99
+ async function ensureLibrary(send, publicClient, args) {
100
+ const address = predictCreate2Address(args.salt, args.bytecode);
101
+ const code = await publicClient.getCode({ address });
102
+ if (code && code !== '0x')
103
+ return address; // already on this chain (forge, or an earlier bootstrap)
104
+ await send({
105
+ op: args.op,
106
+ to: CREATE2_PROXY,
107
+ data: create2Calldata(args.salt, args.bytecode),
108
+ value: '0x0',
109
+ chainId: args.chainId,
110
+ summary: args.summary,
111
+ fields: { address },
112
+ });
113
+ return address;
114
+ }
115
+ // The three write-path library legs, one wrapper each over {@link ensureLibrary}. Named rather than
116
+ // inlined per factory because FOUR of ABX's six factories are library-linked and each links a
117
+ // different subset: SeriesCodeFactory {params, code}, EditionCodeFactory {params, code, edition},
118
+ // OneOfOneEditionFactory + EditionImageFactory {params, edition} (params because AbxEditionLib
119
+ // itself delegatecalls it). A factory bootstrap composes the legs it needs, in order; whichever
120
+ // legs another bootstrap already ran are reused from chain, never redeployed.
121
+ /** `AbxMetadataLib` at its canonical salt — the metadata field store that ALL SIX token types
122
+ * delegatecall. It links nothing itself, so it can be deployed first and unconditionally; every
123
+ * factory bootstrap needs it, including the two ERC-721 image ones that linked nothing before. */
124
+ const ensureMetadataLib = (send, publicClient, chainId, forWhom) => ensureLibrary(send, publicClient, {
125
+ op: 'deploy-metadata-lib',
126
+ salt: ABX_SALT.metadataLib,
127
+ bytecode: abxMetadataLibBytecode,
128
+ chainId,
129
+ summary: `Deploy AbxMetadataLib (${forWhom} metadata field store, CREATE2 — deterministic address)`,
130
+ });
131
+ /** `AbxParamsLib` at its canonical salt — the params write path, and `AbxEditionLib`'s own dependency. */
132
+ const ensureParamsLib = (send, publicClient, chainId, forWhom) => ensureLibrary(send, publicClient, {
133
+ op: 'deploy-params-lib',
134
+ salt: ABX_SALT.paramsLib,
135
+ bytecode: abxParamsLibBytecode,
136
+ chainId,
137
+ summary: `Deploy AbxParamsLib (${forWhom} write-path library, CREATE2 — deterministic address)`,
138
+ });
139
+ /** `AbxCodeLib` at its canonical salt — the script/code write path of the two code token types. */
140
+ const ensureCodeLib = (send, publicClient, chainId, forWhom) => ensureLibrary(send, publicClient, {
141
+ op: 'deploy-code-lib',
142
+ salt: ABX_SALT.codeLib,
143
+ bytecode: abxCodeLibBytecode,
144
+ chainId,
145
+ summary: `Deploy AbxCodeLib (${forWhom} write-path library, CREATE2 — deterministic address)`,
146
+ });
147
+ /** `AbxEditionLib` at its canonical salt — the 1155 uri / creator-token / edition-supply write path
148
+ * that ALL THREE edition token types delegatecall. Must be called after {@link ensureParamsLib}:
149
+ * this library's own bytecode delegatecalls `AbxParamsLib`, so `linkEditionLib()` — and therefore
150
+ * the address it lands at — is a function of `predictParamsLib()`. Deploying it raw is the opaque
151
+ * `Invalid byte sequence` bug; `__$…$__` is not hex. */
152
+ const ensureEditionLib = (send, publicClient, chainId, forWhom) => ensureLibrary(send, publicClient, {
153
+ op: 'deploy-edition-lib',
154
+ salt: ABX_SALT.editionLib,
155
+ bytecode: linkEditionLib(),
156
+ chainId,
157
+ summary: `Deploy AbxEditionLib (${forWhom} write-path library, CREATE2 — deterministic address)`,
158
+ });
159
+ /** Guard the one failure mode a CREATE2 deploy has: the address is already taken (the keyless proxy
160
+ * reverts, with nothing useful in the revert data). Says so in words instead. */
161
+ async function assertVacant(publicClient, what, address, chainId) {
162
+ const code = await publicClient.getCode({ address });
163
+ if (code && code !== '0x') {
164
+ throw new Error(`${what} is already deployed at its canonical address ${address} on chain ${chainId} — resolve it instead of deploying (CREATE2 cannot redeploy to an occupied address)`);
165
+ }
83
166
  }
84
167
  /**
85
- * Deploy the code-project trust root on a chain with no canonical set: the two
86
- * delegatecalled write-path libraries first ({AbxParamsLib}, {AbxCodeLib}), the factory
87
- * bytecode LINKED against them (solc placeholders replaced — what forge does at build
88
- * time, done here so a sandbox/fresh chain needs no forge), then the factory (whose
89
- * constructor deploys the {SeriesCode} implementation).
168
+ * Deploy the code-project trust root on a chain with no canonical set: the two delegatecalled
169
+ * write-path libraries first ({AbxParamsLib}, {AbxCodeLib}), the factory bytecode LINKED against
170
+ * them (solc placeholders replaced — what forge does at build time, done here so a sandbox/fresh
171
+ * chain needs no forge), then the factory (whose constructor deploys the {SeriesCode}
172
+ * implementation).
173
+ *
174
+ * All three go through the keyless CREATE2 proxy at canonical `AbxSalts` salts, so all three land at
175
+ * addresses that are the same on every chain and computable before the first transaction — the
176
+ * factory's included: linking substitutes an address into already-compiled bytecode, so once the
177
+ * libraries are predictable the linked initcode is fixed too (`predictSeriesCodeFactory()`). The
178
+ * ordering below is still sequential, but now for a plain data-dependency reason rather than a
179
+ * nonce one. See `create2.ts`'s write-path-library note for why the old "libraries are
180
+ * nonce-dependent" story was wrong, and for the compile-time-linking trap that IS real.
90
181
  */
91
- export async function deploySeriesCodeFactory(wallet, account, publicClient) {
92
- const deployRaw = async (bytecode) => {
93
- const hash = await wallet.sendTransaction({ data: bytecode, account, chain: wallet.chain, to: null });
94
- const receipt = await publicClient.waitForTransactionReceipt({ hash });
95
- if (!receipt.contractAddress)
96
- throw new Error('library deploy produced no contract address');
97
- return { address: receipt.contractAddress, hash };
98
- };
99
- const { address: paramsLib } = await deployRaw(abxParamsLibBytecode);
100
- const { address: codeLib } = await deployRaw(abxCodeLibBytecode);
101
- const linked = seriesCodeFactoryBytecode
102
- .split(libPlaceholder('src/libraries/AbxParamsLib.sol:AbxParamsLib'))
103
- .join(paramsLib.slice(2).toLowerCase())
104
- .split(libPlaceholder('src/libraries/AbxCodeLib.sol:AbxCodeLib'))
105
- .join(codeLib.slice(2).toLowerCase());
106
- if (linked.includes('__$'))
107
- throw new Error('unlinked library placeholder remains in SeriesCodeFactory bytecode');
108
- const txHash = await wallet.deployContract({ abi: seriesCodeFactoryAbi, bytecode: linked, account, chain: wallet.chain, args: [] });
109
- const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
110
- if (!receipt.contractAddress)
111
- throw new Error('SeriesCodeFactory deploy produced no contract address');
112
- const factory = receipt.contractAddress;
182
+ export async function deploySeriesCodeFactory(send, publicClient) {
183
+ const chainId = await chainIdOf(publicClient);
184
+ const metadataLib = await ensureMetadataLib(send, publicClient, chainId, 'SeriesCode');
185
+ const paramsLib = await ensureParamsLib(send, publicClient, chainId, 'SeriesCode');
186
+ const codeLib = await ensureCodeLib(send, publicClient, chainId, 'SeriesCode');
187
+ const linked = linkSeriesCodeFactory();
188
+ const factory = predictSeriesCodeFactory();
189
+ await assertVacant(publicClient, 'SeriesCodeFactory', factory, chainId);
190
+ const receipt = await send({
191
+ op: 'deploy-series-code-factory',
192
+ to: CREATE2_PROXY,
193
+ data: create2Calldata(ABX_SALT.seriesCodeFactory, linked),
194
+ value: '0x0',
195
+ chainId,
196
+ summary: 'Deploy the SeriesCode clone factory (trust anchor), linked against AbxParamsLib/AbxCodeLib',
197
+ fields: { factory, metadataLib, paramsLib, codeLib },
198
+ });
113
199
  const implementation = (await publicClient.readContract({
114
200
  address: factory,
115
201
  abi: seriesCodeFactoryAbi,
116
202
  functionName: 'implementation',
117
203
  }));
118
- return { factory, implementation, paramsLib, codeLib, txHash, blockNumber: receipt.blockNumber };
204
+ return { factory, implementation, metadataLib, paramsLib, codeLib, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
119
205
  }
120
206
  /** Deploy the canonical pseudorandom seed source (for chains without one shipped). CREATE2 via the
121
207
  * keyless proxy + canonical salt → the SAME address on every chain (matches `DeploySeedSource.s.sol`
122
208
  * and the manifest). The seed source is single-profile, so — unlike the SeriesCode factory — the
123
209
  * SDK's bytecode is the canonical one. */
124
- export async function deploySeedSource(wallet, account, publicClient) {
125
- const seedSource = predictCreate2Address(ABX_SALT.seedSource, abxSeedSourceBytecode);
126
- const txHash = await wallet.sendTransaction({
127
- account,
128
- chain: wallet.chain,
129
- to: CREATE2_PROXY,
130
- data: create2Calldata(ABX_SALT.seedSource, abxSeedSourceBytecode),
131
- });
132
- await publicClient.waitForTransactionReceipt({ hash: txHash });
133
- return { seedSource, txHash };
210
+ export async function deploySeedSource(send, publicClient) {
211
+ const chainId = await chainIdOf(publicClient);
212
+ const seedSource = predictSeedSource();
213
+ const receipt = await send(prepareDeploySeedSource({ chainId }));
214
+ return { seedSource, txHash: receipt.transactionHash };
134
215
  }
135
216
  /**
136
217
  * Deploy `AbxMetadataRenderer` — the canonical on-chain metadata renderer.
@@ -138,24 +219,19 @@ export async function deploySeedSource(wallet, account, publicClient) {
138
219
  * their URI-renderer config. It reads each token's on-chain fields and returns a
139
220
  * `data:application/json` URI, so a token using it resolves with zero off-chain infra.
140
221
  */
141
- export async function deployRenderer(wallet, account, publicClient) {
222
+ export async function deployRenderer(send, publicClient) {
142
223
  // CREATE2 via the keyless proxy + canonical salt → the SAME address on every chain (matches the
143
224
  // forge `DeployRenderer` script and the manifest). Address is deterministic, so compute it (the
144
225
  // tx targets the proxy, not a contract creation, so `receipt.contractAddress` is null).
145
- const renderer = predictCreate2Address(ABX_SALT.renderer, abxMetadataRendererBytecode);
146
- const txHash = await wallet.sendTransaction({
147
- account,
148
- chain: wallet.chain,
149
- to: CREATE2_PROXY,
150
- data: create2Calldata(ABX_SALT.renderer, abxMetadataRendererBytecode),
151
- });
152
- const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
226
+ const chainId = await chainIdOf(publicClient);
227
+ const renderer = predictRenderer();
228
+ const receipt = await send(prepareDeployRenderer({ chainId }));
153
229
  const specVersion = (await publicClient.readContract({
154
230
  address: renderer,
155
231
  abi: abxMetadataRendererAbi,
156
232
  functionName: 'specVersion',
157
233
  }));
158
- return { renderer, specVersion, txHash, blockNumber: receipt.blockNumber };
234
+ return { renderer, specVersion, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
159
235
  }
160
236
  /**
161
237
  * Deploy `AbxFixedPriceMinter` — the canonical, ownerless, multi-tenant fixed-price sale
@@ -163,18 +239,13 @@ export async function deployRenderer(wallet, account, publicClient) {
163
239
  * (config is keyed by token address, authority defers to each token's owner). Sibling of
164
240
  * `deployRenderer` — ownerless, no constructor args, safe for any funded signer to stand up.
165
241
  */
166
- export async function deployFixedPriceMinter(wallet, account, publicClient) {
242
+ export async function deployFixedPriceMinter(send, publicClient) {
167
243
  // CREATE2 via the keyless proxy + canonical salt → the SAME address on every chain (matches the
168
244
  // forge `DeployMinter` script and the manifest). Address is deterministic, so compute it.
169
- const minter = predictCreate2Address(ABX_SALT.fixedPriceMinter, abxFixedPriceMinterBytecode);
170
- const txHash = await wallet.sendTransaction({
171
- account,
172
- chain: wallet.chain,
173
- to: CREATE2_PROXY,
174
- data: create2Calldata(ABX_SALT.fixedPriceMinter, abxFixedPriceMinterBytecode),
175
- });
176
- const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
177
- return { minter, txHash, blockNumber: receipt.blockNumber };
245
+ const chainId = await chainIdOf(publicClient);
246
+ const minter = predictFixedPriceMinter();
247
+ const receipt = await send(prepareDeployFixedPriceMinter({ chainId }));
248
+ return { minter, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
178
249
  }
179
250
  /**
180
251
  * The address `deployOneOfOne` will produce for this (factory, salt). It's a pure
@@ -195,18 +266,11 @@ export async function predictClone(publicClient, args) {
195
266
  * address (so URIs can be baked in before deploy). Returns the clone address and
196
267
  * the block it landed in — the indexer's start block.
197
268
  */
198
- export async function deployOneOfOne(wallet, account, publicClient, args) {
269
+ export async function deployOneOfOne(send, publicClient, args) {
199
270
  const clone = await predictClone(publicClient, { factory: args.factory, salt: args.salt });
200
- const { request } = await publicClient.simulateContract({
201
- address: args.factory,
202
- abi: oneOfOneImageFactoryAbi,
203
- functionName: 'deployDeterministic',
204
- args: [args.params, args.salt],
205
- account,
206
- });
207
- const txHash = await wallet.writeContract(request);
208
- const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
209
- return { clone, txHash, blockNumber: receipt.blockNumber };
271
+ const chainId = await chainIdOf(publicClient);
272
+ const receipt = await send(prepareDeployOneOfOne({ factory: args.factory, params: args.params, salt: args.salt, chainId, clone }));
273
+ return { clone, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
210
274
  }
211
275
  /**
212
276
  * Deploy a Series (multi-token) NFT as an immutable EIP-1167 clone, at a deterministic
@@ -215,17 +279,131 @@ export async function deployOneOfOne(wallet, account, publicClient, args) {
215
279
  * computes with its own implementation. `params.mintCount`/`mintTo` decide the deploy-time
216
280
  * mint; anything larger mints post-deploy under a gas budget.
217
281
  */
218
- export async function deploySeries(wallet, account, publicClient, args) {
282
+ export async function deploySeries(send, publicClient, args) {
219
283
  const clone = await predictClone(publicClient, { factory: args.factory, salt: args.salt });
220
- const { request } = await publicClient.simulateContract({
221
- address: args.factory,
222
- abi: seriesImageFactoryAbi,
223
- functionName: 'deployDeterministic',
224
- args: [args.params, args.salt],
225
- account,
284
+ const chainId = await chainIdOf(publicClient);
285
+ const receipt = await send(prepareDeploySeries({ factory: args.factory, params: args.params, salt: args.salt, chainId, clone }));
286
+ return { clone, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
287
+ }
288
+ // ── ERC-1155 editions ──────────────────────────────────────────────────────────
289
+ /**
290
+ * Deploy the canonical `OneOfOneEditionFactory` — the 1/1-edition trust anchor. Unlike {@link
291
+ * deployFactory} (the 721 1/1 factory, a plain contract creation), this one goes through the
292
+ * keyless CREATE2 proxy with the canonical `AbxSalts.ONE_OF_ONE_EDITION_FACTORY` salt — matching
293
+ * how `contracts/script/DeployOneOfOneEdition.s.sol` actually deploys it — so its address is the
294
+ * SAME on every chain and predictable before the deploy tx (`predictOneOfOneEditionFactory()`).
295
+ *
296
+ * Library-linked, like the two code factories: `OneOfOneEdition` delegates its uri /
297
+ * creator-token / edition-supply bodies into `AbxEditionLib`, so this deploys `AbxParamsLib` +
298
+ * `AbxEditionLib` first ({@link ensureEditionLibraries}) and sends the factory's initcode LINKED
299
+ * against the settled library address. Linking costs nothing in determinism — see `create2.ts`'s
300
+ * write-path-library note.
301
+ */
302
+ export async function deployOneOfOneEditionFactory(send, publicClient) {
303
+ const chainId = await chainIdOf(publicClient);
304
+ const metadataLib = await ensureMetadataLib(send, publicClient, chainId, 'OneOfOneEdition');
305
+ const paramsLib = await ensureParamsLib(send, publicClient, chainId, 'OneOfOneEdition');
306
+ const editionLib = await ensureEditionLib(send, publicClient, chainId, 'OneOfOneEdition');
307
+ const factory = predictOneOfOneEditionFactory();
308
+ await assertVacant(publicClient, 'OneOfOneEditionFactory', factory, chainId);
309
+ const receipt = await send(prepareDeployOneOfOneEditionFactory({ chainId }));
310
+ const implementation = (await publicClient.readContract({
311
+ address: factory,
312
+ abi: oneOfOneEditionFactoryAbi,
313
+ functionName: 'implementation',
314
+ }));
315
+ return { factory, implementation, metadataLib, paramsLib, editionLib, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
316
+ }
317
+ /** Deploy the canonical `EditionImageFactory` — the multi-work edition trust anchor. CREATE2
318
+ * via the keyless proxy + the canonical `AbxSalts.EDITION_FACTORY` salt (see {@link
319
+ * deployOneOfOneEditionFactory}'s doc note on why this differs from the 721 series factory's
320
+ * plain-creation bootstrap, and why `AbxEditionLib` has to land first). */
321
+ export async function deployEditionFactory(send, publicClient) {
322
+ const chainId = await chainIdOf(publicClient);
323
+ const metadataLib = await ensureMetadataLib(send, publicClient, chainId, 'EditionImage');
324
+ const paramsLib = await ensureParamsLib(send, publicClient, chainId, 'EditionImage');
325
+ const editionLib = await ensureEditionLib(send, publicClient, chainId, 'EditionImage');
326
+ const factory = predictEditionFactory();
327
+ await assertVacant(publicClient, 'EditionImageFactory', factory, chainId);
328
+ const receipt = await send(prepareDeployEditionFactory({ chainId }));
329
+ const implementation = (await publicClient.readContract({
330
+ address: factory,
331
+ abi: editionImageFactoryAbi,
332
+ functionName: 'implementation',
333
+ }));
334
+ return { factory, implementation, metadataLib, paramsLib, editionLib, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
335
+ }
336
+ /** Deploy `AbxFixedPriceMinter1155` — the canonical, ownerless, multi-tenant edition sale
337
+ * singleton (the Minter spine's edition lane). Sibling of `deployFixedPriceMinter`, one id
338
+ * finer at the contract level (`(token, id)`-keyed sales) — the deploy itself is identical in
339
+ * shape: CREATE2 via the keyless proxy + canonical salt. */
340
+ export async function deployFixedPriceMinter1155(send, publicClient) {
341
+ const chainId = await chainIdOf(publicClient);
342
+ const minter = predictFixedPriceMinter1155();
343
+ const receipt = await send(prepareDeployFixedPriceMinter1155({ chainId }));
344
+ return { minter, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
345
+ }
346
+ /**
347
+ * Deploy a 1/1 edition NFT as an immutable EIP-1167 clone, at a deterministic address. The
348
+ * edition twin of `deployOneOfOne` — `predictClone` works unchanged (the
349
+ * `predictDeterministicAddress` fragment is identical across every factory, 721 or 1155).
350
+ */
351
+ export async function deployOneOfOneEdition(send, publicClient, args) {
352
+ const clone = await predictClone(publicClient, { factory: args.factory, salt: args.salt });
353
+ const chainId = await chainIdOf(publicClient);
354
+ const receipt = await send(prepareDeployOneOfOneEdition({ factory: args.factory, params: args.params, salt: args.salt, chainId, clone }));
355
+ return { clone, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
356
+ }
357
+ /**
358
+ * Deploy an EditionImage (multi-work edition) NFT as an immutable EIP-1167 clone, at a
359
+ * deterministic address. The edition twin of `deploySeries`.
360
+ */
361
+ export async function deployEditionImage(send, publicClient, args) {
362
+ const clone = await predictClone(publicClient, { factory: args.factory, salt: args.salt });
363
+ const chainId = await chainIdOf(publicClient);
364
+ const receipt = await send(prepareDeployEditionImage({ factory: args.factory, params: args.params, salt: args.salt, chainId, clone }));
365
+ return { clone, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
366
+ }
367
+ /**
368
+ * Deploy the code-project edition trust root on a chain with no canonical set: the THREE
369
+ * delegatecalled write-path libraries first ({AbxParamsLib}, {AbxCodeLib}, {AbxEditionLib} — the
370
+ * edition twin of `deploySeriesCodeFactory`'s two-lib dance, plus the 1155 write path {@link
371
+ * deployOneOfOneEditionFactory} and {@link deployEditionFactory} link too), the factory bytecode
372
+ * LINKED against all three, then the factory (whose constructor deploys the {EditionCode}
373
+ * implementation). CREATE2 at canonical `AbxSalts` salts throughout, exactly like
374
+ * {@link deploySeriesCodeFactory}, so the whole set is cross-chain-identical and predictable
375
+ * (`predictEditionCodeFactory()`). This is the only factory linking all three libraries; it is NOT
376
+ * the only one linking {AbxEditionLib} — all three 1155 token types delegate into it.
377
+ *
378
+ * One wrinkle the 721 twin doesn't have: {AbxEditionLib} delegatecalls {AbxParamsLib}, so its OWN
379
+ * shipped bytecode carries an unlinked placeholder and has to be linked before it can be deployed
380
+ * ({@link ensureEditionLib} does this via `linkEditionLib()`). Deploying it raw is what made this
381
+ * function fail with an opaque `Invalid byte sequence` — `__$…$__` is not hex, and the old
382
+ * unlinked-placeholder guard only checked the factory's bytecode, never the library's.
383
+ */
384
+ export async function deployEditionCodeFactory(send, publicClient) {
385
+ const chainId = await chainIdOf(publicClient);
386
+ const metadataLib = await ensureMetadataLib(send, publicClient, chainId, 'EditionCode');
387
+ const paramsLib = await ensureParamsLib(send, publicClient, chainId, 'EditionCode');
388
+ const codeLib = await ensureCodeLib(send, publicClient, chainId, 'EditionCode');
389
+ const editionLib = await ensureEditionLib(send, publicClient, chainId, 'EditionCode');
390
+ const linked = linkEditionCodeFactory();
391
+ const factory = predictEditionCodeFactory();
392
+ await assertVacant(publicClient, 'EditionCodeFactory', factory, chainId);
393
+ const receipt = await send({
394
+ op: 'deploy-edition-code-factory',
395
+ to: CREATE2_PROXY,
396
+ data: create2Calldata(ABX_SALT.editionCodeFactory, linked),
397
+ value: '0x0',
398
+ chainId,
399
+ summary: 'Deploy the EditionCode clone factory (trust anchor), linked against AbxParamsLib/AbxCodeLib/AbxEditionLib',
400
+ fields: { factory, metadataLib, paramsLib, codeLib, editionLib },
226
401
  });
227
- const txHash = await wallet.writeContract(request);
228
- const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
229
- return { clone, txHash, blockNumber: receipt.blockNumber };
402
+ const implementation = (await publicClient.readContract({
403
+ address: factory,
404
+ abi: editionCodeFactoryAbi,
405
+ functionName: 'implementation',
406
+ }));
407
+ return { factory, implementation, metadataLib, paramsLib, codeLib, editionLib, txHash: receipt.transactionHash, blockNumber: receipt.blockNumber };
230
408
  }
231
409
  //# sourceMappingURL=deploy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,UAAU,EACV,KAAK,EACL,WAAW,EAMX,SAAS,EACT,OAAO,GACR,MAAM,MAAM,CAAC;AACd,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,EAE3B,2BAA2B,EAC3B,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAoF7F,+EAA+E;AAC/E,SAAS,SAAS;IAChB,OAAO,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,QAAiB,EAAE,UAAe,SAAS,EAAE;IACnE,OAAO,MAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAe,SAAS,EAAE;IAC3D,OAAO,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,yBAAyB;AAClE,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,SAAS,CAAC,IAAS;IACjC,OAAO,UAAU,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAoB,EACpB,OAAgB,EAChB,YAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC;QACzC,GAAG,EAAE,uBAAuB;QAC5B,QAAQ,EAAE,4BAA4B;QACtC,OAAO;QACP,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,EAAE;KACT,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAC7E,IAAI,CAAC,OAAO,CAAC,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7F,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IACxC,MAAM,cAAc,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC;QACtD,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,uBAAuB;QAC5B,YAAY,EAAE,gBAAgB;KAC/B,CAAC,CAAY,CAAC;IACf,OAAO,EAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAC,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAoB,EACpB,OAAgB,EAChB,YAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC;QACzC,GAAG,EAAE,qBAAqB;QAC1B,QAAQ,EAAE,0BAA0B;QACpC,OAAO;QACP,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,EAAE;KACT,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAC7E,IAAI,CAAC,OAAO,CAAC,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACpG,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IACxC,MAAM,cAAc,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC;QACtD,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,qBAAqB;QAC1B,YAAY,EAAE,gBAAgB;KAC/B,CAAC,CAAY,CAAC;IACf,OAAO,EAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAC,CAAC;AAC7E,CAAC;AAGD,iGAAiG;AACjG,SAAS,cAAc,CAAC,cAAsB;IAC5C,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAoB,EACpB,OAAgB,EAChB,YAA0B;IAE1B,MAAM,SAAS,GAAG,KAAK,EAAE,QAAuB,EAA0C,EAAE;QAC1F,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAa,EAAC,CAAC,CAAC;QAC7G,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7F,OAAO,EAAC,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,EAAC,CAAC;IAClD,CAAC,CAAC;IACF,MAAM,EAAC,OAAO,EAAE,SAAS,EAAC,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACnE,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,yBAAyB;SACrC,KAAK,CAAC,cAAc,CAAC,6CAA6C,CAAC,CAAC;SACpE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACtC,KAAK,CAAC,cAAc,CAAC,yCAAyC,CAAC,CAAC;SAChE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAkB,CAAC;IACzD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IAElH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAC,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC,CAAC;IAClI,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAC7E,IAAI,CAAC,OAAO,CAAC,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IACvG,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IACxC,MAAM,cAAc,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC;QACtD,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,oBAAoB;QACzB,YAAY,EAAE,gBAAgB;KAC/B,CAAC,CAAY,CAAC;IACf,OAAO,EAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAC,CAAC;AACjG,CAAC;AAED;;;2CAG2C;AAC3C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAoB,EACpB,OAAgB,EAChB,YAA0B;IAE1B,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;QAC1C,OAAO;QACP,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;KAClE,CAAC,CAAC;IACH,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAC7D,OAAO,EAAC,UAAU,EAAE,MAAM,EAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAoB,EACpB,OAAgB,EAChB,YAA0B;IAE1B,gGAAgG;IAChG,gGAAgG;IAChG,wFAAwF;IACxF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;QAC1C,OAAO;QACP,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KACtE,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC;QACnD,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,sBAAsB;QAC3B,YAAY,EAAE,aAAa;KAC5B,CAAC,CAAW,CAAC;IACd,OAAO,EAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAoB,EACpB,OAAgB,EAChB,YAA0B;IAE1B,gGAAgG;IAChG,0FAA0F;IAC1F,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;QAC1C,OAAO;QACP,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;KAC9E,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAC7E,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAC,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,YAA0B,EAC1B,IAAmC;IAEnC,OAAO,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC;QACtC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,EAAE,uBAAuB;QAC5B,YAAY,EAAE,6BAA6B;QAC3C,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;KAClB,CAAC,CAAY,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAoB,EACpB,OAA0B,EAC1B,YAA0B,EAC1B,IAA+D;IAE/D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;IAEzF,MAAM,EAAC,OAAO,EAAC,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC;QACpD,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,EAAE,uBAAuB;QAC5B,YAAY,EAAE,qBAAqB;QACnC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAe,EAAE,IAAI,CAAC,IAAI,CAAC;QACvC,OAAO;KACR,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAE7E,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAoB,EACpB,OAA0B,EAC1B,YAA0B,EAC1B,IAA6D;IAE7D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;IAEzF,MAAM,EAAC,OAAO,EAAC,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC;QACpD,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,EAAE,qBAAqB;QAC1B,YAAY,EAAE,qBAAqB;QACnC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAe,EAAE,IAAI,CAAC,IAAI,CAAC;QACvC,OAAO;KACR,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAE7E,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
@@ -20,13 +20,16 @@
20
20
  * shipped yet, or a private deployment — the operator declares it, the tool never writes it)
21
21
  * - manifest: the canonical address below
22
22
  *
23
- * ALPHA SCOPE: the initial npm alpha ships **testnet only** — Base Sepolia (the default,
24
- * chainId 84532) and Sepolia (11155111). Mainnet entries are intentionally absent until the
25
- * canonical set is deployed + funded on mainnet (Distribution roadmap step 4).
23
+ * DEPLOYMENT SCOPE: canonical infrastructure is live on Base Sepolia (the default, chainId 84532),
24
+ * Sepolia (11155111), Robinhood Chain Testnet (46630), Base (8453), and Robinhood Chain (4663).
25
+ * `chain-support.json` separately records whether each deployment is selectable; an address here
26
+ * does not by itself enable a network. Absence here always means no canonical deployment.
26
27
  *
27
28
  * Changing a contract → redeploy → repoint here: see contracts/README.md#changing-a-contract.
28
29
  */
29
30
  import type { Address } from 'viem';
31
+ export { ANCHOR_GENERATIONS, currentAnchorGeneration, findAnchorGenerationByCoreVersion, findAnchorGenerationByFactory, findAnchorGenerationForProject, findAnchorGenerationById, summarizeAnchorGeneration, supportsGenerationOperation, } from './contract-generations.js';
32
+ export type { AnchorGeneration, ContractGenerationSummary, GenerationLifecycle, GenerationOperation, GenerationSupport, } from './contract-generations.js';
30
33
  export interface ChainDeployment {
31
34
  factory?: Address;
32
35
  seriesFactory?: Address;
@@ -36,9 +39,20 @@ export interface ChainDeployment {
36
39
  fixedPriceMinter?: Address;
37
40
  seedSource?: Address;
38
41
  generator?: Address;
42
+ oneOfOneEditionFactory?: Address;
43
+ editionFactory?: Address;
44
+ editionCodeFactory?: Address;
45
+ fixedPriceMinter1155?: Address;
46
+ metadataLib?: Address;
47
+ paramsLib?: Address;
48
+ codeLib?: Address;
49
+ editionLib?: Address;
39
50
  }
40
51
  export declare const DEPLOYMENTS: Record<number, ChainDeployment>;
41
- /** The canonical deployment record for a chain (empty if the chain isn't shipped yet). */
52
+ /** The canonical deployment record a *new* deploy on this chain should use (empty if the chain
53
+ * isn't shipped yet). Not "what this already-deployed collection points at" — reconstruct that
54
+ * collection, then read `state.tokenURIRenderer` and `generatorFor(state)`. Later releases can
55
+ * move the canonical singletons without changing addresses already stored by a collection. */
42
56
  export declare function getDeployment(chainId: number): ChainDeployment;
43
57
  export declare function resolveFactory(chainId: number, override?: string): Address | undefined;
44
58
  export declare function resolveSeriesFactory(chainId: number, override?: string): Address | undefined;
@@ -47,10 +61,29 @@ export declare function resolveChunkStore(chainId: number, override?: string): A
47
61
  export declare function resolveFixedPriceMinter(chainId: number, override?: string): Address | undefined;
48
62
  export declare function resolveSeriesCodeFactory(chainId: number, override?: string): Address | undefined;
49
63
  export declare function resolveSeedSource(chainId: number, override?: string): Address | undefined;
64
+ export declare function resolveOneOfOneEditionFactory(chainId: number, override?: string): Address | undefined;
65
+ export declare function resolveEditionFactory(chainId: number, override?: string): Address | undefined;
66
+ export declare function resolveEditionCodeFactory(chainId: number, override?: string): Address | undefined;
67
+ export declare function resolveFixedPriceMinter1155(chainId: number, override?: string): Address | undefined;
50
68
  export declare function resolveGenerator(chainId: number, override?: string): Address | undefined;
69
+ /**
70
+ * Is `generator` the chain's CURRENT canonical generator — the per-collection pointer check
71
+ * `abx verify` runs for the singleton `generatorFor(state)` resolves (see site/content/docs).
72
+ *
73
+ * Binary by construction, on purpose: it answers current / not-current and nothing finer. A
74
+ * mismatch can mean either "pinned to a prior canonical generation" or "a fully custom field
75
+ * renderer", and this file's own docstring is explicit that no superseded generator address is
76
+ * EVER kept as live state here — so there is nothing recorded to tell those two apart against.
77
+ * Building that historical registry is deliberately out of scope (the factory-generation
78
+ * ladder already has one, {@link ANCHOR_GENERATIONS}; the generator deliberately does not).
79
+ *
80
+ * `null` ⇒ this chain has no canonical generator recorded at all (unshipped) — a different fact
81
+ * from "doesn't match the canonical one", so a caller must not collapse the two into `false`.
82
+ */
83
+ export declare function isCurrentGenerator(chainId: number, generator: Address, override?: string): boolean | null;
51
84
  /**
52
85
  * The known `name@version` resolution roots per chain — Art Blocks' DependencyRegistryV0
53
- * (specs/protocol/dependency-registry.md). ABX points at it and speaks its READ interface;
86
+ * (site/content/docs/protocol/code-projects.mdx). ABX points at it and speaks its READ interface;
54
87
  * we never deploy our own. The pointer a collection stores is soft and non-validating, so
55
88
  * a chain with no entry simply deploys without one (the resolver falls back to its built-in
56
89
  * CDN map) — never a blocker.
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../src/deployments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAElC,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAqBD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAevD,CAAC;AAEF,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAE9D;AAOD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEtF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE5F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEvF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEzF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE/F;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEhG;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEzF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAExF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAG1D,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEjG"}
1
+ {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../src/deployments.ts"],"names":[],"mappings":"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"}