@parabolicfamily/mcp 0.1.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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +195 -0
  3. package/abi/ParabolicBondingCurve.json +1223 -0
  4. package/abi/ParabolicLaunchFactory.json +2212 -0
  5. package/abi/ParabolicLauncherToken.json +577 -0
  6. package/abi/ParabolicMemoRouter.json +950 -0
  7. package/dist/abi.d.ts +17 -0
  8. package/dist/abi.js +37 -0
  9. package/dist/abi.js.map +1 -0
  10. package/dist/chain.d.ts +32 -0
  11. package/dist/chain.js +48 -0
  12. package/dist/chain.js.map +1 -0
  13. package/dist/coins.d.ts +52 -0
  14. package/dist/coins.js +75 -0
  15. package/dist/coins.js.map +1 -0
  16. package/dist/config.d.ts +55 -0
  17. package/dist/config.js +86 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/curve.d.ts +92 -0
  20. package/dist/curve.js +127 -0
  21. package/dist/curve.js.map +1 -0
  22. package/dist/docs.d.ts +3 -0
  23. package/dist/docs.js +63 -0
  24. package/dist/docs.js.map +1 -0
  25. package/dist/format.d.ts +19 -0
  26. package/dist/format.js +30 -0
  27. package/dist/format.js.map +1 -0
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.js +15 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/parabolic.d.ts +780 -0
  32. package/dist/parabolic.js +710 -0
  33. package/dist/parabolic.js.map +1 -0
  34. package/dist/server.d.ts +32 -0
  35. package/dist/server.js +149 -0
  36. package/dist/server.js.map +1 -0
  37. package/dist/subgraph.d.ts +85 -0
  38. package/dist/subgraph.js +43 -0
  39. package/dist/subgraph.js.map +1 -0
  40. package/dist/tx.d.ts +115 -0
  41. package/dist/tx.js +105 -0
  42. package/dist/tx.js.map +1 -0
  43. package/package.json +64 -0
  44. package/src/abi.ts +41 -0
  45. package/src/chain.ts +60 -0
  46. package/src/coins.ts +118 -0
  47. package/src/config.ts +123 -0
  48. package/src/curve.ts +171 -0
  49. package/src/docs.ts +63 -0
  50. package/src/format.ts +34 -0
  51. package/src/index.ts +14 -0
  52. package/src/parabolic.ts +753 -0
  53. package/src/server.ts +229 -0
  54. package/src/subgraph.ts +61 -0
  55. package/src/tx.ts +146 -0
@@ -0,0 +1,780 @@
1
+ import { type Address } from "viem";
2
+ import { type Rpc } from "./chain.js";
3
+ import { type CoinSummary, type SortKey, type StatusKey } from "./coins.js";
4
+ import { type Config } from "./config.js";
5
+ import { Subgraph, type Fetch } from "./subgraph.js";
6
+ import { type Socials, type TokenParams } from "./tx.js";
7
+ export declare const PHASES: readonly ["NotGraduated", "Swept", "PoolCreated", "Rescued"];
8
+ export declare const DEFAULT_SLIPPAGE_BPS = 100;
9
+ export declare const DEV_BUY_SLIPPAGE_BPS = 200n;
10
+ /** ParabolicLaunchDeployer metadata caps, in bytes. */
11
+ export declare const METADATA_LIMITS: {
12
+ readonly name: 64;
13
+ readonly symbol: 16;
14
+ readonly logo: 512;
15
+ readonly description: 2048;
16
+ readonly social: 256;
17
+ };
18
+ /** Newest launches the TokenLaunched log scan considers when no subgraph is configured. */
19
+ export declare const CHAIN_LIST_MAX = 50;
20
+ export type Launch = {
21
+ token: Address;
22
+ curve: Address;
23
+ deployer: Address;
24
+ creatorFeeRecipient?: Address;
25
+ pairToken: Address;
26
+ graduationThreshold: bigint;
27
+ poolFee?: number;
28
+ tickSpacing?: number;
29
+ creatorTaxBps?: number;
30
+ buybackEnabled?: boolean;
31
+ phase?: number;
32
+ source: "factory" | "subgraph";
33
+ };
34
+ export type ListInput = {
35
+ status?: StatusKey;
36
+ sort?: SortKey;
37
+ limit?: number;
38
+ };
39
+ export type QuoteBuyInput = {
40
+ address: string;
41
+ quoteIn: string | number;
42
+ buyer?: string;
43
+ slippageBps?: number;
44
+ };
45
+ export type QuoteSellInput = {
46
+ address: string;
47
+ tokensIn: string | number;
48
+ slippageBps?: number;
49
+ };
50
+ export type BuildBuyInput = QuoteBuyInput & {
51
+ minTokensOut?: string | number;
52
+ recipient: string;
53
+ memo?: {
54
+ referral?: string;
55
+ note?: string;
56
+ };
57
+ };
58
+ export type BuildSellInput = QuoteSellInput & {
59
+ minQuoteOut?: string | number;
60
+ recipient: string;
61
+ };
62
+ export type BuildLaunchInput = {
63
+ name: string;
64
+ ticker: string;
65
+ image?: string;
66
+ description?: string;
67
+ socials?: Partial<Socials>;
68
+ pair?: "USDC" | "EURC";
69
+ devBuy?: string | number;
70
+ creatorTaxBps?: number;
71
+ creator: string;
72
+ buybackEnabled?: boolean;
73
+ };
74
+ /**
75
+ * Read-only view of Parabolic plus unsigned-transaction builders. Holds no keys; every method either reads
76
+ * (RPC and/or subgraph) or encodes calldata for the caller's wallet to sign.
77
+ */
78
+ export declare class Parabolic {
79
+ readonly config: Config;
80
+ readonly rpc: Rpc;
81
+ readonly subgraph: Subgraph | undefined;
82
+ private hookPromise;
83
+ constructor(config: Config, deps?: {
84
+ rpc?: Rpc;
85
+ fetch?: Fetch;
86
+ });
87
+ private read;
88
+ private readMany;
89
+ private requireFactory;
90
+ private hookAddress;
91
+ private launchFromFactory;
92
+ private launchFromGql;
93
+ /** Finds a launch by token address (or curve address) through the factory, falling back to the subgraph. */
94
+ resolveLaunch(input: string): Promise<Launch>;
95
+ private liveTerms;
96
+ private assertOpen;
97
+ listCoins(input?: ListInput): Promise<{
98
+ source: string;
99
+ sort: "trending" | "new" | "near_graduation" | "market_cap";
100
+ status: string;
101
+ count: number;
102
+ coins: CoinSummary[];
103
+ }>;
104
+ /**
105
+ * Newest TokenLaunched logs, walked backwards from head in bounded windows.
106
+ *
107
+ * A single scan from the deployment block is refused by every public Arc RPC: they cap eth_getLogs
108
+ * at about 10,000 blocks and answer `requested range too large`, so the old unbounded scan made
109
+ * list_coins fail outright on a default install. Walking back a window at a time returns the newest
110
+ * launches, which is what this listing promises, and stops as soon as it has enough. A rate-limited
111
+ * or refused window ends the walk with what has been collected rather than failing the call.
112
+ *
113
+ * This covers recent history only. PARABOLIC_SUBGRAPH_URL is the full list, and carries holders and
114
+ * volume with it.
115
+ */
116
+ private recentLaunchLogs;
117
+ private chainCoins;
118
+ getCoin(address: string): Promise<{
119
+ holders: number | null;
120
+ volume24h: number | null;
121
+ change24h: number | null;
122
+ tradeCount: number | null;
123
+ lastTradeAt: number | null;
124
+ pool: {
125
+ poolId: string | null;
126
+ positionId: string | null;
127
+ poolFee: number | null;
128
+ tickSpacing: number | null;
129
+ hook: `0x${string}` | null;
130
+ };
131
+ logo: string;
132
+ description: string;
133
+ indexed: {
134
+ status: import("./subgraph.js").GqlCoinStatus;
135
+ graduatedAt: number | null;
136
+ volumeQuote: {
137
+ amount: string;
138
+ raw: string;
139
+ };
140
+ buyCount: number;
141
+ sellCount: number;
142
+ } | null;
143
+ sources: {
144
+ chain: string;
145
+ subgraph: string;
146
+ };
147
+ address: `0x${string}`;
148
+ curve: `0x${string}`;
149
+ name: string;
150
+ ticker: string;
151
+ creator: `0x${string}`;
152
+ creatorFeeRecipient: `0x${string}` | null;
153
+ pair: string;
154
+ pairToken: `0x${string}`;
155
+ quoteDecimals: number;
156
+ status: string;
157
+ phase: "NotGraduated" | "Swept" | "PoolCreated" | "Rescued";
158
+ readyToGraduate: boolean;
159
+ raised: {
160
+ amount: string;
161
+ raw: string;
162
+ };
163
+ threshold: {
164
+ amount: string;
165
+ raw: string;
166
+ };
167
+ progressPct: number;
168
+ price: number;
169
+ marketCap: number;
170
+ marketCapSource: string;
171
+ supply: {
172
+ amount: string;
173
+ raw: string;
174
+ };
175
+ reserves: {
176
+ quote: {
177
+ amount: string;
178
+ raw: string;
179
+ };
180
+ tokens: {
181
+ amount: string;
182
+ raw: string;
183
+ };
184
+ realQuote: {
185
+ amount: string;
186
+ raw: string;
187
+ };
188
+ phantomQuote: {
189
+ amount: string;
190
+ raw: string;
191
+ };
192
+ reservedTokens: {
193
+ amount: string;
194
+ raw: string;
195
+ };
196
+ sellableTokens: {
197
+ amount: string;
198
+ raw: string;
199
+ };
200
+ };
201
+ fees: {
202
+ feeBps: number;
203
+ creatorTaxBps: number;
204
+ split: {
205
+ protocolBps: number;
206
+ buybackBps: number;
207
+ creatorBps: number;
208
+ note: string;
209
+ };
210
+ policy: {
211
+ protocolFeeShareBps: number;
212
+ buybackBurnBps: number;
213
+ };
214
+ };
215
+ snipeTax: {
216
+ currentBps: number;
217
+ startBps: number;
218
+ windowSeconds: number;
219
+ launchedAt: number;
220
+ windowEndsAt: number;
221
+ windowOpen: boolean;
222
+ secondsRemaining: number;
223
+ exempt: string;
224
+ };
225
+ createdAt: number | null;
226
+ socials: {
227
+ twitter: string;
228
+ telegram: string;
229
+ discord: string;
230
+ website: string;
231
+ farcaster: string;
232
+ };
233
+ links: {
234
+ app: string;
235
+ token: string | null;
236
+ curve: string | null;
237
+ creator: string | null;
238
+ };
239
+ source: string;
240
+ }>;
241
+ private chainDetail;
242
+ private buyerSnipeBps;
243
+ quoteBuy(input: QuoteBuyInput): Promise<{
244
+ side: string;
245
+ coin: `0x${string}`;
246
+ curve: `0x${string}`;
247
+ pair: string;
248
+ quoteIn: {
249
+ amount: string;
250
+ raw: string;
251
+ };
252
+ tokensOut: {
253
+ amount: string;
254
+ raw: string;
255
+ };
256
+ minTokensOut: {
257
+ slippageBps: number;
258
+ amount: string;
259
+ raw: string;
260
+ };
261
+ spent: {
262
+ amount: string;
263
+ raw: string;
264
+ };
265
+ refund: {
266
+ amount: string;
267
+ raw: string;
268
+ };
269
+ fees: {
270
+ totalBps: number;
271
+ fee: {
272
+ amount: string;
273
+ raw: string;
274
+ bps: number;
275
+ };
276
+ creatorTax: {
277
+ amount: string;
278
+ raw: string;
279
+ bps: number;
280
+ };
281
+ snipeTax: {
282
+ windowOpen: boolean;
283
+ buyerExempt: boolean;
284
+ amount: string;
285
+ raw: string;
286
+ bps: number;
287
+ };
288
+ netToCurve: {
289
+ amount: string;
290
+ raw: string;
291
+ };
292
+ };
293
+ spotPrice: number;
294
+ effectivePrice: number;
295
+ priceImpactPct: number;
296
+ graduatesCoin: boolean;
297
+ reserves: {
298
+ quote: {
299
+ amount: string;
300
+ raw: string;
301
+ };
302
+ tokens: {
303
+ amount: string;
304
+ raw: string;
305
+ };
306
+ sellableTokens: {
307
+ amount: string;
308
+ raw: string;
309
+ };
310
+ };
311
+ notes: string[];
312
+ }>;
313
+ quoteSell(input: QuoteSellInput): Promise<{
314
+ side: string;
315
+ coin: `0x${string}`;
316
+ curve: `0x${string}`;
317
+ pair: string;
318
+ tokensIn: {
319
+ amount: string;
320
+ raw: string;
321
+ };
322
+ quoteOut: {
323
+ amount: string;
324
+ raw: string;
325
+ };
326
+ minQuoteOut: {
327
+ slippageBps: number;
328
+ amount: string;
329
+ raw: string;
330
+ };
331
+ fees: {
332
+ totalBps: number;
333
+ fee: {
334
+ amount: string;
335
+ raw: string;
336
+ bps: number;
337
+ };
338
+ creatorTax: {
339
+ amount: string;
340
+ raw: string;
341
+ bps: number;
342
+ };
343
+ gross: {
344
+ amount: string;
345
+ raw: string;
346
+ };
347
+ snipeTax: {
348
+ bps: number;
349
+ note: string;
350
+ };
351
+ };
352
+ spotPrice: number;
353
+ effectivePrice: number;
354
+ priceImpactPct: number;
355
+ reserves: {
356
+ quote: {
357
+ amount: string;
358
+ raw: string;
359
+ };
360
+ tokens: {
361
+ amount: string;
362
+ raw: string;
363
+ };
364
+ };
365
+ notes: string[];
366
+ }>;
367
+ buildBuyTx(input: BuildBuyInput): Promise<{
368
+ kind: string;
369
+ coin: `0x${string}`;
370
+ curve: `0x${string}`;
371
+ eoaOnly: boolean;
372
+ steps: string[];
373
+ approval: import("./tx.js").UnsignedTx;
374
+ tx: import("./tx.js").UnsignedTx;
375
+ usdcUnits: string;
376
+ memo: {
377
+ id: `0x${string}`;
378
+ payload: `0x${string}`;
379
+ referral: string | null;
380
+ note: string;
381
+ };
382
+ quote: {
383
+ quoteIn: {
384
+ amount: string;
385
+ raw: string;
386
+ };
387
+ expectedTokensOut: {
388
+ amount: string;
389
+ raw: string;
390
+ };
391
+ minTokensOut: {
392
+ amount: string;
393
+ raw: string;
394
+ };
395
+ slippageBps: number | null;
396
+ fees: {
397
+ feeBps: number;
398
+ creatorTaxBps: number;
399
+ snipeTaxBps: number;
400
+ buyerExempt: boolean;
401
+ };
402
+ priceImpactPct: number;
403
+ graduatesCoin: boolean;
404
+ refund: {
405
+ amount: string;
406
+ raw: string;
407
+ };
408
+ };
409
+ gas: {
410
+ note: string;
411
+ };
412
+ warnings: string[];
413
+ notes: string[];
414
+ } | {
415
+ kind: string;
416
+ coin: `0x${string}`;
417
+ curve: `0x${string}`;
418
+ steps: string[];
419
+ approval: import("./tx.js").UnsignedTx | null;
420
+ tx: import("./tx.js").UnsignedTx;
421
+ quote: {
422
+ quoteIn: {
423
+ amount: string;
424
+ raw: string;
425
+ };
426
+ expectedTokensOut: {
427
+ amount: string;
428
+ raw: string;
429
+ };
430
+ minTokensOut: {
431
+ amount: string;
432
+ raw: string;
433
+ };
434
+ slippageBps: number | null;
435
+ fees: {
436
+ feeBps: number;
437
+ creatorTaxBps: number;
438
+ snipeTaxBps: number;
439
+ buyerExempt: boolean;
440
+ };
441
+ priceImpactPct: number;
442
+ graduatesCoin: boolean;
443
+ refund: {
444
+ amount: string;
445
+ raw: string;
446
+ };
447
+ };
448
+ gas: {
449
+ note: string;
450
+ };
451
+ warnings: string[];
452
+ notes: string[];
453
+ eoaOnly?: undefined;
454
+ usdcUnits?: undefined;
455
+ memo?: undefined;
456
+ }>;
457
+ buildSellTx(input: BuildSellInput): Promise<{
458
+ kind: string;
459
+ coin: `0x${string}`;
460
+ curve: `0x${string}`;
461
+ steps: string[];
462
+ approval: import("./tx.js").UnsignedTx;
463
+ tx: import("./tx.js").UnsignedTx;
464
+ quote: {
465
+ tokensIn: {
466
+ amount: string;
467
+ raw: string;
468
+ };
469
+ expectedQuoteOut: {
470
+ amount: string;
471
+ raw: string;
472
+ };
473
+ minQuoteOut: {
474
+ amount: string;
475
+ raw: string;
476
+ };
477
+ slippageBps: number | null;
478
+ fees: {
479
+ feeBps: number;
480
+ creatorTaxBps: number;
481
+ };
482
+ priceImpactPct: number;
483
+ };
484
+ warnings: string[];
485
+ notes: string[];
486
+ }>;
487
+ buildLaunchTx(input: BuildLaunchInput): Promise<{
488
+ snipeTaxExemptions: never[];
489
+ devBuy: {
490
+ quoteIn: {
491
+ amount: string;
492
+ raw: string;
493
+ };
494
+ expectedTokensOut: {
495
+ amount: string;
496
+ raw: string;
497
+ };
498
+ minTokensOut: {
499
+ slippageBps: number;
500
+ amount: string;
501
+ raw: string;
502
+ };
503
+ fees: {
504
+ feeBps: number;
505
+ creatorTaxBps: number;
506
+ snipeTaxBps: number;
507
+ };
508
+ graduatesCoin: boolean;
509
+ refund: {
510
+ amount: string;
511
+ raw: string;
512
+ };
513
+ atomic: boolean;
514
+ };
515
+ events: string[];
516
+ notes: string[];
517
+ params: TokenParams;
518
+ launchConfigId: string;
519
+ pair: "USDC" | "EURC";
520
+ pairToken: `0x${string}`;
521
+ launchFee: {
522
+ amount: string;
523
+ raw: string;
524
+ };
525
+ terms: {
526
+ supply: {
527
+ amount: string;
528
+ raw: string;
529
+ };
530
+ curveFeeBps: number;
531
+ creatorTaxBps: number;
532
+ phantomQuote: {
533
+ amount: string;
534
+ raw: string;
535
+ };
536
+ graduationThreshold: {
537
+ amount: string;
538
+ raw: string;
539
+ };
540
+ reservedTokens: {
541
+ pct: number;
542
+ amount: string;
543
+ raw: string;
544
+ };
545
+ poolSeedTokens: {
546
+ pct: number;
547
+ amount: string;
548
+ raw: string;
549
+ };
550
+ lockedTokens: {
551
+ pct: number;
552
+ amount: string;
553
+ raw: string;
554
+ };
555
+ openingMarketCap: number;
556
+ graduationMarketCap: number;
557
+ snipeTax: {
558
+ startBps: number;
559
+ windowSeconds: number;
560
+ };
561
+ poolFee: number;
562
+ tickSpacing: number;
563
+ };
564
+ event: string;
565
+ warnings: string[];
566
+ kind: string;
567
+ tx: import("./tx.js").UnsignedTx;
568
+ approval: import("./tx.js").UnsignedTx | null;
569
+ steps: string[];
570
+ } | {
571
+ devBuy: {
572
+ approvalNeeded: string | null;
573
+ quoteIn: {
574
+ amount: string;
575
+ raw: string;
576
+ };
577
+ expectedTokensOut: {
578
+ amount: string;
579
+ raw: string;
580
+ };
581
+ minTokensOut: {
582
+ slippageBps: number;
583
+ amount: string;
584
+ raw: string;
585
+ };
586
+ fees: {
587
+ feeBps: number;
588
+ creatorTaxBps: number;
589
+ snipeTaxBps: number;
590
+ };
591
+ graduatesCoin: boolean;
592
+ refund: {
593
+ amount: string;
594
+ raw: string;
595
+ };
596
+ atomic: boolean;
597
+ how: string;
598
+ to: null;
599
+ toHint: string;
600
+ data: `0x${string}`;
601
+ value: `0x${string}`;
602
+ valueWei: string;
603
+ chainId: number;
604
+ } | null;
605
+ notes: string[];
606
+ params: TokenParams;
607
+ launchConfigId: string;
608
+ pair: "USDC" | "EURC";
609
+ pairToken: `0x${string}`;
610
+ launchFee: {
611
+ amount: string;
612
+ raw: string;
613
+ };
614
+ terms: {
615
+ supply: {
616
+ amount: string;
617
+ raw: string;
618
+ };
619
+ curveFeeBps: number;
620
+ creatorTaxBps: number;
621
+ phantomQuote: {
622
+ amount: string;
623
+ raw: string;
624
+ };
625
+ graduationThreshold: {
626
+ amount: string;
627
+ raw: string;
628
+ };
629
+ reservedTokens: {
630
+ pct: number;
631
+ amount: string;
632
+ raw: string;
633
+ };
634
+ poolSeedTokens: {
635
+ pct: number;
636
+ amount: string;
637
+ raw: string;
638
+ };
639
+ lockedTokens: {
640
+ pct: number;
641
+ amount: string;
642
+ raw: string;
643
+ };
644
+ openingMarketCap: number;
645
+ graduationMarketCap: number;
646
+ snipeTax: {
647
+ startBps: number;
648
+ windowSeconds: number;
649
+ };
650
+ poolFee: number;
651
+ tickSpacing: number;
652
+ };
653
+ event: string;
654
+ warnings: string[];
655
+ kind: string;
656
+ tx: import("./tx.js").UnsignedTx;
657
+ steps: string[];
658
+ }>;
659
+ protocolStats(): Promise<{
660
+ chain: {
661
+ id: number;
662
+ name: string;
663
+ rpc: string;
664
+ };
665
+ indexed: {
666
+ coinsLaunched: number;
667
+ coinsGraduated: number;
668
+ graduationRatePct: number;
669
+ tradeCount: number;
670
+ volume: {
671
+ amount: string;
672
+ raw: string;
673
+ };
674
+ fees: {
675
+ amount: string;
676
+ raw: string;
677
+ };
678
+ today: {
679
+ day: number;
680
+ date: string;
681
+ coinsLaunched: number;
682
+ coinsGraduated: number;
683
+ tradeCount: number;
684
+ volume: {
685
+ amount: string;
686
+ raw: string;
687
+ };
688
+ fees: {
689
+ amount: string;
690
+ raw: string;
691
+ };
692
+ } | null;
693
+ daily: {
694
+ day: number;
695
+ date: string;
696
+ coinsLaunched: number;
697
+ coinsGraduated: number;
698
+ tradeCount: number;
699
+ volume: {
700
+ amount: string;
701
+ raw: string;
702
+ };
703
+ fees: {
704
+ amount: string;
705
+ raw: string;
706
+ };
707
+ }[];
708
+ units: string;
709
+ } | {
710
+ error: string;
711
+ } | null;
712
+ factory: {
713
+ address: `0x${string}`;
714
+ launchFee: {
715
+ amount: string;
716
+ raw: string;
717
+ };
718
+ launchEnabled: boolean;
719
+ maxCreatorTaxBps: number;
720
+ snipeTax: {
721
+ startBps: number;
722
+ windowSeconds: number;
723
+ };
724
+ launchConfigCount: number;
725
+ launchConfig: {
726
+ id: string;
727
+ enabled: boolean;
728
+ supply: {
729
+ amount: string;
730
+ raw: string;
731
+ };
732
+ curveFeeBps: number;
733
+ phantomQuote: {
734
+ amount: string;
735
+ raw: string;
736
+ };
737
+ graduationThreshold: {
738
+ amount: string;
739
+ raw: string;
740
+ };
741
+ reservedTokens: {
742
+ amount: string;
743
+ raw: string;
744
+ };
745
+ reservedPct: number;
746
+ poolSeedTokens: {
747
+ amount: string;
748
+ raw: string;
749
+ };
750
+ poolSeedPct: number;
751
+ lockedTokens: {
752
+ amount: string;
753
+ raw: string;
754
+ };
755
+ lockedPct: number;
756
+ openingMarketCap: number;
757
+ graduationMarketCap: number;
758
+ poolFee: number;
759
+ tickSpacing: number;
760
+ };
761
+ contracts: {
762
+ feeEscrow: `0x${string}`;
763
+ buybackVault: `0x${string}`;
764
+ locker: `0x${string}`;
765
+ hook: `0x${string}`;
766
+ poolManager: `0x${string}`;
767
+ positionManager: `0x${string}`;
768
+ launchDeployer: `0x${string}`;
769
+ graduationExecutor: `0x${string}`;
770
+ launchForwarder: `0x${string}`;
771
+ owner: `0x${string}`;
772
+ };
773
+ } | {
774
+ error: string;
775
+ } | null;
776
+ notes: string[];
777
+ }>;
778
+ private factoryStats;
779
+ docs(): string;
780
+ }