@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,349 @@
1
+ import { type Address, type Hex } from "viem";
2
+ import type { MarketConfigV1 } from "./schema.js";
3
+ import { type LifecycleProfile, type PoolBoundHookSaltProgress } from "./types.js";
4
+ export type V4LifecyclePositionConfig = {
5
+ tickLower: number;
6
+ tickUpper: number;
7
+ liquidity: bigint;
8
+ salt: Hex;
9
+ maxTokenAmount: bigint;
10
+ };
11
+ export type V4LifecycleMarketConfig = {
12
+ version: 4;
13
+ lpFeePips: number;
14
+ tickSpacing: number;
15
+ sqrtPriceX96: bigint;
16
+ hookFeePips: number;
17
+ feeMode: number;
18
+ protocolFeeDenominator: number;
19
+ treasury: Address;
20
+ externalLiquidityDisabled: boolean;
21
+ oracleConfigId: Hex;
22
+ profileId: Hex;
23
+ termsDigest: Hex;
24
+ developerBeneficiary: Address;
25
+ developerFeeBps: number;
26
+ positions: readonly V4LifecyclePositionConfig[];
27
+ };
28
+ export declare const v4LifecyclePositionComponents: readonly [{
29
+ readonly name: "tickLower";
30
+ readonly type: "int24";
31
+ }, {
32
+ readonly name: "tickUpper";
33
+ readonly type: "int24";
34
+ }, {
35
+ readonly name: "liquidity";
36
+ readonly type: "uint128";
37
+ }, {
38
+ readonly name: "salt";
39
+ readonly type: "bytes32";
40
+ }, {
41
+ readonly name: "maxTokenAmount";
42
+ readonly type: "uint256";
43
+ }];
44
+ export declare const v4LifecycleMarketComponents: readonly [{
45
+ readonly name: "version";
46
+ readonly type: "uint16";
47
+ }, {
48
+ readonly name: "lpFeePips";
49
+ readonly type: "uint24";
50
+ }, {
51
+ readonly name: "tickSpacing";
52
+ readonly type: "int24";
53
+ }, {
54
+ readonly name: "sqrtPriceX96";
55
+ readonly type: "uint160";
56
+ }, {
57
+ readonly name: "hookFeePips";
58
+ readonly type: "uint24";
59
+ }, {
60
+ readonly name: "feeMode";
61
+ readonly type: "uint8";
62
+ }, {
63
+ readonly name: "protocolFeeDenominator";
64
+ readonly type: "uint8";
65
+ }, {
66
+ readonly name: "treasury";
67
+ readonly type: "address";
68
+ }, {
69
+ readonly name: "externalLiquidityDisabled";
70
+ readonly type: "bool";
71
+ }, {
72
+ readonly name: "oracleConfigId";
73
+ readonly type: "bytes32";
74
+ }, {
75
+ readonly name: "profileId";
76
+ readonly type: "bytes32";
77
+ }, {
78
+ readonly name: "termsDigest";
79
+ readonly type: "bytes32";
80
+ }, {
81
+ readonly name: "developerBeneficiary";
82
+ readonly type: "address";
83
+ }, {
84
+ readonly name: "developerFeeBps";
85
+ readonly type: "uint16";
86
+ }, {
87
+ readonly name: "positions";
88
+ readonly type: "tuple[]";
89
+ readonly components: readonly [{
90
+ readonly name: "tickLower";
91
+ readonly type: "int24";
92
+ }, {
93
+ readonly name: "tickUpper";
94
+ readonly type: "int24";
95
+ }, {
96
+ readonly name: "liquidity";
97
+ readonly type: "uint128";
98
+ }, {
99
+ readonly name: "salt";
100
+ readonly type: "bytes32";
101
+ }, {
102
+ readonly name: "maxTokenAmount";
103
+ readonly type: "uint256";
104
+ }];
105
+ }];
106
+ export declare function encodeV4LifecycleMarketConfig(config: V4LifecycleMarketConfig): Hex;
107
+ export declare function decodeV4LifecycleMarketConfig(encoded: Hex): V4LifecycleMarketConfig;
108
+ export type V4PoolBoundLifecycleMarketConfig = Omit<V4LifecycleMarketConfig, "version"> & {
109
+ version: 5;
110
+ hookSalt: Hex;
111
+ };
112
+ export declare const V4_LIFECYCLE_CONFIG_SCHEMA: `0x${string}`;
113
+ export declare const V4_POOL_BOUND_LIFECYCLE_CONFIG_SCHEMA: `0x${string}`;
114
+ export declare const V4_POOL_BOUND_MARKET_ECONOMICS_DOMAIN: `0x${string}`;
115
+ export declare const V4_LIFECYCLE_HOOK_PERMISSION_MASK = 16383n;
116
+ export declare const V4_LIFECYCLE_HOOK_PERMISSIONS = 6908n;
117
+ export declare const poolBoundV4LifecycleMarketComponents: readonly [{
118
+ readonly name: "version";
119
+ readonly type: "uint16";
120
+ }, {
121
+ readonly name: "lpFeePips";
122
+ readonly type: "uint24";
123
+ }, {
124
+ readonly name: "tickSpacing";
125
+ readonly type: "int24";
126
+ }, {
127
+ readonly name: "sqrtPriceX96";
128
+ readonly type: "uint160";
129
+ }, {
130
+ readonly name: "hookFeePips";
131
+ readonly type: "uint24";
132
+ }, {
133
+ readonly name: "feeMode";
134
+ readonly type: "uint8";
135
+ }, {
136
+ readonly name: "protocolFeeDenominator";
137
+ readonly type: "uint8";
138
+ }, {
139
+ readonly name: "treasury";
140
+ readonly type: "address";
141
+ }, {
142
+ readonly name: "externalLiquidityDisabled";
143
+ readonly type: "bool";
144
+ }, {
145
+ readonly name: "oracleConfigId";
146
+ readonly type: "bytes32";
147
+ }, {
148
+ readonly name: "hookSalt";
149
+ readonly type: "bytes32";
150
+ }, {
151
+ readonly name: "profileId";
152
+ readonly type: "bytes32";
153
+ }, {
154
+ readonly name: "termsDigest";
155
+ readonly type: "bytes32";
156
+ }, {
157
+ readonly name: "developerBeneficiary";
158
+ readonly type: "address";
159
+ }, {
160
+ readonly name: "developerFeeBps";
161
+ readonly type: "uint16";
162
+ }, {
163
+ readonly name: "positions";
164
+ readonly type: "tuple[]";
165
+ readonly components: readonly [{
166
+ readonly name: "tickLower";
167
+ readonly type: "int24";
168
+ }, {
169
+ readonly name: "tickUpper";
170
+ readonly type: "int24";
171
+ }, {
172
+ readonly name: "liquidity";
173
+ readonly type: "uint128";
174
+ }, {
175
+ readonly name: "salt";
176
+ readonly type: "bytes32";
177
+ }, {
178
+ readonly name: "maxTokenAmount";
179
+ readonly type: "uint256";
180
+ }];
181
+ }];
182
+ export declare function encodePoolBoundV4LifecycleMarketConfig(config: V4PoolBoundLifecycleMarketConfig): Hex;
183
+ export declare function decodePoolBoundV4LifecycleMarketConfig(encoded: Hex): V4PoolBoundLifecycleMarketConfig;
184
+ /** Exact pending-source admission terms; author identity is never the live payout address. */
185
+ export declare function validateReviewedV4LifecycleMarket(options: {
186
+ market: MarketConfigV1;
187
+ config: V4LifecycleMarketConfig | V4PoolBoundLifecycleMarketConfig;
188
+ profile: LifecycleProfile;
189
+ token: Address;
190
+ }): void;
191
+ export type PoolBoundHookParametersV1 = {
192
+ poolManager: Address;
193
+ registrar: Address;
194
+ oracleFactory: Address;
195
+ core: Address;
196
+ liquidityLocker: Address;
197
+ token: Address;
198
+ quoteCurrency: Address;
199
+ lpFeePips: number;
200
+ tickSpacing: number;
201
+ sqrtPriceX96: bigint;
202
+ hookFeePips: number;
203
+ feeMode: number;
204
+ protocolFeeDenominator: number;
205
+ treasury: Address;
206
+ externalLiquidityDisabled: boolean;
207
+ oracleConfigId: Hex;
208
+ marketCommitment: Hex;
209
+ expectedPositionCount: number;
210
+ };
211
+ export declare const poolBoundHookParametersV1Components: readonly [{
212
+ readonly name: "poolManager";
213
+ readonly type: "address";
214
+ }, {
215
+ readonly name: "registrar";
216
+ readonly type: "address";
217
+ }, {
218
+ readonly name: "oracleFactory";
219
+ readonly type: "address";
220
+ }, {
221
+ readonly name: "core";
222
+ readonly type: "address";
223
+ }, {
224
+ readonly name: "liquidityLocker";
225
+ readonly type: "address";
226
+ }, {
227
+ readonly name: "token";
228
+ readonly type: "address";
229
+ }, {
230
+ readonly name: "quoteCurrency";
231
+ readonly type: "address";
232
+ }, {
233
+ readonly name: "lpFeePips";
234
+ readonly type: "uint24";
235
+ }, {
236
+ readonly name: "tickSpacing";
237
+ readonly type: "int24";
238
+ }, {
239
+ readonly name: "sqrtPriceX96";
240
+ readonly type: "uint160";
241
+ }, {
242
+ readonly name: "hookFeePips";
243
+ readonly type: "uint24";
244
+ }, {
245
+ readonly name: "feeMode";
246
+ readonly type: "uint8";
247
+ }, {
248
+ readonly name: "protocolFeeDenominator";
249
+ readonly type: "uint8";
250
+ }, {
251
+ readonly name: "treasury";
252
+ readonly type: "address";
253
+ }, {
254
+ readonly name: "externalLiquidityDisabled";
255
+ readonly type: "bool";
256
+ }, {
257
+ readonly name: "oracleConfigId";
258
+ readonly type: "bytes32";
259
+ }, {
260
+ readonly name: "marketCommitment";
261
+ readonly type: "bytes32";
262
+ }, {
263
+ readonly name: "expectedPositionCount";
264
+ readonly type: "uint32";
265
+ }];
266
+ export declare function encodePoolBoundHookParameters(parameters: PoolBoundHookParametersV1): Hex;
267
+ export declare function hashPoolBoundV4MarketCommitment(options: {
268
+ chainId: bigint;
269
+ core: Address;
270
+ registrar: Address;
271
+ token: Address;
272
+ market: MarketConfigV1;
273
+ }): Hex;
274
+ export declare function hasLifecycleV4HookPermissions(hook: Address): boolean;
275
+ export declare function predictPoolBoundHookAddress(options: {
276
+ deployer: Address;
277
+ initCodeHash: Hex;
278
+ salt: Hex;
279
+ }): Address;
280
+ export declare function poolBoundHookInitCodeHash(creationCode: Hex, parameters: PoolBoundHookParametersV1): Hex;
281
+ /** Deterministic CREATE2 search with a macrotask boundary before work and between bounded batches. */
282
+ export declare function minePoolBoundHookSalt(options: {
283
+ deployer: Address;
284
+ initCodeHash: Hex;
285
+ startSalt?: bigint;
286
+ signal?: AbortSignal;
287
+ onProgress?: (progress: PoolBoundHookSaltProgress) => void;
288
+ }): Promise<{
289
+ salt: Hex;
290
+ predictedHook: Address;
291
+ }>;
292
+ export type AbyssLifecyclePositionConfig = {
293
+ tickLower: number;
294
+ tickUpper: number;
295
+ liquidity: bigint;
296
+ tokenAmountMaximum: bigint;
297
+ };
298
+ export type AbyssLifecycleMarketConfig = {
299
+ profile: number;
300
+ fee: number;
301
+ oracleConfigId: Hex;
302
+ openingSqrtPriceX96: bigint;
303
+ positions: readonly AbyssLifecyclePositionConfig[];
304
+ };
305
+ export declare const abyssLifecyclePositionComponents: readonly [{
306
+ readonly name: "tickLower";
307
+ readonly type: "int24";
308
+ }, {
309
+ readonly name: "tickUpper";
310
+ readonly type: "int24";
311
+ }, {
312
+ readonly name: "liquidity";
313
+ readonly type: "uint128";
314
+ }, {
315
+ readonly name: "tokenAmountMaximum";
316
+ readonly type: "uint256";
317
+ }];
318
+ export declare const abyssLifecycleMarketComponents: readonly [{
319
+ readonly name: "profile";
320
+ readonly type: "uint8";
321
+ }, {
322
+ readonly name: "fee";
323
+ readonly type: "uint24";
324
+ }, {
325
+ readonly name: "oracleConfigId";
326
+ readonly type: "bytes32";
327
+ }, {
328
+ readonly name: "openingSqrtPriceX96";
329
+ readonly type: "uint160";
330
+ }, {
331
+ readonly name: "positions";
332
+ readonly type: "tuple[]";
333
+ readonly components: readonly [{
334
+ readonly name: "tickLower";
335
+ readonly type: "int24";
336
+ }, {
337
+ readonly name: "tickUpper";
338
+ readonly type: "int24";
339
+ }, {
340
+ readonly name: "liquidity";
341
+ readonly type: "uint128";
342
+ }, {
343
+ readonly name: "tokenAmountMaximum";
344
+ readonly type: "uint256";
345
+ }];
346
+ }];
347
+ export declare function encodeAbyssLifecycleMarketConfig(config: AbyssLifecycleMarketConfig): Hex;
348
+ export declare function decodeAbyssLifecycleMarketConfig(encoded: Hex): AbyssLifecycleMarketConfig;
349
+ //# sourceMappingURL=markets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markets.d.ts","sourceRoot":"","sources":["../../src/lifecycle/markets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ import { concatHex, decodeAbiParameters, encodeAbiParameters, getCreate2Address, keccak256, stringToHex, toHex, zeroHash } from "viem";
2
+ import { LifecyclePlanningError } from "./types.js";
3
+ export const v4LifecyclePositionComponents = [
4
+ { name: "tickLower", type: "int24" }, { name: "tickUpper", type: "int24" },
5
+ { name: "liquidity", type: "uint128" }, { name: "salt", type: "bytes32" }, { name: "maxTokenAmount", type: "uint256" },
6
+ ];
7
+ export const v4LifecycleMarketComponents = [
8
+ { name: "version", type: "uint16" }, { name: "lpFeePips", type: "uint24" }, { name: "tickSpacing", type: "int24" },
9
+ { name: "sqrtPriceX96", type: "uint160" }, { name: "hookFeePips", type: "uint24" }, { name: "feeMode", type: "uint8" },
10
+ { name: "protocolFeeDenominator", type: "uint8" }, { name: "treasury", type: "address" },
11
+ { name: "externalLiquidityDisabled", type: "bool" },
12
+ { name: "oracleConfigId", type: "bytes32" },
13
+ { name: "profileId", type: "bytes32" }, { name: "termsDigest", type: "bytes32" },
14
+ { name: "developerBeneficiary", type: "address" }, { name: "developerFeeBps", type: "uint16" },
15
+ { name: "positions", type: "tuple[]", components: v4LifecyclePositionComponents },
16
+ ];
17
+ export function encodeV4LifecycleMarketConfig(config) {
18
+ if (config.version !== 4)
19
+ throw new Error("Shared V4 lifecycle market config version must be 4");
20
+ if (!Number.isInteger(config.developerFeeBps) || config.developerFeeBps < 0 || config.developerFeeBps > 65535)
21
+ throw new Error("developerFeeBps must be an explicit uint16");
22
+ return encodeAbiParameters([{ type: "tuple", components: v4LifecycleMarketComponents }], [config]);
23
+ }
24
+ export function decodeV4LifecycleMarketConfig(encoded) {
25
+ const config = decodeAbiParameters([{ type: "tuple", components: v4LifecycleMarketComponents }], encoded)[0];
26
+ if (config.version !== 4)
27
+ throw new Error("Shared V4 lifecycle market config version must be 4");
28
+ return config;
29
+ }
30
+ export const V4_LIFECYCLE_CONFIG_SCHEMA = keccak256(stringToHex("(uint16,uint24,int24,uint160,uint24,uint8,uint8,address,bool,bytes32,bytes32,bytes32,address,uint16,(int24,int24,uint128,bytes32,uint256)[])"));
31
+ export const V4_POOL_BOUND_LIFECYCLE_CONFIG_SCHEMA = keccak256(stringToHex("(uint16,uint24,int24,uint160,uint24,uint8,uint8,address,bool,bytes32,bytes32,bytes32,bytes32,address,uint16,(int24,int24,uint128,bytes32,uint256)[])"));
32
+ export const V4_POOL_BOUND_MARKET_ECONOMICS_DOMAIN = keccak256(stringToHex("black-market.reviewed-pool-bound-market-economics.v1"));
33
+ export const V4_LIFECYCLE_HOOK_PERMISSION_MASK = 0x3fffn;
34
+ export const V4_LIFECYCLE_HOOK_PERMISSIONS = 0x1afcn;
35
+ export const poolBoundV4LifecycleMarketComponents = [
36
+ { name: "version", type: "uint16" }, { name: "lpFeePips", type: "uint24" }, { name: "tickSpacing", type: "int24" },
37
+ { name: "sqrtPriceX96", type: "uint160" }, { name: "hookFeePips", type: "uint24" }, { name: "feeMode", type: "uint8" },
38
+ { name: "protocolFeeDenominator", type: "uint8" }, { name: "treasury", type: "address" },
39
+ { name: "externalLiquidityDisabled", type: "bool" }, { name: "oracleConfigId", type: "bytes32" },
40
+ { name: "hookSalt", type: "bytes32" },
41
+ { name: "profileId", type: "bytes32" }, { name: "termsDigest", type: "bytes32" },
42
+ { name: "developerBeneficiary", type: "address" }, { name: "developerFeeBps", type: "uint16" },
43
+ { name: "positions", type: "tuple[]", components: v4LifecyclePositionComponents },
44
+ ];
45
+ export function encodePoolBoundV4LifecycleMarketConfig(config) {
46
+ if (config.version !== 5)
47
+ throw new Error("Pool-bound V4 lifecycle market config version must be 5");
48
+ if (!Number.isInteger(config.developerFeeBps) || config.developerFeeBps < 0 || config.developerFeeBps > 65535)
49
+ throw new Error("developerFeeBps must be an explicit uint16");
50
+ return encodeAbiParameters([{ type: "tuple", components: poolBoundV4LifecycleMarketComponents }], [config]);
51
+ }
52
+ export function decodePoolBoundV4LifecycleMarketConfig(encoded) {
53
+ const config = decodeAbiParameters([{ type: "tuple", components: poolBoundV4LifecycleMarketComponents }], encoded)[0];
54
+ if (config.version !== 5)
55
+ throw new Error("Pool-bound V4 lifecycle market config version must be 5");
56
+ return config;
57
+ }
58
+ /** Exact pending-source admission terms; author identity is never the live payout address. */
59
+ export function validateReviewedV4LifecycleMarket(options) {
60
+ const { market, config, profile, token } = options;
61
+ if (config.version !== 4 && config.version !== 5)
62
+ throw new LifecyclePlanningError("UNSUPPORTED_CONFIG_VERSION", "Reviewed V4 config version must be 4 or 5");
63
+ const { envelope, developerTerms: terms, protocolMaximumDeveloperFeeBps: protocolCeiling } = profile;
64
+ if (envelope === undefined || terms === undefined || protocolCeiling === undefined || !terms.enabled ||
65
+ profile.topology.hookTopology !== (config.version === 4 ? 1 : 2) || market.configVersion !== config.version ||
66
+ profile.topology.configVersion !== config.version || profile.adapter.configVersion !== config.version ||
67
+ envelope.topology !== profile.topology.hookTopology || envelope.configVersion !== config.version || envelope.economicVersion !== 3 ||
68
+ market.adapterId.toLowerCase() !== profile.registration.adapterId.toLowerCase() ||
69
+ market.profileId.toLowerCase() !== profile.id.toLowerCase() || config.profileId.toLowerCase() !== profile.id.toLowerCase() ||
70
+ terms.adapter.toLowerCase() !== profile.adapter.implementation.toLowerCase() ||
71
+ config.termsDigest.toLowerCase() !== envelope.termsDigest.toLowerCase() || config.termsDigest.toLowerCase() !== terms.termsDigest.toLowerCase() ||
72
+ config.developerBeneficiary.toLowerCase() !== envelope.beneficiary.toLowerCase() ||
73
+ config.developerBeneficiary.toLowerCase() !== terms.beneficiary.toLowerCase() ||
74
+ BigInt(config.developerBeneficiary) === 0n || config.developerBeneficiary.toLowerCase() === token.toLowerCase() ||
75
+ config.developerBeneficiary.toLowerCase() === market.quoteAsset.toLowerCase()) {
76
+ throw new LifecyclePlanningError("REVIEWED_TERMS_MISMATCH", "Market must explicitly bind the admitted profile, frozen terms and stable author identity");
77
+ }
78
+ if (!Number.isInteger(config.developerFeeBps) || config.developerFeeBps < 0 ||
79
+ config.developerFeeBps > envelope.maximumDeveloperFeeBps || config.developerFeeBps > terms.maximumDeveloperFeeBps ||
80
+ config.developerFeeBps > protocolCeiling)
81
+ throw new LifecyclePlanningError("DEVELOPER_FEE_CEILING", "Explicit developer fee exceeds the reviewed or protocol ceiling");
82
+ const b = envelope.bounds;
83
+ if (config.treasury.toLowerCase() !== envelope.protocolTreasury.toLowerCase() ||
84
+ config.protocolFeeDenominator !== envelope.protocolFeeDenominator || config.hookFeePips > b.maximumHookFeePips ||
85
+ config.lpFeePips > b.maximumLpFeePips || !Number.isInteger(config.feeMode) || config.feeMode < 0 || config.feeMode > 1 || (b.feeModeFlags & (1 << config.feeMode)) === 0 ||
86
+ config.tickSpacing < b.minimumTickSpacing || config.tickSpacing > b.maximumTickSpacing ||
87
+ config.positions.length === 0 || config.positions.length > b.maximumPositions || config.externalLiquidityDisabled !== b.externalLiquidityDisabled ||
88
+ config.oracleConfigId.toLowerCase() !== b.oracleConfigId.toLowerCase()) {
89
+ throw new LifecyclePlanningError("REVIEWED_BOUNDS_MISMATCH", "Market economics exceed or differ from the exact admitted envelope bounds");
90
+ }
91
+ }
92
+ export const poolBoundHookParametersV1Components = [
93
+ { name: "poolManager", type: "address" }, { name: "registrar", type: "address" },
94
+ { name: "oracleFactory", type: "address" }, { name: "core", type: "address" },
95
+ { name: "liquidityLocker", type: "address" }, { name: "token", type: "address" },
96
+ { name: "quoteCurrency", type: "address" }, { name: "lpFeePips", type: "uint24" },
97
+ { name: "tickSpacing", type: "int24" }, { name: "sqrtPriceX96", type: "uint160" },
98
+ { name: "hookFeePips", type: "uint24" }, { name: "feeMode", type: "uint8" },
99
+ { name: "protocolFeeDenominator", type: "uint8" }, { name: "treasury", type: "address" },
100
+ { name: "externalLiquidityDisabled", type: "bool" }, { name: "oracleConfigId", type: "bytes32" },
101
+ { name: "marketCommitment", type: "bytes32" }, { name: "expectedPositionCount", type: "uint32" },
102
+ ];
103
+ export function encodePoolBoundHookParameters(parameters) {
104
+ return encodeAbiParameters([{ type: "tuple", components: poolBoundHookParametersV1Components }], [parameters]);
105
+ }
106
+ export function hashPoolBoundV4MarketCommitment(options) {
107
+ const { chainId, core, registrar, token, market } = options;
108
+ if (market.configVersion !== 5)
109
+ throw new LifecyclePlanningError("INVALID_BOUND_MARKET", "Pool-bound V4 market requires reviewed config version 5");
110
+ const config = decodePoolBoundV4LifecycleMarketConfig(market.config);
111
+ if (config.profileId.toLowerCase() !== market.profileId.toLowerCase())
112
+ throw new LifecyclePlanningError("INVALID_BOUND_MARKET", "Config profile differs from the committed market profile");
113
+ const configHash = keccak256(encodePoolBoundV4LifecycleMarketConfig({ ...config, hookSalt: zeroHash }));
114
+ return keccak256(encodeAbiParameters([
115
+ { type: "bytes32" }, { type: "uint256" }, { type: "address" }, { type: "address" }, { type: "address" },
116
+ { type: "bytes32" }, { type: "bytes32" }, { type: "address" }, { type: "uint256" }, { type: "uint32" }, { type: "bytes32" },
117
+ ], [V4_POOL_BOUND_MARKET_ECONOMICS_DOMAIN, chainId, core, registrar, token, market.adapterId, market.profileId, market.quoteAsset, market.tokenBudget, market.configVersion, configHash]));
118
+ }
119
+ export function hasLifecycleV4HookPermissions(hook) {
120
+ return (BigInt(hook) & V4_LIFECYCLE_HOOK_PERMISSION_MASK) === V4_LIFECYCLE_HOOK_PERMISSIONS;
121
+ }
122
+ export function predictPoolBoundHookAddress(options) {
123
+ return getCreate2Address({ from: options.deployer, bytecodeHash: options.initCodeHash, salt: options.salt });
124
+ }
125
+ export function poolBoundHookInitCodeHash(creationCode, parameters) {
126
+ return keccak256(concatHex([creationCode, encodePoolBoundHookParameters(parameters)]));
127
+ }
128
+ /** Deterministic CREATE2 search with a macrotask boundary before work and between bounded batches. */
129
+ export async function minePoolBoundHookSalt(options) {
130
+ const { signal, onProgress } = options;
131
+ let candidate = options.startSalt ?? 0n;
132
+ if (candidate < 0n || candidate >= 1n << 256n)
133
+ throw new LifecyclePlanningError("INVALID_HOOK_SALT", "Starting hook salt must fit uint256");
134
+ const checkCancelled = () => {
135
+ if (signal?.aborted)
136
+ throw Object.assign(new Error("Pool-bound hook salt mining cancelled"), { name: "AbortError" });
137
+ };
138
+ let attempts = 0n;
139
+ checkCancelled();
140
+ const initialSalt = toHex(candidate, { size: 32 });
141
+ onProgress?.({ attempts, salt: initialSalt, predictedHook: predictPoolBoundHookAddress({ deployer: options.deployer, initCodeHash: options.initCodeHash, salt: initialSalt }) });
142
+ for (;;) {
143
+ checkCancelled();
144
+ await new Promise((resolve) => globalThis.setTimeout(resolve, 0));
145
+ checkCancelled();
146
+ const deadline = Date.now() + 8;
147
+ let last;
148
+ for (let batch = 0; batch < 256 && (batch === 0 || Date.now() < deadline); batch += 1) {
149
+ checkCancelled();
150
+ if (candidate >= 1n << 256n)
151
+ throw new LifecyclePlanningError("HOOK_SALT_EXHAUSTED", "No valid hook address remains in the uint256 salt range");
152
+ const salt = toHex(candidate, { size: 32 });
153
+ const predictedHook = predictPoolBoundHookAddress({ deployer: options.deployer, initCodeHash: options.initCodeHash, salt });
154
+ attempts += 1n;
155
+ last = { attempts, salt, predictedHook };
156
+ if (hasLifecycleV4HookPermissions(predictedHook)) {
157
+ onProgress?.(last);
158
+ checkCancelled();
159
+ return { salt, predictedHook };
160
+ }
161
+ candidate += 1n;
162
+ }
163
+ if (last !== undefined)
164
+ onProgress?.(last);
165
+ }
166
+ }
167
+ export const abyssLifecyclePositionComponents = [
168
+ { name: "tickLower", type: "int24" }, { name: "tickUpper", type: "int24" },
169
+ { name: "liquidity", type: "uint128" }, { name: "tokenAmountMaximum", type: "uint256" },
170
+ ];
171
+ export const abyssLifecycleMarketComponents = [
172
+ { name: "profile", type: "uint8" }, { name: "fee", type: "uint24" }, { name: "oracleConfigId", type: "bytes32" },
173
+ { name: "openingSqrtPriceX96", type: "uint160" },
174
+ { name: "positions", type: "tuple[]", components: abyssLifecyclePositionComponents },
175
+ ];
176
+ export function encodeAbyssLifecycleMarketConfig(config) {
177
+ if (!Number.isInteger(config.profile) || config.profile < 0 || config.profile > 3)
178
+ throw new Error("Unsupported Abyss lifecycle pool profile");
179
+ return encodeAbiParameters([{ type: "tuple", components: abyssLifecycleMarketComponents }], [config]);
180
+ }
181
+ export function decodeAbyssLifecycleMarketConfig(encoded) {
182
+ return decodeAbiParameters([{ type: "tuple", components: abyssLifecycleMarketComponents }], encoded)[0];
183
+ }
184
+ //# sourceMappingURL=markets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markets.js","sourceRoot":"","sources":["../../src/lifecycle/markets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type LaunchPlanV1 } from "./schema.js";
2
+ import { type BuildNextTransactionOptions, type LifecyclePoolBoundHookDeployment, type LifecycleRpcClient, type LifecycleSimulation, type LifecycleTransaction, type PlannedLaunch, type PlanLaunchOptions, type PoolBoundLifecyclePreparationProgress, type SimulateLaunchPlanOptions } from "./types.js";
3
+ /** Mines only certified bound markets, then re-reads the exact final economics and derived identities. */
4
+ export declare function preparePoolBoundLifecyclePlan(options: {
5
+ client: LifecycleRpcClient;
6
+ plan: LaunchPlanV1;
7
+ signal?: AbortSignal;
8
+ onProgress?: (progress: PoolBoundLifecyclePreparationProgress) => void;
9
+ }): Promise<{
10
+ plan: LaunchPlanV1;
11
+ deployments: readonly LifecyclePoolBoundHookDeployment[];
12
+ }>;
13
+ /** Exact economic commitment with explicit execution mode and current-state admission. No broadcasts. */
14
+ export declare function planLaunch(options: PlanLaunchOptions): Promise<PlannedLaunch>;
15
+ /** Re-reads canonical state, revalidates all prerequisites, and proves the remaining sequence afresh. */
16
+ export declare function buildNextTransaction(options: BuildNextTransactionOptions): Promise<LifecycleTransaction | undefined>;
17
+ /** Re-simulates only canonical unfinished work with the same submitted receipt
18
+ * evidence and confirmation depth as build-next, never silently dropping context. */
19
+ export declare function simulateLaunchPlan(options: SimulateLaunchPlanOptions): Promise<LifecycleSimulation>;
20
+ //# sourceMappingURL=planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/lifecycle/planner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyX,KAAK,YAAY,EAAyB,MAAM,aAAa,CAAC;AAK9b,OAAO,EAA0B,KAAK,2BAA2B,EAAwF,KAAK,gCAAgC,EAAyB,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,qCAAqC,EAAE,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC;AA8Nhb,0GAA0G;AAC1G,wBAAsB,6BAA6B,CAAC,OAAO,EAAE;IAC3D,MAAM,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,qCAAqC,KAAK,IAAI,CAAC;CACxE,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,SAAS,gCAAgC,EAAE,CAAA;CAAE,CAAC,CAiD5F;AAED,yGAAyG;AACzG,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CA+DnF;AAED,yGAAyG;AACzG,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CA2B1H;AAED;qFACqF;AACrF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAUzG"}