@black-market/sdk 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +4 -3
  2. package/dist/lifecycle/authors.js +2 -2
  3. package/dist/lifecycle/authors.js.map +1 -1
  4. package/dist/lifecycle/gas-profile.d.ts +35 -0
  5. package/dist/lifecycle/gas-profile.d.ts.map +1 -0
  6. package/dist/lifecycle/gas-profile.js +183 -0
  7. package/dist/lifecycle/gas-profile.js.map +1 -0
  8. package/dist/lifecycle/index.d.ts +3 -1
  9. package/dist/lifecycle/index.d.ts.map +1 -1
  10. package/dist/lifecycle/index.js +3 -1
  11. package/dist/lifecycle/index.js.map +1 -1
  12. package/dist/lifecycle/lens.d.ts +1 -1
  13. package/dist/lifecycle/lens.d.ts.map +1 -1
  14. package/dist/lifecycle/lens.js +1 -1
  15. package/dist/lifecycle/lens.js.map +1 -1
  16. package/dist/lifecycle/opening-buys.d.ts +13 -0
  17. package/dist/lifecycle/opening-buys.d.ts.map +1 -0
  18. package/dist/lifecycle/opening-buys.js +171 -0
  19. package/dist/lifecycle/opening-buys.js.map +1 -0
  20. package/dist/lifecycle/planner.d.ts +2 -2
  21. package/dist/lifecycle/planner.d.ts.map +1 -1
  22. package/dist/lifecycle/planner.js +178 -163
  23. package/dist/lifecycle/planner.js.map +1 -1
  24. package/dist/lifecycle/presets.d.ts +6 -1
  25. package/dist/lifecycle/presets.d.ts.map +1 -1
  26. package/dist/lifecycle/presets.js +7 -0
  27. package/dist/lifecycle/presets.js.map +1 -1
  28. package/dist/lifecycle/progress.d.ts +1 -1
  29. package/dist/lifecycle/progress.d.ts.map +1 -1
  30. package/dist/lifecycle/progress.js +21 -20
  31. package/dist/lifecycle/progress.js.map +1 -1
  32. package/dist/lifecycle/rpc.d.ts +24 -19
  33. package/dist/lifecycle/rpc.d.ts.map +1 -1
  34. package/dist/lifecycle/rpc.js +58 -50
  35. package/dist/lifecycle/rpc.js.map +1 -1
  36. package/dist/lifecycle/simulation.d.ts +3 -4
  37. package/dist/lifecycle/simulation.d.ts.map +1 -1
  38. package/dist/lifecycle/simulation.js +98 -247
  39. package/dist/lifecycle/simulation.js.map +1 -1
  40. package/dist/lifecycle/snapshot.d.ts.map +1 -1
  41. package/dist/lifecycle/snapshot.js +1 -2
  42. package/dist/lifecycle/snapshot.js.map +1 -1
  43. package/dist/lifecycle/transactions.d.ts +19 -3
  44. package/dist/lifecycle/transactions.d.ts.map +1 -1
  45. package/dist/lifecycle/transactions.js +25 -20
  46. package/dist/lifecycle/transactions.js.map +1 -1
  47. package/dist/lifecycle/types.d.ts +53 -45
  48. package/dist/lifecycle/types.d.ts.map +1 -1
  49. package/dist/lifecycle/types.js.map +1 -1
  50. package/dist/lifecycle/ufg.d.ts.map +1 -1
  51. package/dist/lifecycle/ufg.js +3 -7
  52. package/dist/lifecycle/ufg.js.map +1 -1
  53. package/docs/launch-lifecycle.md +71 -82
  54. package/docs/lifecycle-gas-profiles.md +90 -0
  55. package/docs/reference.md +53 -51
  56. package/examples/README.md +13 -10
  57. package/examples/launch-example.ts +35 -25
  58. package/examples/launch-lifecycle-smoke.ts +5 -3
  59. package/package.json +1 -1
  60. package/src/lifecycle/authors.ts +2 -2
  61. package/src/lifecycle/gas-profile.ts +175 -0
  62. package/src/lifecycle/index.ts +3 -1
  63. package/src/lifecycle/lens.ts +1 -1
  64. package/src/lifecycle/opening-buys.ts +157 -0
  65. package/src/lifecycle/planner.ts +164 -151
  66. package/src/lifecycle/presets.ts +12 -1
  67. package/src/lifecycle/progress.ts +19 -20
  68. package/src/lifecycle/rpc.ts +56 -44
  69. package/src/lifecycle/simulation.ts +85 -231
  70. package/src/lifecycle/snapshot.ts +1 -2
  71. package/src/lifecycle/transactions.ts +33 -21
  72. package/src/lifecycle/types.ts +52 -42
  73. package/src/lifecycle/ufg.ts +3 -7
@@ -0,0 +1,171 @@
1
+ import { ABYSS_FEE_TIERS } from "../abyss.js";
2
+ import { getSqrtRatioAtTick, getTickAtSqrtRatio } from "../launch.js";
3
+ import { decodeAbyssLifecycleMarketConfig, decodePoolBoundV4LifecycleMarketConfig } from "./markets.js";
4
+ import { getKnownLifecycleProfile, KnownLifecycleProfile } from "./presets.js";
5
+ import { LifecyclePlanningError } from "./types.js";
6
+ // Independent integer model of the reviewed openings. Mathematical rounding and
7
+ // uint256 overflow branches match Uniswap v4 SqrtPriceMath/SwapMath (MIT) and
8
+ // the corresponding Abyss libraries. Bitmap word boundaries cannot be skipped:
9
+ // each step rounds input/fees up and output down, in the pool's favor.
10
+ const Q96 = 1n << 96n;
11
+ const PIPS = 1000000n;
12
+ const MAX_UINT256 = (1n << 256n) - 1n;
13
+ const MIN_PRICE = 4295128739n;
14
+ const MAX_PRICE = 1461446703485210103287273052203988822378723970342n;
15
+ const ceil = (numerator, denominator) => (numerator + denominator - 1n) / denominator;
16
+ /** Only the exact release-owned schemas/hooks have profiled opening behavior. */
17
+ export function hasProfiledOpeningMath(plan) {
18
+ return plan.markets.every((market) => {
19
+ const preset = getKnownLifecycleProfile({ chainId: plan.chainId, orchestrator: plan.orchestrator, profileId: market.profileId });
20
+ return preset?.supported === true && preset.profile.topology.configVersion === market.configVersion &&
21
+ preset.profile.registration.adapterId.toLowerCase() === market.adapterId.toLowerCase();
22
+ });
23
+ }
24
+ function openingState(plan, marketIndex) {
25
+ const market = plan.markets[marketIndex];
26
+ if (market === undefined)
27
+ throw new LifecyclePlanningError("INVALID_BUY", "Opening buy market index is outside the plan");
28
+ const preset = getKnownLifecycleProfile({ chainId: plan.chainId, orchestrator: plan.orchestrator, profileId: market.profileId });
29
+ if (preset?.supported !== true || preset.profile.topology.configVersion !== market.configVersion ||
30
+ preset.profile.registration.adapterId.toLowerCase() !== market.adapterId.toLowerCase())
31
+ throw new LifecyclePlanningError("OPENING_BUY_NOT_PROFILED", "Opening buy math requires the exact release-owned profile and schema");
32
+ let price, spacing, lpFee, hookFee = 0n;
33
+ let positions;
34
+ if (market.configVersion === 1) {
35
+ const config = decodeAbyssLifecycleMarketConfig(market.config);
36
+ const tier = ABYSS_FEE_TIERS.find((candidate) => candidate.feePips === config.fee);
37
+ if (tier === undefined || preset.key !== `abyss-${config.profile}`)
38
+ throw new LifecyclePlanningError("INVALID_MARKET", "Abyss opening must use its committed profile and canonical fee tier");
39
+ price = config.openingSqrtPriceX96;
40
+ spacing = tier.tickSpacing;
41
+ lpFee = BigInt(config.fee);
42
+ positions = config.positions;
43
+ }
44
+ else {
45
+ // All current release-owned V4 offerings use config6. Dynamic first buys
46
+ // share the opening block's minimum fee; HMM strategy work starts onOpened,
47
+ // after the ordered initial buys, never during this unopened curve.
48
+ const config = decodePoolBoundV4LifecycleMarketConfig(market.config, 6);
49
+ if (config.profileId.toLowerCase() !== market.profileId.toLowerCase())
50
+ throw new LifecyclePlanningError("INVALID_MARKET", "V4 opening config differs from the selected profile");
51
+ price = config.sqrtPriceX96;
52
+ spacing = config.tickSpacing;
53
+ lpFee = BigInt(config.lpFeePips);
54
+ positions = config.positions;
55
+ const dynamic = preset.key === KnownLifecycleProfile.V4DynamicFeePool || preset.key === KnownLifecycleProfile.V4HmmDynamicPool || preset.key === KnownLifecycleProfile.V4UfgDynamicPool;
56
+ hookFee = BigInt(dynamic ? config.minimumHookFeePips : config.hookFeePips);
57
+ }
58
+ const tick = getTickAtSqrtRatio(price), liquidityNet = new Map();
59
+ let liquidity = 0n;
60
+ for (const position of positions) {
61
+ liquidityNet.set(position.tickLower, (liquidityNet.get(position.tickLower) ?? 0n) + position.liquidity);
62
+ liquidityNet.set(position.tickUpper, (liquidityNet.get(position.tickUpper) ?? 0n) - position.liquidity);
63
+ if (position.tickLower <= tick && tick < position.tickUpper)
64
+ liquidity += position.liquidity;
65
+ }
66
+ return { price, tick, liquidity, spacing, lpFee, hookFee, liquidityNet, ticks: [...liquidityNet.keys()].sort((a, b) => a - b) };
67
+ }
68
+ function lowerBound(ticks, value) {
69
+ let left = 0, right = ticks.length;
70
+ while (left < right) {
71
+ const middle = (left + right) >>> 1;
72
+ if (ticks[middle] < value)
73
+ left = middle + 1;
74
+ else
75
+ right = middle;
76
+ }
77
+ return left;
78
+ }
79
+ function nextTick(state, zeroForOne) {
80
+ const compressed = Math.floor(state.tick / state.spacing) + (zeroForOne ? 0 : 1);
81
+ const first = Math.floor(compressed / 256) * 256, last = first + 255;
82
+ const index = lowerBound(state.ticks, (compressed + (zeroForOne ? 1 : 0)) * state.spacing) - (zeroForOne ? 1 : 0);
83
+ const initialized = state.ticks[index];
84
+ const selected = initialized !== undefined && initialized >= first * state.spacing && initialized <= last * state.spacing
85
+ ? initialized : (zeroForOne ? first : last) * state.spacing;
86
+ return Math.max(-887272, Math.min(887272, selected));
87
+ }
88
+ function amount0(a, b, liquidity, roundUp) {
89
+ if (a > b)
90
+ [a, b] = [b, a];
91
+ const numerator = liquidity * Q96 * (b - a), denominator = a * b;
92
+ return roundUp ? ceil(numerator, denominator) : numerator / denominator;
93
+ }
94
+ function amount1(a, b, liquidity, roundUp) {
95
+ const numerator = liquidity * (a > b ? a - b : b - a);
96
+ return roundUp ? ceil(numerator, Q96) : numerator / Q96;
97
+ }
98
+ function inputPrice(price, liquidity, input, zeroForOne) {
99
+ if (input === 0n)
100
+ return price;
101
+ if (!zeroForOne)
102
+ return price + input * Q96 / liquidity;
103
+ const numerator = liquidity * Q96, product = input * price, denominator = numerator + product;
104
+ return product <= MAX_UINT256 && denominator <= MAX_UINT256
105
+ ? ceil(numerator * price, denominator)
106
+ : ceil(numerator, numerator / price + input);
107
+ }
108
+ function swap(state, amount, limit, zeroForOne) {
109
+ let remaining = amount, tokenOut = 0n;
110
+ while (remaining > 0n && state.price !== limit) {
111
+ const tick = nextTick(state, zeroForOne), boundary = getSqrtRatioAtTick(tick), before = state.price;
112
+ const target = zeroForOne ? boundary < limit ? limit : boundary : boundary > limit ? limit : boundary;
113
+ const available = remaining * (PIPS - state.lpFee) / PIPS;
114
+ const required = zeroForOne ? amount0(target, before, state.liquidity, true) : amount1(before, target, state.liquidity, true);
115
+ let next, spent;
116
+ if (available >= required) {
117
+ next = target;
118
+ spent = required + (state.lpFee === PIPS ? 0n : ceil(required * state.lpFee, PIPS - state.lpFee));
119
+ }
120
+ else {
121
+ next = inputPrice(before, state.liquidity, available, zeroForOne);
122
+ spent = remaining;
123
+ }
124
+ tokenOut += zeroForOne ? amount1(next, before, state.liquidity, false) : amount0(before, next, state.liquidity, false);
125
+ remaining -= spent;
126
+ state.price = next;
127
+ if (next === boundary) {
128
+ const net = state.liquidityNet.get(tick);
129
+ if (net !== undefined)
130
+ state.liquidity += zeroForOne ? -net : net;
131
+ state.tick = zeroForOne ? tick - 1 : tick;
132
+ }
133
+ else if (next !== before)
134
+ state.tick = getTickAtSqrtRatio(next);
135
+ }
136
+ return { tokenOut, quoteSpent: amount - remaining };
137
+ }
138
+ /** Exact integer opening-curve outputs for ordered, unopened release templates.
139
+ * This is not a live-pool quote or execution proof. Funding, token callbacks,
140
+ * current registry admission and wallet execution remain separate authorities. */
141
+ export function computeLifecycleOpeningBuys(options) {
142
+ const { plan, predictedToken } = options, states = new Map();
143
+ const quotes = [];
144
+ for (const [buyIndex, buy] of plan.buys.entries()) {
145
+ if (!Number.isSafeInteger(buy.marketIndex) || buy.marketIndex < 0 || typeof buy.quoteAmountIn !== "bigint" || buy.quoteAmountIn <= 0n || buy.quoteAmountIn > MAX_UINT256 >> 1n)
146
+ throw new LifecyclePlanningError("INVALID_BUY", "Opening buy requires a valid market and positive int256 input");
147
+ let state = states.get(buy.marketIndex);
148
+ if (state === undefined) {
149
+ state = openingState(plan, buy.marketIndex);
150
+ states.set(buy.marketIndex, state);
151
+ }
152
+ const market = plan.markets[buy.marketIndex], zeroForOne = BigInt(market.quoteAsset) < BigInt(predictedToken);
153
+ if (typeof buy.sqrtPriceLimitX96 !== "bigint")
154
+ throw new LifecyclePlanningError("INVALID_BUY_PRICE_LIMIT", "Opening buy price limit must be an exact bigint");
155
+ // Only the V4 lifecycle adapter resolves this sentinel. Abyss calls its
156
+ // pool directly, so zero remains invalid there. Never rewrite calldata.
157
+ const limit = market.configVersion !== 1 && buy.sqrtPriceLimitX96 === 0n
158
+ ? zeroForOne ? MIN_PRICE + 1n : MAX_PRICE - 1n : buy.sqrtPriceLimitX96;
159
+ if (market.quoteAsset.toLowerCase() === predictedToken.toLowerCase() || limit <= MIN_PRICE || limit >= MAX_PRICE ||
160
+ (zeroForOne ? limit >= state.price : limit <= state.price))
161
+ throw new LifecyclePlanningError("INVALID_BUY_PRICE_LIMIT", "Opening buy price limit must be strictly beyond the current curve price in the input direction");
162
+ const hookCharge = buy.quoteAmountIn * state.hookFee / PIPS;
163
+ const adjusted = buy.quoteAmountIn - hookCharge;
164
+ const result = swap(state, adjusted, limit, zeroForOne);
165
+ if (hookCharge > 0n && result.quoteSpent !== adjusted)
166
+ throw new LifecyclePlanningError("INCOMPLETE_BUY_FILL", "A specified-input hook fee requires the complete adjusted input to fill");
167
+ quotes.push({ buyIndex, marketIndex: buy.marketIndex, quoteAmountIn: buy.quoteAmountIn, quoteSpent: result.quoteSpent + hookCharge, tokenOut: result.tokenOut, sqrtPriceAfterX96: state.price });
168
+ }
169
+ return quotes;
170
+ }
171
+ //# sourceMappingURL=opening-buys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opening-buys.js","sourceRoot":"","sources":["../../src/lifecycle/opening-buys.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@ import { type BuildNextTransactionOptions, type LifecycleSimulation, type Lifecy
4
4
  export declare function prepareAndPlanLifecycleLaunch(options: PrepareAndPlanLifecycleLaunchOptions): Promise<PlannedLaunch>;
5
5
  /** Independently fresh current-state admission of an already finalized commitment. No broadcasts. */
6
6
  export declare function planLaunch(options: PlanLaunchOptions): Promise<PlannedLaunch>;
7
- /** Recovery observes real canonical receipts/nonces, then proves only unfinished
8
- * execution; known construction metadata is not recertified through getter mirrors. */
7
+ /** Recovery observes real canonical receipts, then evaluates only unfinished
8
+ * execution; the wallet owns its nonce and assignment at send time. */
9
9
  export declare function buildNextTransaction(options: BuildNextTransactionOptions): Promise<LifecycleTransaction | undefined>;
10
10
  /** Re-simulates only canonical unfinished work with the same submitted receipt
11
11
  * evidence and confirmation depth as build-next, never silently dropping context. */
@@ -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;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"}
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;AAoSld;wFACwF;AACxF,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,oCAAoC,GAAG,OAAO,CAAC,aAAa,CAAC,CAuEzH;AAED,qGAAqG;AACrG,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAQnF;AA6HD;uEACuE;AACvE,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CA2F1H;AAED;qFACqF;AACrF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAWzG"}