@black-market/sdk 0.1.0 → 0.4.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 (88) hide show
  1. package/README.md +92 -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 +6391 -0
  27. package/dist/lifecycle/abi.d.ts.map +1 -0
  28. package/dist/lifecycle/abi.js +335 -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 +186 -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 +481 -0
  49. package/dist/lifecycle/planner.js.map +1 -0
  50. package/dist/lifecycle/progress.d.ts +43 -0
  51. package/dist/lifecycle/progress.d.ts.map +1 -0
  52. package/dist/lifecycle/progress.js +449 -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 +1068 -0
  59. package/dist/lifecycle/schema.d.ts.map +1 -0
  60. package/dist/lifecycle/schema.js +335 -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 +243 -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 +343 -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 +205 -0
  83. package/src/lifecycle/planner.ts +396 -0
  84. package/src/lifecycle/progress.ts +378 -0
  85. package/src/lifecycle/rpc.ts +88 -0
  86. package/src/lifecycle/schema.ts +387 -0
  87. package/src/lifecycle/simulation.ts +329 -0
  88. package/src/lifecycle/types.ts +132 -0
package/dist/launch.js CHANGED
@@ -1,139 +1,11 @@
1
- import { encodeFunctionData, isAddress, keccak256, stringToHex, zeroAddress, } from "viem";
2
- import { ABYSS_FEE_TIERS, AbyssPoolProfile, atomicLaunchFactoryAbi, TokenKind } from "./abyss.js";
1
+ import { ABYSS_FEE_TIERS } from "./abyss.js";
3
2
  import { AUCTION_SUPPLY } from "./auction.js";
4
- export const INITIAL_TEMPLATE_VERSION = 1;
5
- export const STANDARD_TEMPLATE_ID = keccak256(stringToHex("black-market.standard"));
6
- export const QUOTE_STAKING_TEMPLATE_ID = keccak256(stringToHex("black-market.quote-staking"));
7
- export const QUOTE_DIVIDENDS_TEMPLATE_ID = keccak256(stringToHex("black-market.quote-dividends"));
8
- export const DUAL_STAKING_TEMPLATE_ID = keccak256(stringToHex("black-market.dual-staking"));
9
- export const DUAL_DIVIDENDS_TEMPLATE_ID = keccak256(stringToHex("black-market.dual-dividends"));
10
- export const FEE_BURN_TEMPLATE_ID = keccak256(stringToHex("black-market.fee-burn"));
11
- export const STANDARD_TEMPLATE_VERSION = INITIAL_TEMPLATE_VERSION;
12
3
  export const LAUNCH_REWARD_DURATION = 7 * 24 * 60 * 60;
13
- /**
14
- * Canonical registered volatile/P3 oracle configuration for Atomic launches.
15
- * Deployment evidence records maxAbsTickMove=17 and cardinality=4096 for this ID.
16
- */
17
- export const ATOMIC_LAUNCH_ORACLE_CONFIG_ID = "0xc0e9bed88d70a13fd3ab31451fefdd073b7266e838aee0ad1c236c8c9eff855d";
18
- /** Existing Abyss execution policy: Atomic launch requests expire after 20 minutes. */
19
- export const ATOMIC_LAUNCH_DEADLINE_SECONDS = 20 * 60;
20
- /** Existing Abyss execution policy: initial Atomic buys tolerate 50 basis points of price movement. */
21
- export const ATOMIC_LAUNCH_BUY_SLIPPAGE_BPS = 50;
22
- /**
23
- * Atomic lifecycle recipes and tests use a $5,000 initial fully diluted market cap.
24
- * The form converts this editable whole-USD default to an X18 value before recipe derivation.
25
- */
26
- export const DEFAULT_ATOMIC_LAUNCH_TARGET_MARKET_CAP_USD = 5_000;
27
- export var LaunchRewardMode;
28
- (function (LaunchRewardMode) {
29
- LaunchRewardMode[LaunchRewardMode["None"] = 0] = "None";
30
- LaunchRewardMode[LaunchRewardMode["Staking"] = 1] = "Staking";
31
- LaunchRewardMode[LaunchRewardMode["Dividends"] = 2] = "Dividends";
32
- })(LaunchRewardMode || (LaunchRewardMode = {}));
33
- export var LaunchFeeAssetMode;
34
- (function (LaunchFeeAssetMode) {
35
- LaunchFeeAssetMode[LaunchFeeAssetMode["Profile"] = 0] = "Profile";
36
- LaunchFeeAssetMode[LaunchFeeAssetMode["PairedOnly"] = 1] = "PairedOnly";
37
- LaunchFeeAssetMode[LaunchFeeAssetMode["Both"] = 2] = "Both";
38
- LaunchFeeAssetMode[LaunchFeeAssetMode["LaunchedOnly"] = 3] = "LaunchedOnly";
39
- })(LaunchFeeAssetMode || (LaunchFeeAssetMode = {}));
40
- export var LaunchFeeDestination;
41
- (function (LaunchFeeDestination) {
42
- LaunchFeeDestination[LaunchFeeDestination["Owner"] = 1] = "Owner";
43
- LaunchFeeDestination[LaunchFeeDestination["Rewards"] = 2] = "Rewards";
44
- LaunchFeeDestination[LaunchFeeDestination["Burn"] = 4] = "Burn";
45
- })(LaunchFeeDestination || (LaunchFeeDestination = {}));
46
- const OWNER = LaunchFeeDestination.Owner;
47
- const REWARDS = LaunchFeeDestination.Rewards;
48
- const BURN = LaunchFeeDestination.Burn;
49
- const BURNABLE_ONLY = [TokenKind.Burnable];
50
- const DIVIDEND_ONLY = [TokenKind.HolderDividend];
51
- export const LAUNCH_TEMPLATES = [
52
- {
53
- id: "standard",
54
- templateId: STANDARD_TEMPLATE_ID,
55
- version: INITIAL_TEMPLATE_VERSION,
56
- label: "Standard",
57
- tokenKinds: BURNABLE_ONLY,
58
- poolProfiles: [AbyssPoolProfile.StandardOracle, AbyssPoolProfile.QuoteOracle],
59
- launchedTokenIsQuote: false,
60
- rewardMode: LaunchRewardMode.None,
61
- rewardDuration: 0,
62
- feeAssetMode: LaunchFeeAssetMode.Profile,
63
- launchedTokenDestinations: OWNER,
64
- pairedTokenDestinations: OWNER,
65
- },
66
- {
67
- id: "quote-staking",
68
- templateId: QUOTE_STAKING_TEMPLATE_ID,
69
- version: INITIAL_TEMPLATE_VERSION,
70
- label: "Quote Staking",
71
- tokenKinds: BURNABLE_ONLY,
72
- poolProfiles: [AbyssPoolProfile.QuoteOracle],
73
- launchedTokenIsQuote: false,
74
- rewardMode: LaunchRewardMode.Staking,
75
- rewardDuration: LAUNCH_REWARD_DURATION,
76
- feeAssetMode: LaunchFeeAssetMode.PairedOnly,
77
- launchedTokenDestinations: 0,
78
- pairedTokenDestinations: OWNER | REWARDS,
79
- },
80
- {
81
- id: "quote-dividends",
82
- templateId: QUOTE_DIVIDENDS_TEMPLATE_ID,
83
- version: INITIAL_TEMPLATE_VERSION,
84
- label: "Quote Dividends",
85
- tokenKinds: DIVIDEND_ONLY,
86
- poolProfiles: [AbyssPoolProfile.QuoteOracle],
87
- launchedTokenIsQuote: false,
88
- rewardMode: LaunchRewardMode.Dividends,
89
- rewardDuration: LAUNCH_REWARD_DURATION,
90
- feeAssetMode: LaunchFeeAssetMode.PairedOnly,
91
- launchedTokenDestinations: 0,
92
- pairedTokenDestinations: OWNER | REWARDS,
93
- },
94
- {
95
- id: "dual-staking",
96
- templateId: DUAL_STAKING_TEMPLATE_ID,
97
- version: INITIAL_TEMPLATE_VERSION,
98
- label: "Dual Staking",
99
- tokenKinds: BURNABLE_ONLY,
100
- poolProfiles: [AbyssPoolProfile.StandardOracle],
101
- launchedTokenIsQuote: false,
102
- rewardMode: LaunchRewardMode.Staking,
103
- rewardDuration: LAUNCH_REWARD_DURATION,
104
- feeAssetMode: LaunchFeeAssetMode.Both,
105
- launchedTokenDestinations: OWNER | REWARDS | BURN,
106
- pairedTokenDestinations: OWNER | REWARDS,
107
- },
108
- {
109
- id: "dual-dividends",
110
- templateId: DUAL_DIVIDENDS_TEMPLATE_ID,
111
- version: INITIAL_TEMPLATE_VERSION,
112
- label: "Dual Dividends",
113
- tokenKinds: DIVIDEND_ONLY,
114
- poolProfiles: [AbyssPoolProfile.StandardOracle],
115
- launchedTokenIsQuote: false,
116
- rewardMode: LaunchRewardMode.Dividends,
117
- rewardDuration: LAUNCH_REWARD_DURATION,
118
- feeAssetMode: LaunchFeeAssetMode.Both,
119
- launchedTokenDestinations: OWNER | REWARDS | BURN,
120
- pairedTokenDestinations: OWNER | REWARDS,
121
- },
122
- {
123
- id: "fee-burn",
124
- templateId: FEE_BURN_TEMPLATE_ID,
125
- version: INITIAL_TEMPLATE_VERSION,
126
- label: "Fee Burn",
127
- tokenKinds: BURNABLE_ONLY,
128
- poolProfiles: [AbyssPoolProfile.QuoteOracle],
129
- launchedTokenIsQuote: true,
130
- rewardMode: LaunchRewardMode.None,
131
- rewardDuration: 0,
132
- feeAssetMode: LaunchFeeAssetMode.LaunchedOnly,
133
- launchedTokenDestinations: BURN,
134
- pairedTokenDestinations: 0,
135
- },
136
- ];
4
+ /** Canonical P3 oracle default; reviewed V4 markets may select any valid registered oracle within their cardinality bounds. */
5
+ export const LAUNCH_ORACLE_CONFIG_ID = "0xc0e9bed88d70a13fd3ab31451fefdd073b7266e838aee0ad1c236c8c9eff855d";
6
+ export const LAUNCH_DEADLINE_SECONDS = 20 * 60;
7
+ export const LAUNCH_BUY_SLIPPAGE_BPS = 50;
8
+ export const DEFAULT_LAUNCH_TARGET_MARKET_CAP_USD = 5_000;
137
9
  const Q32 = 1n << 32n;
138
10
  const Q96 = 1n << 96n;
139
11
  const MAX_UINT128 = (1n << 128n) - 1n;
@@ -146,8 +18,6 @@ const MIN_TICK = -887_272;
146
18
  const MAX_TICK = 887_272;
147
19
  const MIN_SQRT_RATIO = 4295128739n;
148
20
  const MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342n;
149
- const ZERO_BYTES32 = `0x${"00".repeat(32)}`;
150
- const BYTES32_HEX = /^0x[0-9a-fA-F]{64}$/;
151
21
  // Canonical Uniswap v3 TickMath multipliers, matching contracts/src/oracles/TickMathLib.sol.
152
22
  const TICK_MULTIPLIERS = [
153
23
  0xfffcb933bd6fad37aa2d162d1a594001n,
@@ -194,13 +64,6 @@ function assertTokenDecimals(value, name) {
194
64
  throw new Error(`${name} must be a uint8 integer`);
195
65
  }
196
66
  }
197
- function assertOracleConfigId(value) {
198
- if (typeof value !== "string" ||
199
- !BYTES32_HEX.test(value) ||
200
- value.toLowerCase() === ZERO_BYTES32) {
201
- throw new Error("pool.oracleConfigId must be a nonzero bytes32");
202
- }
203
- }
204
67
  function assertCanonicalSqrtPrice(value, name) {
205
68
  assertUint(value, MAX_UINT160, name);
206
69
  if (value < MIN_SQRT_RATIO || value >= MAX_SQRT_RATIO) {
@@ -256,7 +119,7 @@ function getTickAtSqrtRatio(sqrtPriceX96) {
256
119
  }
257
120
  return low;
258
121
  }
259
- // Deliberately retain Solidity's signed-remainder alignment semantics from AtomicLaunchFactory.
122
+ // Signed-remainder alignment matches the canonical Solidity range geometry.
260
123
  function alignDown(tick, tickSpacing) {
261
124
  const remainder = tick % tickSpacing;
262
125
  return remainder === 0 ? tick : tick - remainder;
@@ -275,7 +138,7 @@ function launchBand(launchTick, tickSpacing, launchedTokenIsQuote) {
275
138
  if (tickLower < MIN_TICK ||
276
139
  tickUpper > MAX_TICK ||
277
140
  tickLower >= tickUpper) {
278
- throw new Error("launchTick cannot form a valid Atomic launch band");
141
+ throw new Error("launchTick cannot form a valid one-sided launch band");
279
142
  }
280
143
  return { tickLower, tickUpper };
281
144
  }
@@ -286,32 +149,40 @@ function liquidityForAmount1(amount1, sqrtLowerX96, sqrtUpperX96) {
286
149
  return (amount1 * Q96) / (sqrtUpperX96 - sqrtLowerX96);
287
150
  }
288
151
  /**
289
- * Derives the one-sided Atomic launch position from a target fully diluted market cap.
152
+ * Derives one-sided launch geometry from explicit supply, budget and fully diluted market cap.
290
153
  * The raw price remains a rational bigint until the canonical Q64.96 square root conversion.
291
154
  */
292
- export function deriveAtomicLaunchPoolRecipe(input) {
155
+ export function deriveLaunchPoolRecipe(input) {
293
156
  assertTokenDecimals(input.pairedTokenDecimals, "pairedTokenDecimals");
294
157
  assertPositiveUint(input.pairedTokenUsdPriceX18, MAX_UINT256, "pairedTokenUsdPriceX18");
295
158
  assertPositiveUint(input.targetMarketCapUsdX18, MAX_UINT256, "targetMarketCapUsdX18");
296
159
  if (typeof input.launchedTokenIsQuote !== "boolean") {
297
160
  throw new Error("launchedTokenIsQuote must be a boolean");
298
161
  }
299
- const feeTier = getFeeTier(input.fee);
162
+ const supply = input.supply ?? AUCTION_SUPPLY;
163
+ const tokenBudget = input.tokenBudget ?? supply;
164
+ assertPositiveUint(supply, MAX_UINT256, "supply");
165
+ assertPositiveUint(tokenBudget, MAX_UINT256, "tokenBudget");
166
+ if (tokenBudget > supply)
167
+ throw new Error("tokenBudget cannot exceed supply");
168
+ const tickSpacing = input.tickSpacing ?? getFeeTier(input.fee).tickSpacing;
169
+ if (!Number.isInteger(tickSpacing) || tickSpacing < 1 || tickSpacing > 32767)
170
+ throw new Error("tickSpacing must be 1..32767");
300
171
  const pairedTokenUnit = 10n ** BigInt(input.pairedTokenDecimals);
301
- const [priceNumerator, priceDenominator] = input.launchedTokenIsQuote ? [input.targetMarketCapUsdX18 * pairedTokenUnit, input.pairedTokenUsdPriceX18 * AUCTION_SUPPLY] : [input.pairedTokenUsdPriceX18 * AUCTION_SUPPLY, input.targetMarketCapUsdX18 * pairedTokenUnit];
172
+ const [priceNumerator, priceDenominator] = input.launchedTokenIsQuote ? [input.targetMarketCapUsdX18 * pairedTokenUnit, input.pairedTokenUsdPriceX18 * supply] : [input.pairedTokenUsdPriceX18 * supply, input.targetMarketCapUsdX18 * pairedTokenUnit];
302
173
  const targetSqrtPriceX96 = integerSqrt((priceNumerator << 192n) / priceDenominator);
303
174
  const rawTick = getTickAtSqrtRatio(targetSqrtPriceX96);
304
175
  const launchTick = input.launchedTokenIsQuote
305
- ? Math.ceil(rawTick / feeTier.tickSpacing) * feeTier.tickSpacing
306
- : Math.floor(rawTick / feeTier.tickSpacing) * feeTier.tickSpacing;
176
+ ? Math.ceil(rawTick / tickSpacing) * tickSpacing
177
+ : Math.floor(rawTick / tickSpacing) * tickSpacing;
307
178
  assertInt24(launchTick, "launchTick");
308
- const { tickLower, tickUpper } = launchBand(launchTick, feeTier.tickSpacing, input.launchedTokenIsQuote);
179
+ const { tickLower, tickUpper } = launchBand(launchTick, tickSpacing, input.launchedTokenIsQuote);
309
180
  const sqrtLowerX96 = getSqrtRatioAtTick(tickLower);
310
181
  const sqrtUpperX96 = getSqrtRatioAtTick(tickUpper);
311
182
  const launchSqrtPriceX96 = input.launchedTokenIsQuote ? sqrtLowerX96 : sqrtUpperX96;
312
183
  const liquidity = input.launchedTokenIsQuote
313
- ? liquidityForAmount0(AUCTION_SUPPLY, sqrtLowerX96, sqrtUpperX96)
314
- : liquidityForAmount1(AUCTION_SUPPLY, sqrtLowerX96, sqrtUpperX96);
184
+ ? liquidityForAmount0(tokenBudget, sqrtLowerX96, sqrtUpperX96)
185
+ : liquidityForAmount1(tokenBudget, sqrtLowerX96, sqrtUpperX96);
315
186
  if (liquidity <= 0n || liquidity > MAX_UINT128) {
316
187
  throw new Error("Derived liquidity is outside the uint128 range");
317
188
  }
@@ -319,21 +190,24 @@ export function deriveAtomicLaunchPoolRecipe(input) {
319
190
  launchTick,
320
191
  launchSqrtPriceX96,
321
192
  liquidity,
322
- launchedTokenAmountMaximum: AUCTION_SUPPLY,
193
+ launchedTokenAmountMaximum: tokenBudget,
323
194
  pairedTokenAmountMaximum: 0n,
195
+ tickLower, tickUpper,
324
196
  };
325
197
  }
326
198
  /**
327
- * Pure estimate for the first exact-input buy against a fresh one-sided Atomic
199
+ * Pure estimate for the first exact-input buy against a fresh one-sided
328
200
  * launch position. No wallet balance, allowance, pool deployment, or RPC state.
329
201
  * Uses conservative input-fee rounding; execution simulation remains the final
330
202
  * authority before submission.
331
203
  */
332
- export function estimateAtomicLaunchInitialBuy(input) {
204
+ export function estimateLaunchInitialBuy(input) {
333
205
  assertCanonicalSqrtPrice(input.launchSqrtPriceX96, "launchSqrtPriceX96");
334
206
  assertPositiveUint(input.liquidity, MAX_UINT128, "liquidity");
335
207
  assertUint(input.pairedTokenAmountIn, MAX_UINT256, "pairedTokenAmountIn");
336
- const fee = BigInt(getFeeTier(input.fee).feePips);
208
+ if (!Number.isInteger(input.fee) || input.fee < 0 || input.fee >= 1000000)
209
+ throw new Error("fee must be pips below 1000000");
210
+ const fee = BigInt(input.fee);
337
211
  const amountAfterFee = (input.pairedTokenAmountIn * (1000000n - fee)) / 1000000n;
338
212
  if (amountAfterFee === 0n) {
339
213
  return {
@@ -377,14 +251,14 @@ function ceilSqrtRatio(numerator, denominator) {
377
251
  }
378
252
  /**
379
253
  * Produces the router's exclusive sqrt-price guard for the paired-token initial buy.
380
- * A paired input moves down for deployAbove and up for fee-burn/deployBelow.
254
+ * A paired input moves down when the launch token is currency1 and up when it is currency0.
381
255
  */
382
- export function deriveAtomicLaunchBuySqrtPriceLimitX96(input) {
256
+ export function deriveLaunchBuySqrtPriceLimitX96(input) {
383
257
  assertCanonicalSqrtPrice(input.launchSqrtPriceX96, "launchSqrtPriceX96");
384
258
  if (typeof input.launchedTokenIsQuote !== "boolean") {
385
259
  throw new Error("launchedTokenIsQuote must be a boolean");
386
260
  }
387
- const slippageBps = input.slippageBps ?? ATOMIC_LAUNCH_BUY_SLIPPAGE_BPS;
261
+ const slippageBps = input.slippageBps ?? LAUNCH_BUY_SLIPPAGE_BPS;
388
262
  if (!Number.isInteger(slippageBps) || slippageBps < 1 || slippageBps > 9_999) {
389
263
  throw new Error("slippageBps must be an integer from 1 through 9,999");
390
264
  }
@@ -397,115 +271,4 @@ export function deriveAtomicLaunchBuySqrtPriceLimitX96(input) {
397
271
  const limit = ceilSqrtRatio(squaredLaunchSqrt * (10000n - slippage), 10000n);
398
272
  return limit <= MIN_SQRT_RATIO ? MIN_SQRT_RATIO + 1n : limit;
399
273
  }
400
- export function getLaunchTemplate(id) {
401
- const template = LAUNCH_TEMPLATES.find((candidate) => candidate.id === id);
402
- if (!template)
403
- throw new Error(`Unknown launch template: ${id}`);
404
- return template;
405
- }
406
- export function getLaunchTemplateByHash(templateId) {
407
- const template = LAUNCH_TEMPLATES.find((candidate) => candidate.templateId.toLowerCase() === templateId.toLowerCase());
408
- if (!template)
409
- throw new Error(`Unknown launch template id: ${templateId}`);
410
- return template;
411
- }
412
- function dispositionTotal(disposition) {
413
- return disposition.ownerBps + disposition.rewardsBps + disposition.burnBps;
414
- }
415
- function dispositionDestinations(disposition) {
416
- return ((disposition.ownerBps === 0 ? 0 : OWNER) |
417
- (disposition.rewardsBps === 0 ? 0 : REWARDS) |
418
- (disposition.burnBps === 0 ? 0 : BURN));
419
- }
420
- function validateDisposition(name, disposition, active, allowedDestinations) {
421
- if (!Number.isInteger(disposition.ownerBps) ||
422
- !Number.isInteger(disposition.rewardsBps) ||
423
- !Number.isInteger(disposition.burnBps) ||
424
- disposition.ownerBps < 0 ||
425
- disposition.rewardsBps < 0 ||
426
- disposition.burnBps < 0) {
427
- throw new Error(`${name} must contain nonnegative integer basis points`);
428
- }
429
- const total = dispositionTotal(disposition);
430
- if (active ? total !== 10_000 : total !== 0) {
431
- throw new Error(`${name} must total ${active ? "10,000" : "zero"} basis points`);
432
- }
433
- if (dispositionDestinations(disposition) & ~allowedDestinations) {
434
- throw new Error(`${name} uses a destination not allowed by the template`);
435
- }
436
- }
437
- export function buildAtomicLaunchCalldata(request, nativeBuyAmount = 0n) {
438
- if (!isAddress(request.creator) || request.creator.toLowerCase() === zeroAddress) {
439
- throw new Error("creator must be a nonzero address");
440
- }
441
- const template = getLaunchTemplateByHash(request.templateId);
442
- if (request.templateVersion !== template.version)
443
- throw new Error("Unsupported template version");
444
- if (!template.tokenKinds.includes(request.token.kind)) {
445
- throw new Error("Token kind is not supported by the template");
446
- }
447
- if (!template.poolProfiles.includes(request.pool.profile)) {
448
- throw new Error("Pool profile is not supported by the template");
449
- }
450
- if (!isAddress(request.pool.pairedToken) || request.pool.pairedToken.toLowerCase() === zeroAddress) {
451
- throw new Error("pairedToken must be a nonzero address");
452
- }
453
- if (request.pool.launchedTokenIsQuote !== template.launchedTokenIsQuote) {
454
- throw new Error("Pool orientation does not match the template");
455
- }
456
- const feeTier = getFeeTier(request.pool.fee);
457
- assertOracleConfigId(request.pool.oracleConfigId);
458
- assertInt24(request.pool.launchTick, "pool.launchTick");
459
- assertTokenDecimals(request.token.decimals, "token.decimals");
460
- assertPositiveUint(request.token.supply, MAX_UINT256, "token.supply");
461
- assertPositiveUint(request.pool.liquidity, MAX_UINT128, "pool.liquidity");
462
- assertPositiveUint(request.pool.launchedTokenAmountMaximum, MAX_UINT256, "pool.launchedTokenAmountMaximum");
463
- assertUint(request.pool.pairedTokenAmountMaximum, MAX_UINT256, "pool.pairedTokenAmountMaximum");
464
- if (request.pool.pairedTokenAmountMaximum !== 0n) {
465
- throw new Error("pool.pairedTokenAmountMaximum must be zero for a single-sided Atomic launch");
466
- }
467
- if (request.pool.launchedTokenAmountMaximum > request.token.supply) {
468
- throw new Error("pool.launchedTokenAmountMaximum cannot exceed token.supply");
469
- }
470
- assertPositiveUint(request.deadline, MAX_UINT256, "deadline");
471
- assertUint(request.initialBuy.pairedTokenAmountIn, MAX_UINT256, "initialBuy.pairedTokenAmountIn");
472
- assertUint(nativeBuyAmount, MAX_UINT256, "nativeBuyAmount");
473
- assertUint(request.initialBuy.launchedTokenAmountOutMinimum, MAX_UINT256, "initialBuy.launchedTokenAmountOutMinimum");
474
- assertUint(request.initialBuy.sqrtPriceLimitX96, MAX_UINT160, "initialBuy.sqrtPriceLimitX96");
475
- const effectiveBuyAmount = request.initialBuy.pairedTokenAmountIn + nativeBuyAmount;
476
- if (effectiveBuyAmount === 0n) {
477
- if (request.initialBuy.launchedTokenAmountOutMinimum !== 0n ||
478
- request.initialBuy.sqrtPriceLimitX96 !== 0n) {
479
- throw new Error("zero initial buy cannot set output or price limits");
480
- }
481
- }
482
- else {
483
- if (request.initialBuy.sqrtPriceLimitX96 === 0n) {
484
- throw new Error("nonzero initial buy requires a directional price limit");
485
- }
486
- assertCanonicalSqrtPrice(request.initialBuy.sqrtPriceLimitX96, "initialBuy.sqrtPriceLimitX96");
487
- const { tickLower, tickUpper } = launchBand(request.pool.launchTick, feeTier.tickSpacing, request.pool.launchedTokenIsQuote);
488
- const launchSqrtPriceX96 = getSqrtRatioAtTick(request.pool.launchedTokenIsQuote ? tickLower : tickUpper);
489
- if ((!request.pool.launchedTokenIsQuote &&
490
- request.initialBuy.sqrtPriceLimitX96 >= launchSqrtPriceX96) ||
491
- (request.pool.launchedTokenIsQuote &&
492
- request.initialBuy.sqrtPriceLimitX96 <= launchSqrtPriceX96)) {
493
- throw new Error("initial buy price limit does not protect the paired-token swap direction");
494
- }
495
- }
496
- const launchedFeesActive = template.feeAssetMode === LaunchFeeAssetMode.Both ||
497
- template.feeAssetMode === LaunchFeeAssetMode.LaunchedOnly ||
498
- (template.feeAssetMode === LaunchFeeAssetMode.Profile &&
499
- request.pool.profile === AbyssPoolProfile.StandardOracle);
500
- const pairedFeesActive = template.feeAssetMode === LaunchFeeAssetMode.Profile ||
501
- template.feeAssetMode === LaunchFeeAssetMode.PairedOnly ||
502
- template.feeAssetMode === LaunchFeeAssetMode.Both;
503
- validateDisposition("launchedTokenFees", request.launchedTokenFees, launchedFeesActive, template.launchedTokenDestinations);
504
- validateDisposition("pairedTokenFees", request.pairedTokenFees, pairedFeesActive, template.pairedTokenDestinations);
505
- return encodeFunctionData({
506
- abi: atomicLaunchFactoryAbi,
507
- functionName: "deployAndLaunch",
508
- args: [request],
509
- });
510
- }
511
274
  //# sourceMappingURL=launch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"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"}