@black-market/sdk 0.1.0 → 0.3.1

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 (88) hide show
  1. package/README.md +78 -20
  2. package/dist/abyss.d.ts +4 -2748
  3. package/dist/abyss.d.ts.map +1 -1
  4. package/dist/abyss.js +3 -1029
  5. package/dist/abyss.js.map +1 -1
  6. package/dist/addresses.d.ts +3 -7
  7. package/dist/addresses.d.ts.map +1 -1
  8. package/dist/addresses.js +6 -21
  9. package/dist/addresses.js.map +1 -1
  10. package/dist/auction.d.ts +2 -2
  11. package/dist/auction.d.ts.map +1 -1
  12. package/dist/auction.js +2 -2
  13. package/dist/auction.js.map +1 -1
  14. package/dist/index.d.ts +2 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/launch-api.d.ts +151 -0
  19. package/dist/launch-api.d.ts.map +1 -0
  20. package/dist/launch-api.js +117 -0
  21. package/dist/launch-api.js.map +1 -0
  22. package/dist/launch.d.ts +23 -185
  23. package/dist/launch.d.ts.map +1 -1
  24. package/dist/launch.js +35 -272
  25. package/dist/launch.js.map +1 -1
  26. package/dist/lifecycle/abi.d.ts +6402 -0
  27. package/dist/lifecycle/abi.d.ts.map +1 -0
  28. package/dist/lifecycle/abi.js +331 -0
  29. package/dist/lifecycle/abi.js.map +1 -0
  30. package/dist/lifecycle/authors.d.ts +133 -0
  31. package/dist/lifecycle/authors.d.ts.map +1 -0
  32. package/dist/lifecycle/authors.js +217 -0
  33. package/dist/lifecycle/authors.js.map +1 -0
  34. package/dist/lifecycle/fork.d.ts +15 -0
  35. package/dist/lifecycle/fork.d.ts.map +1 -0
  36. package/dist/lifecycle/fork.js +36 -0
  37. package/dist/lifecycle/fork.js.map +1 -0
  38. package/dist/lifecycle/index.d.ts +10 -0
  39. package/dist/lifecycle/index.d.ts.map +1 -0
  40. package/dist/lifecycle/index.js +10 -0
  41. package/dist/lifecycle/index.js.map +1 -0
  42. package/dist/lifecycle/markets.d.ts +349 -0
  43. package/dist/lifecycle/markets.d.ts.map +1 -0
  44. package/dist/lifecycle/markets.js +184 -0
  45. package/dist/lifecycle/markets.js.map +1 -0
  46. package/dist/lifecycle/planner.d.ts +20 -0
  47. package/dist/lifecycle/planner.d.ts.map +1 -0
  48. package/dist/lifecycle/planner.js +478 -0
  49. package/dist/lifecycle/planner.js.map +1 -0
  50. package/dist/lifecycle/progress.d.ts +36 -0
  51. package/dist/lifecycle/progress.d.ts.map +1 -0
  52. package/dist/lifecycle/progress.js +441 -0
  53. package/dist/lifecycle/progress.js.map +1 -0
  54. package/dist/lifecycle/rpc.d.ts +17 -0
  55. package/dist/lifecycle/rpc.d.ts.map +1 -0
  56. package/dist/lifecycle/rpc.js +100 -0
  57. package/dist/lifecycle/rpc.js.map +1 -0
  58. package/dist/lifecycle/schema.d.ts +1096 -0
  59. package/dist/lifecycle/schema.d.ts.map +1 -0
  60. package/dist/lifecycle/schema.js +337 -0
  61. package/dist/lifecycle/schema.js.map +1 -0
  62. package/dist/lifecycle/simulation.d.ts +3 -0
  63. package/dist/lifecycle/simulation.d.ts.map +1 -0
  64. package/dist/lifecycle/simulation.js +393 -0
  65. package/dist/lifecycle/simulation.js.map +1 -0
  66. package/dist/lifecycle/types.d.ts +273 -0
  67. package/dist/lifecycle/types.d.ts.map +1 -0
  68. package/dist/lifecycle/types.js +11 -0
  69. package/dist/lifecycle/types.js.map +1 -0
  70. package/docs/launch-lifecycle.md +213 -0
  71. package/package.json +12 -3
  72. package/src/abyss.ts +3 -1059
  73. package/src/addresses.ts +9 -26
  74. package/src/auction.ts +2 -2
  75. package/src/index.ts +2 -0
  76. package/src/launch-api.ts +110 -0
  77. package/src/launch.ts +43 -411
  78. package/src/lifecycle/abi.ts +339 -0
  79. package/src/lifecycle/authors.ts +203 -0
  80. package/src/lifecycle/fork.ts +36 -0
  81. package/src/lifecycle/index.ts +9 -0
  82. package/src/lifecycle/markets.ts +204 -0
  83. package/src/lifecycle/planner.ts +393 -0
  84. package/src/lifecycle/progress.ts +367 -0
  85. package/src/lifecycle/rpc.ts +88 -0
  86. package/src/lifecycle/schema.ts +390 -0
  87. package/src/lifecycle/simulation.ts +329 -0
  88. package/src/lifecycle/types.ts +132 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authors.d.ts","sourceRoot":"","sources":["../../src/lifecycle/authors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,217 @@
1
+ import { decodeEventLog, encodeFunctionData, isAddress, zeroAddress } from "viem";
2
+ import { launchLifecycleAbi, lifecycleFeeHubAbi, lifecycleFeeHubFactoryAbi, lifecycleRegistryAbi } from "./abi.js";
3
+ import { assertLifecycleBlock, lifecycleRpc, readLifecycleBlock, readLifecycleContract, rpcQuantity } from "./rpc.js";
4
+ import { LifecyclePlanningError } from "./types.js";
5
+ function requireAddress(address, label) {
6
+ if (!isAddress(address) || address.toLowerCase() === zeroAddress)
7
+ throw new LifecyclePlanningError("INVALID_AUTHOR_ADDRESS", `${label} must be a nonzero address`);
8
+ }
9
+ function validateAssets(assets) {
10
+ if (assets.length > 8)
11
+ throw new LifecyclePlanningError("INVALID_CLAIM_ASSETS", "Claims accept at most eight explicit assets");
12
+ let previous = 0n;
13
+ for (const asset of assets) {
14
+ requireAddress(asset, "Claim asset");
15
+ if (BigInt(asset) <= previous)
16
+ throw new LifecyclePlanningError("INVALID_CLAIM_ASSETS", "Explicit assets must be sorted, unique and nonzero");
17
+ previous = BigInt(asset);
18
+ }
19
+ }
20
+ function requirePage(offset, limit, maximum) {
21
+ if (offset < 0n || offset >= 1n << 256n || limit < 1n || limit > maximum)
22
+ throw new LifecyclePlanningError("INVALID_AUTHOR_PAGE", `Page offset must be uint256 and limit must be 1..${maximum}`);
23
+ }
24
+ async function readAuthorContext(options, block) {
25
+ const { client, registry, authorId } = options;
26
+ requireAddress(registry, "Implementation registry");
27
+ requireAddress(authorId, "Stable author identity");
28
+ const chainId = rpcQuantity(await lifecycleRpc(client, "eth_chainId"), "author chain ID");
29
+ const core = await readLifecycleContract(client, registry, lifecycleRegistryAbi, "core", [], block);
30
+ requireAddress(core, "Registry core");
31
+ if ((await readLifecycleContract(client, core, launchLifecycleAbi, "registry", [], block)).toLowerCase() !== registry.toLowerCase())
32
+ throw new LifecyclePlanningError("REGISTRY_BINDING", "Selected core does not bind this implementation registry");
33
+ const factory = await readLifecycleContract(client, core, launchLifecycleAbi, "feeFactory", [], block);
34
+ requireAddress(factory, "Canonical fee factory");
35
+ if ((await readLifecycleContract(client, factory, lifecycleFeeHubFactoryAbi, "implementationRegistry", [], block)).toLowerCase() !== registry.toLowerCase() ||
36
+ (await readLifecycleContract(client, factory, lifecycleFeeHubFactoryAbi, "deploymentAuthority", [], block)).toLowerCase() !== core.toLowerCase())
37
+ throw new LifecyclePlanningError("FEE_FACTORY_BINDING", "Canonical fee factory differs from the selected registry/core domain");
38
+ const payout = await readLifecycleContract(client, registry, lifecycleRegistryAbi, "authorPayout", [authorId], block);
39
+ const hubCount = await readLifecycleContract(client, registry, lifecycleRegistryAbi, "authorHubCount", [authorId], block);
40
+ return { registry, core, factory, authorId, payout, known: payout.toLowerCase() !== zeroAddress, hubCount, chainId, blockNumber: block.number, blockHash: block.hash };
41
+ }
42
+ async function requireCanonicalHub(client, author, hub, block) {
43
+ requireAddress(hub, "Developer fee hub");
44
+ // Membership is checked through registry.core -> core.feeFactory, before ANY hub self-report.
45
+ if (!await readLifecycleContract(client, author.factory, lifecycleFeeHubFactoryAbi, "isHub", [hub], block))
46
+ throw new LifecyclePlanningError("UNAUTHENTICATED_HUB", "Hub is not a member of this registry core's canonical V3 factory");
47
+ if (await readLifecycleContract(client, hub, lifecycleFeeHubAbi, "economicVersion", [], block) !== 3 ||
48
+ (await readLifecycleContract(client, hub, lifecycleFeeHubAbi, "implementationRegistry", [], block)).toLowerCase() !== author.registry.toLowerCase() ||
49
+ (await readLifecycleContract(client, hub, lifecycleFeeHubAbi, "configurator", [], block)).toLowerCase() !== author.core.toLowerCase())
50
+ throw new LifecyclePlanningError("FEE_HUB_BINDING", "Canonical hub does not implement the selected V3 economic domain");
51
+ }
52
+ function unsignedTransaction(options, author, to, data) {
53
+ requireAddress(options.account, "Transaction account");
54
+ if (options.chainId !== author.chainId || options.chainId <= 0n || options.chainId > BigInt(Number.MAX_SAFE_INTEGER))
55
+ throw new LifecyclePlanningError("CHAIN_MISMATCH", "Unsigned transaction chain must exactly match the selected author domain");
56
+ return { chainId: Number(options.chainId), from: options.account, to, data, value: 0n };
57
+ }
58
+ export async function readLifecycleAuthor(options, pinnedBlock) {
59
+ const block = pinnedBlock ?? await readLifecycleBlock(options.client);
60
+ const author = await readAuthorContext(options, block);
61
+ if (pinnedBlock === undefined)
62
+ await assertLifecycleBlock(options.client, block);
63
+ return author;
64
+ }
65
+ export async function readAuthorHubs(options, pinnedBlock) {
66
+ const offset = options.offset ?? 0n;
67
+ const limit = options.limit ?? 100n;
68
+ requirePage(offset, limit, 100n);
69
+ const block = pinnedBlock ?? await readLifecycleBlock(options.client);
70
+ const author = await readAuthorContext(options, block);
71
+ if (offset > author.hubCount)
72
+ throw new LifecyclePlanningError("INVALID_AUTHOR_PAGE", "Author discovery offset exceeds the registered hub count");
73
+ const [hubs, nextOffset, total] = await readLifecycleContract(options.client, options.registry, lifecycleRegistryAbi, "authorHubs", [options.authorId, offset, limit], block);
74
+ if (total !== author.hubCount || nextOffset !== offset + BigInt(hubs.length) || nextOffset > total || BigInt(hubs.length) > limit)
75
+ throw new LifecyclePlanningError("INVALID_AUTHOR_PAGE", "Registry returned an inconsistent discovery cursor");
76
+ for (const hub of hubs)
77
+ await requireCanonicalHub(options.client, author, hub, block);
78
+ if (pinnedBlock === undefined)
79
+ await assertLifecycleBlock(options.client, block);
80
+ return { ...author, hubs, offset, nextOffset, total, cursorComplete: nextOffset === total };
81
+ }
82
+ export async function readDeveloperFees(options, pinnedBlock) {
83
+ const explicitAssets = options.assets ?? [];
84
+ validateAssets(explicitAssets);
85
+ const block = pinnedBlock ?? await readLifecycleBlock(options.client);
86
+ const author = await readAuthorContext(options, block);
87
+ await requireCanonicalHub(options.client, author, options.hub, block);
88
+ const assets = await readLifecycleContract(options.client, options.hub, lifecycleFeeHubAbi, "assets", [], block);
89
+ const selected = explicitAssets.length === 0 ? assets : explicitAssets;
90
+ const balances = [];
91
+ for (const asset of selected) {
92
+ const supported = assets.some((actual) => actual.toLowerCase() === asset.toLowerCase());
93
+ const claimable = supported ? await readLifecycleContract(options.client, options.hub, lifecycleFeeHubAbi, "claimableDeveloperFees", [options.authorId, asset], block) : 0n;
94
+ const reserved = supported ? await readLifecycleContract(options.client, options.hub, lifecycleFeeHubAbi, "reservedDeveloperFees", [asset], block) : 0n;
95
+ balances.push({ asset, supported, claimable, reserved });
96
+ }
97
+ const sources = [];
98
+ for (const source of await readLifecycleContract(options.client, options.hub, lifecycleFeeHubAbi, "sources", [], block)) {
99
+ sources.push({ source, assets: await readLifecycleContract(options.client, options.hub, lifecycleFeeHubAbi, "sourceAssets", [source], block),
100
+ terms: await readLifecycleContract(options.client, options.hub, lifecycleFeeHubAbi, "sourceTerms", [source], block) });
101
+ }
102
+ if (pinnedBlock === undefined)
103
+ await assertLifecycleBlock(options.client, block);
104
+ return { ...author, hub: options.hub, assets, balances, sources };
105
+ }
106
+ export async function buildSetAuthorPayoutTransaction(options) {
107
+ requireAddress(options.payout, "New payout/controller");
108
+ const block = await readLifecycleBlock(options.client);
109
+ const author = await readAuthorContext(options, block);
110
+ if (!author.known)
111
+ throw new LifecyclePlanningError("UNKNOWN_AUTHOR", "Cannot set a payout for an unknown stable author identity");
112
+ const admin = await readLifecycleContract(options.client, options.registry, lifecycleRegistryAbi, "admin", [], block);
113
+ if (![author.payout, admin].some((address) => address.toLowerCase() === options.account.toLowerCase()))
114
+ throw new LifecyclePlanningError("AUTHOR_AUTHORIZATION", "Only the registry admin or current live payout/controller may change routing");
115
+ const transaction = unsignedTransaction(options, author, options.registry, encodeFunctionData({ abi: lifecycleRegistryAbi, functionName: "setAuthorPayout", args: [options.authorId, options.payout] }));
116
+ await assertLifecycleBlock(options.client, block);
117
+ return transaction;
118
+ }
119
+ export async function buildClaimDeveloperFeesTransaction(options) {
120
+ requireAddress(options.asset, "Developer fee asset");
121
+ const block = await readLifecycleBlock(options.client);
122
+ const author = await readAuthorContext(options, block);
123
+ await requireCanonicalHub(options.client, author, options.hub, block);
124
+ const assets = await readLifecycleContract(options.client, options.hub, lifecycleFeeHubAbi, "assets", [], block);
125
+ if (!assets.some((asset) => asset.toLowerCase() === options.asset.toLowerCase()))
126
+ throw new LifecyclePlanningError("UNSUPPORTED_ASSET", "Direct developer claims require an asset supported by this canonical hub");
127
+ const transaction = unsignedTransaction(options, author, options.hub, encodeFunctionData({ abi: lifecycleFeeHubAbi, functionName: "claimDeveloperFees", args: [options.authorId, options.asset] }));
128
+ await assertLifecycleBlock(options.client, block);
129
+ return { ...transaction, claim: { kind: "direct", registry: options.registry, factory: author.factory, authorId: options.authorId, hub: options.hub, asset: options.asset } };
130
+ }
131
+ export async function buildClaimDeveloperFeesPageTransaction(options) {
132
+ const assets = [...options.assets ?? []];
133
+ validateAssets(assets);
134
+ requirePage(options.offset, options.limit, 10n);
135
+ const block = await readLifecycleBlock(options.client);
136
+ const page = await readAuthorHubs(options, block);
137
+ const transaction = unsignedTransaction(options, page, page.factory, encodeFunctionData({ abi: lifecycleFeeHubFactoryAbi, functionName: "claimDeveloperFeesPage", args: [options.authorId, options.offset, options.limit, assets] }));
138
+ await assertLifecycleBlock(options.client, block);
139
+ return { ...transaction, claim: { kind: "page", registry: options.registry, factory: page.factory, authorId: options.authorId, offset: options.offset, limit: options.limit, assets } };
140
+ }
141
+ /** Receipt logs report payment facts, not pending credits or a promise that every cursor row paid. */
142
+ export function decodeDeveloperClaimReceipt(options) {
143
+ const { receipt, transaction } = options;
144
+ const claim = transaction.claim;
145
+ if (receipt.from.toLowerCase() !== transaction.from.toLowerCase() || receipt.to?.toLowerCase() !== transaction.to.toLowerCase() || transaction.value !== 0n)
146
+ throw new LifecyclePlanningError("CLAIM_RECEIPT_IDENTITY", "Receipt account/target differs from the unsigned claim context");
147
+ const expectedData = claim.kind === "direct"
148
+ ? encodeFunctionData({ abi: lifecycleFeeHubAbi, functionName: "claimDeveloperFees", args: [claim.authorId, claim.asset] })
149
+ : encodeFunctionData({ abi: lifecycleFeeHubFactoryAbi, functionName: "claimDeveloperFeesPage", args: [claim.authorId, claim.offset, claim.limit, claim.assets] });
150
+ if (transaction.data.toLowerCase() !== expectedData.toLowerCase() || transaction.to.toLowerCase() !== (claim.kind === "direct" ? claim.hub : claim.factory).toLowerCase())
151
+ throw new LifecyclePlanningError("CLAIM_RECEIPT_IDENTITY", "Unsigned context does not encode this exact fixed-destination claim");
152
+ const executionSucceeded = ["success", "0x1", 1, 1n].includes(receipt.status);
153
+ if (!executionSucceeded) {
154
+ if (!["reverted", "0x0", 0, 0n].includes(receipt.status))
155
+ throw new LifecyclePlanningError("INVALID_CLAIM_RECEIPT", "Receipt status is not a canonical success/revert value");
156
+ return { executionSucceeded: false, outcome: "reverted", results: [], retryableResults: [], cursorComplete: false, paymentsSucceeded: false, reason: "Claim execution reverted; no payment or cursor advancement occurred" };
157
+ }
158
+ const results = [];
159
+ let cursor;
160
+ const seen = new Set();
161
+ for (const log of receipt.logs) {
162
+ if (log.address.toLowerCase() !== transaction.to.toLowerCase())
163
+ continue;
164
+ if (log.removed)
165
+ throw new LifecyclePlanningError("CLAIM_RECEIPT_REORGED", "Removed claim logs cannot prove payment");
166
+ if (claim.kind === "direct") {
167
+ let event;
168
+ try {
169
+ event = decodeEventLog({ abi: lifecycleFeeHubAbi, data: log.data, topics: log.topics, strict: true });
170
+ }
171
+ catch {
172
+ continue;
173
+ }
174
+ if (event.eventName !== "DeveloperFeesClaimed")
175
+ continue;
176
+ if (event.args.authorId.toLowerCase() !== claim.authorId.toLowerCase() || event.args.asset.toLowerCase() !== claim.asset.toLowerCase() || event.args.amount === 0n || results.length !== 0)
177
+ throw new LifecyclePlanningError("INVALID_CLAIM_RECEIPT", "Direct payment event differs from the expected author/asset or is duplicated");
178
+ results.push({ hub: claim.hub, asset: event.args.asset, amount: event.args.amount, status: 0, outcome: "paid", errorSelector: "0x00000000", payout: event.args.payout });
179
+ }
180
+ else {
181
+ let event;
182
+ try {
183
+ event = decodeEventLog({ abi: lifecycleFeeHubFactoryAbi, data: log.data, topics: log.topics, strict: true });
184
+ }
185
+ catch {
186
+ continue;
187
+ }
188
+ if (event.eventName === "DeveloperClaimPage") {
189
+ if (event.args.authorId.toLowerCase() !== claim.authorId.toLowerCase() || event.args.offset !== claim.offset || cursor !== undefined || event.args.nextOffset < claim.offset || event.args.nextOffset > event.args.total || event.args.nextOffset - claim.offset > claim.limit)
190
+ throw new LifecyclePlanningError("INVALID_CLAIM_RECEIPT", "Page cursor differs from the bounded expected claim");
191
+ cursor = { offset: event.args.offset, nextOffset: event.args.nextOffset, total: event.args.total };
192
+ }
193
+ else if (event.eventName === "DeveloperClaimResult") {
194
+ const { authorId, hub, asset, amount, status, errorSelector } = event.args;
195
+ const key = `${hub.toLowerCase()}:${asset.toLowerCase()}`;
196
+ if (authorId.toLowerCase() !== claim.authorId.toLowerCase() || status > 3 || seen.has(key) ||
197
+ (claim.assets.length !== 0 && !claim.assets.some((selected) => selected.toLowerCase() === asset.toLowerCase())) ||
198
+ (status === 0 ? amount === 0n : amount !== 0n) || (status < 2 && errorSelector !== "0x00000000"))
199
+ throw new LifecyclePlanningError("INVALID_CLAIM_RECEIPT", "Factory result has a mismatched author, asset, status, amount or duplicate row");
200
+ seen.add(key);
201
+ results.push({ hub, asset, amount, status: status, outcome: ["paid", "zero", "unsupported", "failed"][status], errorSelector });
202
+ }
203
+ }
204
+ }
205
+ if (claim.kind === "page") {
206
+ if (cursor === undefined)
207
+ throw new LifecyclePlanningError("INVALID_CLAIM_RECEIPT", "Successful page receipt lacks the canonical cursor event");
208
+ const hubCount = BigInt(new Set(results.map((result) => result.hub.toLowerCase())).size);
209
+ if (hubCount !== cursor.nextOffset - cursor.offset || (claim.assets.length !== 0 && BigInt(results.length) !== hubCount * BigInt(claim.assets.length)))
210
+ throw new LifecyclePlanningError("INVALID_CLAIM_RECEIPT", "Receipt rows do not account for every hub/asset in the observed cursor page");
211
+ }
212
+ return { executionSucceeded: true, outcome: results.length !== 0 || cursor !== undefined ? "observed" : "unobserved", results,
213
+ retryableResults: results.filter((result) => result.status === 3), cursorComplete: cursor !== undefined && cursor.nextOffset === cursor.total,
214
+ paymentsSucceeded: (results.length !== 0 || cursor !== undefined) && results.every((result) => result.status < 2), ...cursor,
215
+ reason: claim.kind === "direct" && results.length === 0 ? "No direct payment event is present; zero credit is possible, but an amount is not receipt-proven" : undefined };
216
+ }
217
+ //# sourceMappingURL=authors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authors.js","sourceRoot":"","sources":["../../src/lifecycle/authors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type ControlledLifecycleFork } from "./types.js";
2
+ /**
3
+ * Connects an explicitly disposable loopback fork. Only the fork receives resets/transactions;
4
+ * sourceRpcUrl is used by the fork node for read-only canonical state synchronization.
5
+ */
6
+ export declare function createControlledLifecycleFork(options: {
7
+ sourceRpcUrl: string;
8
+ forkRpcUrl: string;
9
+ allowTransactions: true;
10
+ fetch?: typeof globalThis.fetch;
11
+ impersonation?: "anvil" | "hardhat" | "none";
12
+ resetMethod?: "anvil_reset" | "hardhat_reset";
13
+ receiptTimeoutMs?: number;
14
+ }): ControlledLifecycleFork;
15
+ //# sourceMappingURL=fork.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../../src/lifecycle/fork.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,uBAAuB,EAA2B,MAAM,YAAY,CAAC;AAG3G;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACrD,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,IAAI,CAAC;IAClE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAC9E,WAAW,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1E,GAAG,uBAAuB,CAwB1B"}
@@ -0,0 +1,36 @@
1
+ import { LifecyclePlanningError } from "./types.js";
2
+ import { rpcObject } from "./rpc.js";
3
+ /**
4
+ * Connects an explicitly disposable loopback fork. Only the fork receives resets/transactions;
5
+ * sourceRpcUrl is used by the fork node for read-only canonical state synchronization.
6
+ */
7
+ export function createControlledLifecycleFork(options) {
8
+ const source = new URL(options.sourceRpcUrl);
9
+ const fork = new URL(options.forkRpcUrl);
10
+ if (!["http:", "https:"].includes(source.protocol) || !["http:", "https:"].includes(fork.protocol))
11
+ throw new LifecyclePlanningError("UNSAFE_FORK", "Controlled fork RPCs must use HTTP(S)");
12
+ const loopback = ["localhost", "127.0.0.1", "[::1]", "::1"];
13
+ const sourcePort = source.port || (source.protocol === "https:" ? "443" : "80");
14
+ const forkPort = fork.port || (fork.protocol === "https:" ? "443" : "80");
15
+ if (!loopback.includes(fork.hostname) || (loopback.includes(source.hostname) && sourcePort === forkPort) || source.href === fork.href || options.allowTransactions !== true)
16
+ throw new LifecyclePlanningError("UNSAFE_FORK", "Controlled fork must be an explicit, distinct disposable loopback RPC, not a localhost/IP alias of the source");
17
+ const fetch = options.fetch ?? globalThis.fetch;
18
+ let id = 0;
19
+ const client = {
20
+ async request({ method, params }) {
21
+ const response = await fetch(fork.href, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ jsonrpc: "2.0", id: ++id, method, params: params ?? [] }) });
22
+ if (!response.ok)
23
+ throw new LifecyclePlanningError("FORK_RPC_ERROR", `Disposable fork RPC returned HTTP ${response.status}`);
24
+ const result = rpcObject(await response.json(), "fork JSON-RPC envelope");
25
+ if (result.error !== undefined) {
26
+ const error = rpcObject(result.error, "fork JSON-RPC error");
27
+ throw new LifecyclePlanningError("FORK_RPC_ERROR", typeof error.message === "string" ? error.message : "Disposable fork RPC returned an error");
28
+ }
29
+ if (!("result" in result))
30
+ throw new LifecyclePlanningError("INVALID_RPC_RESPONSE", "Disposable fork RPC omitted its result");
31
+ return result.result;
32
+ },
33
+ };
34
+ return { client, isolation: "disposable", allowTransactions: true, sourceRpcUrl: source.href, forkRpcUrl: fork.href, resetMethod: options.resetMethod ?? "anvil_reset", impersonation: options.impersonation ?? "anvil", receiptTimeoutMs: options.receiptTimeoutMs };
35
+ }
36
+ //# sourceMappingURL=fork.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/lifecycle/fork.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /** Explicit versioned launch stack. Importing this entry never selects a deployed address. */
2
+ export * from "./schema.js";
3
+ export * from "./types.js";
4
+ export * from "./abi.js";
5
+ export * from "./markets.js";
6
+ export * from "./progress.js";
7
+ export * from "./fork.js";
8
+ export * from "./authors.js";
9
+ export { planLaunch, simulateLaunchPlan, buildNextTransaction, preparePoolBoundLifecyclePlan } from "./planner.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** Explicit versioned launch stack. Importing this entry never selects a deployed address. */
2
+ export * from "./schema.js";
3
+ export * from "./types.js";
4
+ export * from "./abi.js";
5
+ export * from "./markets.js";
6
+ export * from "./progress.js";
7
+ export * from "./fork.js";
8
+ export * from "./authors.js";
9
+ export { planLaunch, simulateLaunchPlan, buildNextTransaction, preparePoolBoundLifecyclePlan } from "./planner.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC"}