@black-market/sdk 0.12.0 → 0.14.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.
- package/README.md +96 -96
- package/dist/lifecycle/index.d.ts +3 -1
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +3 -1
- package/dist/lifecycle/index.js.map +1 -1
- package/dist/lifecycle/lens.d.ts +409 -0
- package/dist/lifecycle/lens.d.ts.map +1 -0
- package/dist/lifecycle/lens.js +30 -0
- package/dist/lifecycle/lens.js.map +1 -0
- package/dist/lifecycle/mining.d.ts +47 -0
- package/dist/lifecycle/mining.d.ts.map +1 -0
- package/dist/lifecycle/mining.js +89 -0
- package/dist/lifecycle/mining.js.map +1 -0
- package/dist/lifecycle/planner.d.ts.map +1 -1
- package/dist/lifecycle/planner.js +121 -78
- package/dist/lifecycle/planner.js.map +1 -1
- package/dist/lifecycle/presets.d.ts +3 -0
- package/dist/lifecycle/presets.d.ts.map +1 -1
- package/dist/lifecycle/presets.js +1 -0
- package/dist/lifecycle/presets.js.map +1 -1
- package/dist/lifecycle/progress.d.ts +51 -1
- package/dist/lifecycle/progress.d.ts.map +1 -1
- package/dist/lifecycle/progress.js +149 -73
- package/dist/lifecycle/progress.js.map +1 -1
- package/dist/lifecycle/rpc.d.ts +14 -4
- package/dist/lifecycle/rpc.d.ts.map +1 -1
- package/dist/lifecycle/rpc.js +171 -12
- package/dist/lifecycle/rpc.js.map +1 -1
- package/dist/lifecycle/simulation.d.ts +5 -3
- package/dist/lifecycle/simulation.d.ts.map +1 -1
- package/dist/lifecycle/simulation.js +137 -115
- package/dist/lifecycle/simulation.js.map +1 -1
- package/dist/lifecycle/snapshot.d.ts +8 -0
- package/dist/lifecycle/snapshot.d.ts.map +1 -0
- package/dist/lifecycle/snapshot.js +79 -0
- package/dist/lifecycle/snapshot.js.map +1 -0
- package/dist/lifecycle/types.d.ts +27 -5
- package/dist/lifecycle/types.d.ts.map +1 -1
- package/dist/lifecycle/types.js.map +1 -1
- package/docs/launch-lifecycle.md +627 -1495
- package/docs/reference.md +365 -0
- package/examples/.env.example +3 -2
- package/examples/README.md +171 -552
- package/examples/launch-example-support.ts +11 -3
- package/examples/launch-example.ts +1 -1
- package/examples/launch-lifecycle-smoke.ts +1 -1
- package/package.json +1 -1
- package/src/lifecycle/index.ts +5 -1
- package/src/lifecycle/lens.ts +42 -0
- package/src/lifecycle/mining.ts +80 -0
- package/src/lifecycle/planner.ts +122 -73
- package/src/lifecycle/presets.ts +4 -0
- package/src/lifecycle/progress.ts +132 -59
- package/src/lifecycle/rpc.ts +163 -13
- package/src/lifecycle/simulation.ts +134 -106
- package/src/lifecycle/snapshot.ts +72 -0
- package/src/lifecycle/types.ts +24 -6
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import { type Address, type Hex } from "viem";
|
|
2
|
+
import { type LaunchProgressV1, type PreparedMarketV1, type MarketLiveStateV1 } from "./schema.js";
|
|
3
|
+
import type { LifecycleBlock, LifecycleRpcClient } from "./types.js";
|
|
4
|
+
/** ILaunchLens.sol, versioned planning snapshot. No preset lens is deployed by this release. */
|
|
5
|
+
export declare const launchLensAbi: readonly [{
|
|
6
|
+
readonly type: "function";
|
|
7
|
+
readonly name: "snapshot";
|
|
8
|
+
readonly stateMutability: "view";
|
|
9
|
+
readonly inputs: readonly [{
|
|
10
|
+
readonly name: "plan";
|
|
11
|
+
readonly type: "tuple";
|
|
12
|
+
readonly components: readonly [{
|
|
13
|
+
readonly name: "chainId";
|
|
14
|
+
readonly type: "uint256";
|
|
15
|
+
}, {
|
|
16
|
+
readonly name: "orchestrator";
|
|
17
|
+
readonly type: "address";
|
|
18
|
+
}, {
|
|
19
|
+
readonly name: "creator";
|
|
20
|
+
readonly type: "address";
|
|
21
|
+
}, {
|
|
22
|
+
readonly name: "nonce";
|
|
23
|
+
readonly type: "uint256";
|
|
24
|
+
}, {
|
|
25
|
+
readonly name: "token";
|
|
26
|
+
readonly type: "tuple";
|
|
27
|
+
readonly components: readonly [{
|
|
28
|
+
readonly name: "kind";
|
|
29
|
+
readonly type: "uint8";
|
|
30
|
+
}, {
|
|
31
|
+
readonly name: "rewardMode";
|
|
32
|
+
readonly type: "uint8";
|
|
33
|
+
}, {
|
|
34
|
+
readonly name: "name";
|
|
35
|
+
readonly type: "string";
|
|
36
|
+
}, {
|
|
37
|
+
readonly name: "symbol";
|
|
38
|
+
readonly type: "string";
|
|
39
|
+
}, {
|
|
40
|
+
readonly name: "supply";
|
|
41
|
+
readonly type: "uint256";
|
|
42
|
+
}, {
|
|
43
|
+
readonly name: "nftUnit";
|
|
44
|
+
readonly type: "uint256";
|
|
45
|
+
}, {
|
|
46
|
+
readonly name: "metadataURI";
|
|
47
|
+
readonly type: "string";
|
|
48
|
+
}, {
|
|
49
|
+
readonly name: "salt";
|
|
50
|
+
readonly type: "bytes32";
|
|
51
|
+
}, {
|
|
52
|
+
readonly name: "inventoryRecipient";
|
|
53
|
+
readonly type: "address";
|
|
54
|
+
}, {
|
|
55
|
+
readonly name: "burnOnCancel";
|
|
56
|
+
readonly type: "bool";
|
|
57
|
+
}];
|
|
58
|
+
}, {
|
|
59
|
+
readonly name: "funding";
|
|
60
|
+
readonly type: "tuple[]";
|
|
61
|
+
readonly components: readonly [{
|
|
62
|
+
readonly name: "asset";
|
|
63
|
+
readonly type: "address";
|
|
64
|
+
}, {
|
|
65
|
+
readonly name: "amount";
|
|
66
|
+
readonly type: "uint256";
|
|
67
|
+
}, {
|
|
68
|
+
readonly name: "kind";
|
|
69
|
+
readonly type: "uint8";
|
|
70
|
+
}, {
|
|
71
|
+
readonly name: "inputAsset";
|
|
72
|
+
readonly type: "address";
|
|
73
|
+
}, {
|
|
74
|
+
readonly name: "inputAmount";
|
|
75
|
+
readonly type: "uint256";
|
|
76
|
+
}, {
|
|
77
|
+
readonly name: "target";
|
|
78
|
+
readonly type: "address";
|
|
79
|
+
}, {
|
|
80
|
+
readonly name: "data";
|
|
81
|
+
readonly type: "bytes";
|
|
82
|
+
}];
|
|
83
|
+
}, {
|
|
84
|
+
readonly name: "feeAssets";
|
|
85
|
+
readonly type: "tuple[]";
|
|
86
|
+
readonly components: readonly [{
|
|
87
|
+
readonly name: "asset";
|
|
88
|
+
readonly type: "address";
|
|
89
|
+
}, {
|
|
90
|
+
readonly name: "ownerBps";
|
|
91
|
+
readonly type: "uint16";
|
|
92
|
+
}, {
|
|
93
|
+
readonly name: "rewardsBps";
|
|
94
|
+
readonly type: "uint16";
|
|
95
|
+
}, {
|
|
96
|
+
readonly name: "burnBps";
|
|
97
|
+
readonly type: "uint16";
|
|
98
|
+
}];
|
|
99
|
+
}, {
|
|
100
|
+
readonly name: "markets";
|
|
101
|
+
readonly type: "tuple[]";
|
|
102
|
+
readonly components: readonly [{
|
|
103
|
+
readonly name: "adapterId";
|
|
104
|
+
readonly type: "bytes32";
|
|
105
|
+
}, {
|
|
106
|
+
readonly name: "profileId";
|
|
107
|
+
readonly type: "bytes32";
|
|
108
|
+
}, {
|
|
109
|
+
readonly name: "quoteAsset";
|
|
110
|
+
readonly type: "address";
|
|
111
|
+
}, {
|
|
112
|
+
readonly name: "tokenBudget";
|
|
113
|
+
readonly type: "uint256";
|
|
114
|
+
}, {
|
|
115
|
+
readonly name: "configVersion";
|
|
116
|
+
readonly type: "uint32";
|
|
117
|
+
}, {
|
|
118
|
+
readonly name: "config";
|
|
119
|
+
readonly type: "bytes";
|
|
120
|
+
}];
|
|
121
|
+
}, {
|
|
122
|
+
readonly name: "buys";
|
|
123
|
+
readonly type: "tuple[]";
|
|
124
|
+
readonly components: readonly [{
|
|
125
|
+
readonly name: "marketIndex";
|
|
126
|
+
readonly type: "uint32";
|
|
127
|
+
}, {
|
|
128
|
+
readonly name: "quoteAmountIn";
|
|
129
|
+
readonly type: "uint256";
|
|
130
|
+
}, {
|
|
131
|
+
readonly name: "minTokenOut";
|
|
132
|
+
readonly type: "uint256";
|
|
133
|
+
}, {
|
|
134
|
+
readonly name: "recipient";
|
|
135
|
+
readonly type: "address";
|
|
136
|
+
}, {
|
|
137
|
+
readonly name: "sqrtPriceLimitX96";
|
|
138
|
+
readonly type: "uint160";
|
|
139
|
+
}];
|
|
140
|
+
}, {
|
|
141
|
+
readonly name: "deadline";
|
|
142
|
+
readonly type: "uint256";
|
|
143
|
+
}, {
|
|
144
|
+
readonly name: "executorFeeBps";
|
|
145
|
+
readonly type: "uint16";
|
|
146
|
+
}];
|
|
147
|
+
}, {
|
|
148
|
+
readonly name: "owner";
|
|
149
|
+
readonly type: "address";
|
|
150
|
+
}, {
|
|
151
|
+
readonly name: "fundingEscrow";
|
|
152
|
+
readonly type: "address";
|
|
153
|
+
}, {
|
|
154
|
+
readonly name: "tokens";
|
|
155
|
+
readonly type: "address[]";
|
|
156
|
+
}, {
|
|
157
|
+
readonly name: "maxAttempts";
|
|
158
|
+
readonly type: "uint256";
|
|
159
|
+
}];
|
|
160
|
+
readonly outputs: readonly [{
|
|
161
|
+
readonly name: "result";
|
|
162
|
+
readonly type: "tuple";
|
|
163
|
+
readonly components: readonly [{
|
|
164
|
+
readonly name: "chainId";
|
|
165
|
+
readonly type: "uint256";
|
|
166
|
+
}, {
|
|
167
|
+
readonly name: "blockNumber";
|
|
168
|
+
readonly type: "uint256";
|
|
169
|
+
}, {
|
|
170
|
+
readonly name: "parentBlockHash";
|
|
171
|
+
readonly type: "bytes32";
|
|
172
|
+
}, {
|
|
173
|
+
readonly name: "timestamp";
|
|
174
|
+
readonly type: "uint256";
|
|
175
|
+
}, {
|
|
176
|
+
readonly name: "nativeBalance";
|
|
177
|
+
readonly type: "uint256";
|
|
178
|
+
}, {
|
|
179
|
+
readonly name: "tokenBalances";
|
|
180
|
+
readonly type: "tuple[]";
|
|
181
|
+
readonly components: readonly [{
|
|
182
|
+
readonly name: "token";
|
|
183
|
+
readonly type: "address";
|
|
184
|
+
}, {
|
|
185
|
+
readonly name: "balance";
|
|
186
|
+
readonly type: "uint256";
|
|
187
|
+
}, {
|
|
188
|
+
readonly name: "allowance";
|
|
189
|
+
readonly type: "uint256";
|
|
190
|
+
}];
|
|
191
|
+
}, {
|
|
192
|
+
readonly name: "predictedToken";
|
|
193
|
+
readonly type: "address";
|
|
194
|
+
}, {
|
|
195
|
+
readonly name: "launchId";
|
|
196
|
+
readonly type: "bytes32";
|
|
197
|
+
}, {
|
|
198
|
+
readonly name: "progress";
|
|
199
|
+
readonly type: "tuple";
|
|
200
|
+
readonly components: readonly [{
|
|
201
|
+
readonly name: "launchId";
|
|
202
|
+
readonly type: "bytes32";
|
|
203
|
+
}, {
|
|
204
|
+
readonly name: "planHash";
|
|
205
|
+
readonly type: "bytes32";
|
|
206
|
+
}, {
|
|
207
|
+
readonly name: "creator";
|
|
208
|
+
readonly type: "address";
|
|
209
|
+
}, {
|
|
210
|
+
readonly name: "nonce";
|
|
211
|
+
readonly type: "uint256";
|
|
212
|
+
}, {
|
|
213
|
+
readonly name: "mode";
|
|
214
|
+
readonly type: "uint8";
|
|
215
|
+
}, {
|
|
216
|
+
readonly name: "phase";
|
|
217
|
+
readonly type: "uint8";
|
|
218
|
+
}, {
|
|
219
|
+
readonly name: "token";
|
|
220
|
+
readonly type: "address";
|
|
221
|
+
}, {
|
|
222
|
+
readonly name: "feeHub";
|
|
223
|
+
readonly type: "address";
|
|
224
|
+
}, {
|
|
225
|
+
readonly name: "rewards";
|
|
226
|
+
readonly type: "address";
|
|
227
|
+
}, {
|
|
228
|
+
readonly name: "preparedMarkets";
|
|
229
|
+
readonly type: "uint32";
|
|
230
|
+
}, {
|
|
231
|
+
readonly name: "marketCount";
|
|
232
|
+
readonly type: "uint32";
|
|
233
|
+
}, {
|
|
234
|
+
readonly name: "buyCount";
|
|
235
|
+
readonly type: "uint32";
|
|
236
|
+
}, {
|
|
237
|
+
readonly name: "positionCount";
|
|
238
|
+
readonly type: "uint32";
|
|
239
|
+
}, {
|
|
240
|
+
readonly name: "deadline";
|
|
241
|
+
readonly type: "uint256";
|
|
242
|
+
}];
|
|
243
|
+
}, {
|
|
244
|
+
readonly name: "preparedMarkets";
|
|
245
|
+
readonly type: "tuple[]";
|
|
246
|
+
readonly components: readonly [{
|
|
247
|
+
readonly name: "index";
|
|
248
|
+
readonly type: "uint32";
|
|
249
|
+
}, {
|
|
250
|
+
readonly name: "adapter";
|
|
251
|
+
readonly type: "address";
|
|
252
|
+
}, {
|
|
253
|
+
readonly name: "prepared";
|
|
254
|
+
readonly type: "tuple";
|
|
255
|
+
readonly components: readonly [{
|
|
256
|
+
readonly name: "identity";
|
|
257
|
+
readonly type: "tuple";
|
|
258
|
+
readonly components: readonly [{
|
|
259
|
+
readonly name: "venue";
|
|
260
|
+
readonly type: "uint8";
|
|
261
|
+
}, {
|
|
262
|
+
readonly name: "canonicalId";
|
|
263
|
+
readonly type: "bytes32";
|
|
264
|
+
}, {
|
|
265
|
+
readonly name: "manager";
|
|
266
|
+
readonly type: "address";
|
|
267
|
+
}, {
|
|
268
|
+
readonly name: "factory";
|
|
269
|
+
readonly type: "address";
|
|
270
|
+
}, {
|
|
271
|
+
readonly name: "pool";
|
|
272
|
+
readonly type: "address";
|
|
273
|
+
}, {
|
|
274
|
+
readonly name: "poolId";
|
|
275
|
+
readonly type: "bytes32";
|
|
276
|
+
}, {
|
|
277
|
+
readonly name: "profileId";
|
|
278
|
+
readonly type: "bytes32";
|
|
279
|
+
}, {
|
|
280
|
+
readonly name: "currency0";
|
|
281
|
+
readonly type: "address";
|
|
282
|
+
}, {
|
|
283
|
+
readonly name: "currency1";
|
|
284
|
+
readonly type: "address";
|
|
285
|
+
}, {
|
|
286
|
+
readonly name: "fee";
|
|
287
|
+
readonly type: "uint24";
|
|
288
|
+
}, {
|
|
289
|
+
readonly name: "tickSpacing";
|
|
290
|
+
readonly type: "int24";
|
|
291
|
+
}, {
|
|
292
|
+
readonly name: "hook";
|
|
293
|
+
readonly type: "address";
|
|
294
|
+
}, {
|
|
295
|
+
readonly name: "openingSqrtPriceX96";
|
|
296
|
+
readonly type: "uint160";
|
|
297
|
+
}];
|
|
298
|
+
}, {
|
|
299
|
+
readonly name: "feeSource";
|
|
300
|
+
readonly type: "address";
|
|
301
|
+
}, {
|
|
302
|
+
readonly name: "custody";
|
|
303
|
+
readonly type: "address";
|
|
304
|
+
}, {
|
|
305
|
+
readonly name: "mintExecutor";
|
|
306
|
+
readonly type: "address";
|
|
307
|
+
}, {
|
|
308
|
+
readonly name: "buyExecutor";
|
|
309
|
+
readonly type: "address";
|
|
310
|
+
}, {
|
|
311
|
+
readonly name: "exclusions";
|
|
312
|
+
readonly type: "address[]";
|
|
313
|
+
}, {
|
|
314
|
+
readonly name: "positionCount";
|
|
315
|
+
readonly type: "uint32";
|
|
316
|
+
}];
|
|
317
|
+
}, {
|
|
318
|
+
readonly name: "liveStateSuccess";
|
|
319
|
+
readonly type: "bool";
|
|
320
|
+
}, {
|
|
321
|
+
readonly name: "live";
|
|
322
|
+
readonly type: "tuple";
|
|
323
|
+
readonly components: readonly [{
|
|
324
|
+
readonly name: "sqrtPriceX96";
|
|
325
|
+
readonly type: "uint160";
|
|
326
|
+
}, {
|
|
327
|
+
readonly name: "tick";
|
|
328
|
+
readonly type: "int24";
|
|
329
|
+
}, {
|
|
330
|
+
readonly name: "liquidity";
|
|
331
|
+
readonly type: "uint128";
|
|
332
|
+
}, {
|
|
333
|
+
readonly name: "publicTrading";
|
|
334
|
+
readonly type: "bool";
|
|
335
|
+
}, {
|
|
336
|
+
readonly name: "oracleReadyAt";
|
|
337
|
+
readonly type: "uint256";
|
|
338
|
+
}];
|
|
339
|
+
}, {
|
|
340
|
+
readonly name: "liveStateError";
|
|
341
|
+
readonly type: "bytes";
|
|
342
|
+
}];
|
|
343
|
+
}, {
|
|
344
|
+
readonly name: "hookDeployments";
|
|
345
|
+
readonly type: "tuple[]";
|
|
346
|
+
readonly components: readonly [{
|
|
347
|
+
readonly name: "marketIndex";
|
|
348
|
+
readonly type: "uint32";
|
|
349
|
+
}, {
|
|
350
|
+
readonly name: "adapter";
|
|
351
|
+
readonly type: "address";
|
|
352
|
+
}, {
|
|
353
|
+
readonly name: "deployer";
|
|
354
|
+
readonly type: "address";
|
|
355
|
+
}, {
|
|
356
|
+
readonly name: "constructorParameters";
|
|
357
|
+
readonly type: "bytes";
|
|
358
|
+
}, {
|
|
359
|
+
readonly name: "initCodeHash";
|
|
360
|
+
readonly type: "bytes32";
|
|
361
|
+
}, {
|
|
362
|
+
readonly name: "salt";
|
|
363
|
+
readonly type: "bytes32";
|
|
364
|
+
}, {
|
|
365
|
+
readonly name: "hook";
|
|
366
|
+
readonly type: "address";
|
|
367
|
+
}, {
|
|
368
|
+
readonly name: "found";
|
|
369
|
+
readonly type: "bool";
|
|
370
|
+
}];
|
|
371
|
+
}];
|
|
372
|
+
}];
|
|
373
|
+
}];
|
|
374
|
+
export type LifecycleLensSnapshot = {
|
|
375
|
+
chainId: bigint;
|
|
376
|
+
blockNumber: bigint;
|
|
377
|
+
parentBlockHash: Hex;
|
|
378
|
+
timestamp: bigint;
|
|
379
|
+
nativeBalance: bigint;
|
|
380
|
+
tokenBalances: readonly {
|
|
381
|
+
token: Address;
|
|
382
|
+
balance: bigint;
|
|
383
|
+
allowance: bigint;
|
|
384
|
+
}[];
|
|
385
|
+
predictedToken: Address;
|
|
386
|
+
launchId: Hex;
|
|
387
|
+
progress: LaunchProgressV1;
|
|
388
|
+
preparedMarkets: readonly {
|
|
389
|
+
index: number;
|
|
390
|
+
adapter: Address;
|
|
391
|
+
prepared: PreparedMarketV1;
|
|
392
|
+
liveStateSuccess: boolean;
|
|
393
|
+
live: MarketLiveStateV1;
|
|
394
|
+
liveStateError: Hex;
|
|
395
|
+
}[];
|
|
396
|
+
hookDeployments: readonly {
|
|
397
|
+
marketIndex: number;
|
|
398
|
+
adapter: Address;
|
|
399
|
+
deployer: Address;
|
|
400
|
+
constructorParameters: Hex;
|
|
401
|
+
initCodeHash: Hex;
|
|
402
|
+
salt: Hex;
|
|
403
|
+
hook: Address;
|
|
404
|
+
found: boolean;
|
|
405
|
+
}[];
|
|
406
|
+
};
|
|
407
|
+
export declare function observeLifecycleLens(client: LifecycleRpcClient, block: LifecycleBlock, snapshot: LifecycleLensSnapshot): void;
|
|
408
|
+
export declare function lifecycleLensSnapshot(client: LifecycleRpcClient, block: LifecycleBlock): LifecycleLensSnapshot | undefined;
|
|
409
|
+
//# sourceMappingURL=lens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lens.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAA+G,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChN,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErE,gGAAgG;AAChG,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBf,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IACrG,aAAa,EAAE,SAAS;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjF,cAAc,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAC;IACnE,eAAe,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAC;QAAC,gBAAgB,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,iBAAiB,CAAC;QAAC,cAAc,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACrK,eAAe,EAAE,SAAS;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,qBAAqB,EAAE,GAAG,CAAC;QAAC,YAAY,EAAE,GAAG,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CACnL,CAAC;AAGF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAE7H;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,GAAG,qBAAqB,GAAG,SAAS,CAG1H"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { launchPlanV1Components, launchProgressV1Components, preparedMarketV1Components, marketLiveStateV1Components } from "./schema.js";
|
|
2
|
+
/** ILaunchLens.sol, versioned planning snapshot. No preset lens is deployed by this release. */
|
|
3
|
+
export const launchLensAbi = [{ type: "function", name: "snapshot", stateMutability: "view",
|
|
4
|
+
inputs: [{ name: "plan", type: "tuple", components: launchPlanV1Components }, { name: "owner", type: "address" },
|
|
5
|
+
{ name: "fundingEscrow", type: "address" }, { name: "tokens", type: "address[]" }, { name: "maxAttempts", type: "uint256" }],
|
|
6
|
+
outputs: [{ name: "result", type: "tuple", components: [
|
|
7
|
+
{ name: "chainId", type: "uint256" }, { name: "blockNumber", type: "uint256" },
|
|
8
|
+
{ name: "parentBlockHash", type: "bytes32" }, { name: "timestamp", type: "uint256" }, { name: "nativeBalance", type: "uint256" },
|
|
9
|
+
{ name: "tokenBalances", type: "tuple[]", components: [{ name: "token", type: "address" }, { name: "balance", type: "uint256" }, { name: "allowance", type: "uint256" }] },
|
|
10
|
+
{ name: "predictedToken", type: "address" }, { name: "launchId", type: "bytes32" },
|
|
11
|
+
{ name: "progress", type: "tuple", components: launchProgressV1Components },
|
|
12
|
+
{ name: "preparedMarkets", type: "tuple[]", components: [
|
|
13
|
+
{ name: "index", type: "uint32" }, { name: "adapter", type: "address" }, { name: "prepared", type: "tuple", components: preparedMarketV1Components },
|
|
14
|
+
{ name: "liveStateSuccess", type: "bool" }, { name: "live", type: "tuple", components: marketLiveStateV1Components }, { name: "liveStateError", type: "bytes" },
|
|
15
|
+
] },
|
|
16
|
+
{ name: "hookDeployments", type: "tuple[]", components: [
|
|
17
|
+
{ name: "marketIndex", type: "uint32" }, { name: "adapter", type: "address" }, { name: "deployer", type: "address" },
|
|
18
|
+
{ name: "constructorParameters", type: "bytes" }, { name: "initCodeHash", type: "bytes32" }, { name: "salt", type: "bytes32" }, { name: "hook", type: "address" }, { name: "found", type: "bool" },
|
|
19
|
+
] },
|
|
20
|
+
] }],
|
|
21
|
+
}];
|
|
22
|
+
const snapshots = new WeakMap();
|
|
23
|
+
export function observeLifecycleLens(client, block, snapshot) {
|
|
24
|
+
snapshots.set(client, { blockHash: block.hash.toLowerCase(), snapshot });
|
|
25
|
+
}
|
|
26
|
+
export function lifecycleLensSnapshot(client, block) {
|
|
27
|
+
const observation = snapshots.get(client);
|
|
28
|
+
return observation?.snapshot.blockNumber === block.number && observation.blockHash === block.hash.toLowerCase() ? observation.snapshot : undefined;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=lens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lens.js","sourceRoot":"","sources":["../../src/lifecycle/lens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type Address } from "viem";
|
|
2
|
+
import { type LifecycleBlock, type LifecyclePoolBoundHookDeployment, type LifecycleRpcClient, type PoolBoundLifecyclePreparationProgress } from "./types.js";
|
|
3
|
+
export declare const hookSaltMinerAbi: readonly [{
|
|
4
|
+
readonly name: "findMany";
|
|
5
|
+
readonly type: "function";
|
|
6
|
+
readonly stateMutability: "pure";
|
|
7
|
+
readonly inputs: readonly [{
|
|
8
|
+
readonly type: "tuple[]";
|
|
9
|
+
readonly components: readonly [{
|
|
10
|
+
readonly type: "address";
|
|
11
|
+
readonly name: "deployer";
|
|
12
|
+
}, {
|
|
13
|
+
readonly type: "bytes32";
|
|
14
|
+
readonly name: "initCodeHash";
|
|
15
|
+
}, {
|
|
16
|
+
readonly type: "uint256";
|
|
17
|
+
readonly name: "startSalt";
|
|
18
|
+
}, {
|
|
19
|
+
readonly type: "uint160";
|
|
20
|
+
readonly name: "flags";
|
|
21
|
+
}];
|
|
22
|
+
readonly name: "searches";
|
|
23
|
+
}, {
|
|
24
|
+
readonly type: "uint256";
|
|
25
|
+
readonly name: "maxAttempts";
|
|
26
|
+
}];
|
|
27
|
+
readonly outputs: readonly [{
|
|
28
|
+
readonly type: "bytes32[]";
|
|
29
|
+
readonly name: "salts";
|
|
30
|
+
}, {
|
|
31
|
+
readonly type: "address[]";
|
|
32
|
+
readonly name: "hooks";
|
|
33
|
+
}, {
|
|
34
|
+
readonly type: "bool[]";
|
|
35
|
+
readonly name: "found";
|
|
36
|
+
}];
|
|
37
|
+
}];
|
|
38
|
+
/** Read-only bounded EVM mining; every returned winner is checked with local CREATE2. */
|
|
39
|
+
export declare function mineLifecycleHooks(options: {
|
|
40
|
+
client: LifecycleRpcClient;
|
|
41
|
+
block: LifecycleBlock;
|
|
42
|
+
miner?: Address;
|
|
43
|
+
deployments: readonly LifecyclePoolBoundHookDeployment[];
|
|
44
|
+
signal?: AbortSignal;
|
|
45
|
+
onProgress?: (progress: PoolBoundLifecyclePreparationProgress) => void;
|
|
46
|
+
}): Promise<LifecyclePoolBoundHookDeployment[]>;
|
|
47
|
+
//# sourceMappingURL=mining.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mining.d.ts","sourceRoot":"","sources":["../../src/lifecycle/mining.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAY,MAAM,MAAM,CAAC;AAGxD,OAAO,EAA0B,KAAK,cAAc,EAAE,KAAK,gCAAgC,EAAE,KAAK,kBAAkB,EAAE,KAAK,qCAAqC,EAAE,MAAM,YAAY,CAAC;AAGrL,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA4M,CAAC;AAE1O,yFAAyF;AACzF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,MAAM,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACnE,WAAW,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC/E,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,qCAAqC,KAAK,IAAI,CAAC;CACxE,GAAG,OAAO,CAAC,gCAAgC,EAAE,CAAC,CAkE9C"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { parseAbi } from "viem";
|
|
2
|
+
import { hasLifecycleV4HookPermissions, minePoolBoundHookSalt, predictPoolBoundHookAddress } from "./markets.js";
|
|
3
|
+
import { readLifecycleContract } from "./rpc.js";
|
|
4
|
+
import { LifecyclePlanningError } from "./types.js";
|
|
5
|
+
import { lifecycleLensSnapshot } from "./lens.js";
|
|
6
|
+
export const hookSaltMinerAbi = parseAbi(["function findMany((address deployer, bytes32 initCodeHash, uint256 startSalt, uint160 flags)[] searches, uint256 maxAttempts) pure returns (bytes32[] salts, address[] hooks, bool[] found)"]);
|
|
7
|
+
/** Read-only bounded EVM mining; every returned winner is checked with local CREATE2. */
|
|
8
|
+
export async function mineLifecycleHooks(options) {
|
|
9
|
+
const { deployments, signal, onProgress, miner, client, block } = options;
|
|
10
|
+
const checkActive = () => { if (signal?.aborted)
|
|
11
|
+
throw Object.assign(new Error("Lifecycle hook mining cancelled"), { name: "AbortError" }); };
|
|
12
|
+
checkActive();
|
|
13
|
+
if (miner === undefined)
|
|
14
|
+
return Promise.all(deployments.map(async (deployment) => ({ ...deployment,
|
|
15
|
+
...await minePoolBoundHookSalt({ ...deployment, startSalt: BigInt(deployment.salt), signal,
|
|
16
|
+
onProgress: onProgress === undefined ? undefined : (progress) => onProgress({ marketIndex: deployment.marketIndex, ...progress }) }),
|
|
17
|
+
})));
|
|
18
|
+
const results = deployments.map((deployment) => ({ ...deployment }));
|
|
19
|
+
const lens = lifecycleLensSnapshot(client, block);
|
|
20
|
+
let pending = [];
|
|
21
|
+
for (const [index, deployment] of deployments.entries()) {
|
|
22
|
+
const observed = lens?.hookDeployments.find((hook) => hook.marketIndex === deployment.marketIndex);
|
|
23
|
+
if (observed === undefined) {
|
|
24
|
+
pending.push(index);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const predictedHook = predictPoolBoundHookAddress({ ...deployment, salt: observed.salt });
|
|
28
|
+
if (observed.deployer.toLowerCase() !== deployment.deployer.toLowerCase() || observed.initCodeHash.toLowerCase() !== deployment.initCodeHash.toLowerCase() ||
|
|
29
|
+
BigInt(observed.salt) < BigInt(deployment.salt) || observed.found && (observed.hook.toLowerCase() !== predictedHook.toLowerCase() || !hasLifecycleV4HookPermissions(predictedHook))) {
|
|
30
|
+
throw new LifecyclePlanningError("INVALID_MINER_RESULT", "LaunchLens hook result differs from the locally derived constructor or CREATE2 address");
|
|
31
|
+
}
|
|
32
|
+
results[index] = { ...deployment, salt: observed.salt, predictedHook };
|
|
33
|
+
if (!observed.found)
|
|
34
|
+
pending.push(index);
|
|
35
|
+
else
|
|
36
|
+
onProgress?.({ marketIndex: deployment.marketIndex, salt: observed.salt, predictedHook, attempts: BigInt(observed.salt) - BigInt(deployment.salt) + 1n });
|
|
37
|
+
}
|
|
38
|
+
while (pending.length > 0) {
|
|
39
|
+
checkActive();
|
|
40
|
+
let maxAttempts = BigInt(Math.floor(150_000 / pending.length));
|
|
41
|
+
for (const index of pending) {
|
|
42
|
+
const available = (1n << 256n) - 1n - BigInt(results[index].salt);
|
|
43
|
+
if (available < maxAttempts)
|
|
44
|
+
maxAttempts = available;
|
|
45
|
+
}
|
|
46
|
+
if (maxAttempts === 0n) {
|
|
47
|
+
pending = pending.filter((index) => {
|
|
48
|
+
const deployment = results[index];
|
|
49
|
+
if (BigInt(deployment.salt) !== (1n << 256n) - 1n)
|
|
50
|
+
return true;
|
|
51
|
+
const predictedHook = predictPoolBoundHookAddress(deployment);
|
|
52
|
+
if (!hasLifecycleV4HookPermissions(predictedHook))
|
|
53
|
+
throw new LifecyclePlanningError("HOOK_SALT_EXHAUSTED", "No valid hook address remains in the uint256 salt range");
|
|
54
|
+
results[index] = { ...deployment, predictedHook };
|
|
55
|
+
onProgress?.({ marketIndex: deployment.marketIndex, salt: deployment.salt, predictedHook, attempts: BigInt(deployment.salt) - BigInt(deployments[index].salt) + 1n });
|
|
56
|
+
return false;
|
|
57
|
+
});
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
const searches = pending.map((index) => ({ deployer: results[index].deployer, initCodeHash: results[index].initCodeHash, startSalt: BigInt(results[index].salt), flags: 0x1afcn }));
|
|
61
|
+
const [salts, hooks, found] = await readLifecycleContract(client, miner, hookSaltMinerAbi, "findMany", [searches, maxAttempts], block);
|
|
62
|
+
checkActive();
|
|
63
|
+
if (salts.length !== pending.length || hooks.length !== pending.length || found.length !== pending.length)
|
|
64
|
+
throw new LifecyclePlanningError("INVALID_MINER_RESULT", "Hook miner omitted a search result");
|
|
65
|
+
const unfinished = [];
|
|
66
|
+
for (const [ordinal, index] of pending.entries()) {
|
|
67
|
+
const deployment = results[index];
|
|
68
|
+
const salt = salts[ordinal];
|
|
69
|
+
const end = searches[ordinal].startSalt + maxAttempts;
|
|
70
|
+
const predictedHook = predictPoolBoundHookAddress({ ...deployment, salt });
|
|
71
|
+
if (found[ordinal]) {
|
|
72
|
+
if (BigInt(salt) < searches[ordinal].startSalt || BigInt(salt) >= end || hooks[ordinal].toLowerCase() !== predictedHook.toLowerCase() || !hasLifecycleV4HookPermissions(predictedHook))
|
|
73
|
+
throw new LifecyclePlanningError("INVALID_MINER_RESULT", "Hook miner returned an invalid CREATE2 salt or permission mask");
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
if (BigInt(salt) !== end)
|
|
77
|
+
throw new LifecyclePlanningError("INVALID_MINER_RESULT", "Hook miner did not advance to the next unsearched salt");
|
|
78
|
+
unfinished.push(index);
|
|
79
|
+
}
|
|
80
|
+
results[index] = { ...deployment, salt, predictedHook };
|
|
81
|
+
onProgress?.({ marketIndex: deployment.marketIndex, salt, predictedHook, attempts: BigInt(salt) - BigInt(deployments[index].salt) + (found[ordinal] ? 1n : 0n) });
|
|
82
|
+
checkActive();
|
|
83
|
+
}
|
|
84
|
+
pending = unfinished;
|
|
85
|
+
}
|
|
86
|
+
checkActive();
|
|
87
|
+
return results;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=mining.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mining.js","sourceRoot":"","sources":["../../src/lifecycle/mining.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/lifecycle/planner.ts"],"names":[],"mappings":"AASA,OAAO,EAA0B,KAAK,2BAA2B,EAAkN,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,oCAAoC,EAAE,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/lifecycle/planner.ts"],"names":[],"mappings":"AASA,OAAO,EAA0B,KAAK,2BAA2B,EAAkN,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,oCAAoC,EAAE,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAyQld;wFACwF;AACxF,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,oCAAoC,GAAG,OAAO,CAAC,aAAa,CAAC,CA+EzH;AAED,qGAAqG;AACrG,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAQnF;AA2ID;uFACuF;AACvF,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAmF1H;AAED;qFACqF;AACrF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAWzG"}
|