@parabolicfamily/mcp 0.1.8 → 0.2.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 (63) hide show
  1. package/README.md +55 -10
  2. package/abi/ParabolicAggregatorRouter.json +2259 -0
  3. package/abi/ParabolicLaunchFactoryV2.json +2542 -0
  4. package/abi/ParabolicPairProbe.json +429 -0
  5. package/abi/ParabolicRouterV2.json +1171 -0
  6. package/abi/ParabolicSessionModule.json +1955 -0
  7. package/abi/deployments.json +258 -0
  8. package/dist/abi.d.ts +3 -1
  9. package/dist/abi.js +3 -1
  10. package/dist/abi.js.map +1 -1
  11. package/dist/chain.d.ts +12 -1
  12. package/dist/chain.js +13 -4
  13. package/dist/chain.js.map +1 -1
  14. package/dist/chains.d.ts +17 -10
  15. package/dist/chains.js +21 -16
  16. package/dist/chains.js.map +1 -1
  17. package/dist/config.d.ts +36 -11
  18. package/dist/config.js +98 -20
  19. package/dist/config.js.map +1 -1
  20. package/dist/deployed.d.ts +80 -0
  21. package/dist/deployed.js +95 -0
  22. package/dist/deployed.js.map +1 -0
  23. package/dist/docs.d.ts +13 -0
  24. package/dist/docs.js +68 -12
  25. package/dist/docs.js.map +1 -1
  26. package/dist/parabolic.d.ts +17 -0
  27. package/dist/parabolic.js +55 -8
  28. package/dist/parabolic.js.map +1 -1
  29. package/dist/quote-unit.js +49 -28
  30. package/dist/quote-unit.js.map +1 -1
  31. package/dist/referrals.d.ts +77 -0
  32. package/dist/referrals.js +55 -0
  33. package/dist/referrals.js.map +1 -0
  34. package/dist/restapi.d.ts +4 -3
  35. package/dist/restapi.js +19 -4
  36. package/dist/restapi.js.map +1 -1
  37. package/dist/routed.d.ts +389 -0
  38. package/dist/routed.js +413 -0
  39. package/dist/routed.js.map +1 -0
  40. package/dist/server.d.ts +1 -1
  41. package/dist/server.js +84 -6
  42. package/dist/server.js.map +1 -1
  43. package/dist/tx.d.ts +6 -0
  44. package/dist/tx.js +12 -2
  45. package/dist/tx.js.map +1 -1
  46. package/dist/venues.d.ts +49 -0
  47. package/dist/venues.js +44 -0
  48. package/dist/venues.js.map +1 -0
  49. package/package.json +1 -1
  50. package/src/abi.ts +3 -1
  51. package/src/chain.ts +19 -4
  52. package/src/chains.ts +33 -20
  53. package/src/config.ts +112 -22
  54. package/src/deployed.ts +128 -0
  55. package/src/docs.ts +70 -12
  56. package/src/parabolic.ts +59 -8
  57. package/src/quote-unit.ts +47 -6
  58. package/src/referrals.ts +61 -0
  59. package/src/restapi.ts +18 -4
  60. package/src/routed.ts +499 -0
  61. package/src/server.ts +116 -6
  62. package/src/tx.ts +13 -2
  63. package/src/venues.ts +93 -0
@@ -0,0 +1,258 @@
1
+ {
2
+ "4663": {
3
+ "chainId": 4663,
4
+ "network": "robinhood-chain",
5
+ "timestamp": "2026-09-19T12:47:28.224Z",
6
+ "commit": "1667bd5",
7
+ "contracts": {
8
+ "ParabolicFeeEscrow": {
9
+ "address": "0x7b255064d4A26933484f376f2e4003c5AA94aBDC",
10
+ "block": 67093041
11
+ },
12
+ "ParabolicHook": {
13
+ "address": "0xD1311168793C0807B7C2Da26AC2B711E6a43E044",
14
+ "block": 67093085
15
+ },
16
+ "ParabolicBuybackVault": {
17
+ "address": "0xBD9Eb0F2F8393D52E3DF6a961d86F78A066e7B84",
18
+ "block": 67093110
19
+ },
20
+ "ParabolicLaunchLocker": {
21
+ "address": "0xEeF91089eFFFc74f4B2A19777a65a63dE8056eCB",
22
+ "block": 67093137
23
+ },
24
+ "ParabolicLaunchFactory": {
25
+ "address": "0x25c9cFa179256A29f84b9Fd0DcF7cB2ff24b473d",
26
+ "block": 67093163
27
+ },
28
+ "ParabolicGraduationGuard": {
29
+ "address": "0xe38AC7BdefF4Aace9BbAE9Be0bd8f0D2cDEFc445",
30
+ "block": 67093163
31
+ },
32
+ "ParabolicLaunchDeployer": {
33
+ "address": "0x3415976305c0Ed5DF788296Aa7DDaEDd82F57F78",
34
+ "block": 67093190
35
+ },
36
+ "ParabolicGraduationExecutor": {
37
+ "address": "0x08a828C314295CdD839c1CEfe93ccC673b2A40a9",
38
+ "block": 67093216
39
+ },
40
+ "ParabolicRouter": {
41
+ "address": "0xBa478578D8DF17ad3aaFaF9419B98CAd71321634",
42
+ "block": 67094134
43
+ }
44
+ },
45
+ "config": {
46
+ "launchConfigId": 0,
47
+ "launchForwarder": "0xBa478578D8DF17ad3aaFaF9419B98CAd71321634",
48
+ "quoteToken": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
49
+ "quoteEconomics": {
50
+ "phantomQuote": "5000000000",
51
+ "graduationThreshold": "8000000000",
52
+ "decimals": 6
53
+ },
54
+ "eurc": null,
55
+ "arcMemo": null,
56
+ "nativeDecimals": 18,
57
+ "quoteAssets": [
58
+ {
59
+ "address": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
60
+ "symbol": "USDG",
61
+ "decimals": 6
62
+ },
63
+ {
64
+ "address": "0x322F0929c4625eD5bAd873c95208D54E1c003b2d",
65
+ "symbol": "TSLA",
66
+ "decimals": 18
67
+ },
68
+ {
69
+ "address": "0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC",
70
+ "symbol": "NVDA",
71
+ "decimals": 18
72
+ },
73
+ {
74
+ "address": "0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9",
75
+ "symbol": "AAPL",
76
+ "decimals": 18
77
+ }
78
+ ]
79
+ },
80
+ "v2": null,
81
+ "v4": {
82
+ "poolManager": {
83
+ "address": "0x8366a39CC670B4001A1121B8F6A443A643e40951"
84
+ },
85
+ "positionManager": {
86
+ "address": "0x58daec3116aae6D93017bAAea7749052E8a04fA7"
87
+ },
88
+ "permit2": {
89
+ "address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
90
+ },
91
+ "stateView": {
92
+ "address": "0xf3334192d15450cdd385c8b70e03f9a6bd9e673b"
93
+ },
94
+ "v4Quoter": {
95
+ "address": "0x8dc178efb8111bb0973dd9d722ebeff267c98f94"
96
+ },
97
+ "universalRouter": {
98
+ "address": "0x8876789976decbfcbbbe364623c63652db8c0904"
99
+ }
100
+ }
101
+ },
102
+ "5042": {
103
+ "chainId": 5042,
104
+ "network": "arc-mainnet",
105
+ "timestamp": "2026-09-16T05:10:17.218Z",
106
+ "commit": "2c25ff2",
107
+ "contracts": {
108
+ "ParabolicFeeEscrow": {
109
+ "address": "0xfEd2BED46F5006f81B44f486AfbD1d9223F38A28",
110
+ "block": 21105294
111
+ },
112
+ "ParabolicHook": {
113
+ "address": "0x6B815a529598653AaF77742B04176957CeAf2044",
114
+ "block": 21105297
115
+ },
116
+ "ParabolicBuybackVault": {
117
+ "address": "0x8B2b249d70F81e839Ad47618abD8168f4F64AAb0",
118
+ "block": 21105301
119
+ },
120
+ "ParabolicLaunchLocker": {
121
+ "address": "0x14e0D76BC31a49Da950f558e91344a2bd7AA0B54",
122
+ "block": 21105305
123
+ },
124
+ "ParabolicLaunchFactory": {
125
+ "address": "0x27EAeC564fd049E6920C73323ffA7eb6a32A4B1e",
126
+ "block": 21105308
127
+ },
128
+ "ParabolicGraduationGuard": {
129
+ "address": "0x5CF0266Fb18Af98529BB62A043B6Ca813F999288",
130
+ "block": 21105308
131
+ },
132
+ "ParabolicLaunchDeployer": {
133
+ "address": "0xF74253981fCf3D08Fd01FE1c4eBbb861AfA4A115",
134
+ "block": 21105312
135
+ },
136
+ "ParabolicGraduationExecutor": {
137
+ "address": "0xb77eFe34345a699539A139743aA4173b20af80c6",
138
+ "block": 21105315
139
+ },
140
+ "ParabolicMemoRouter": {
141
+ "address": "0x7d642150A222D0F6c98e2fC6bBe86E8Bb6DC90d0",
142
+ "block": 21105373
143
+ }
144
+ },
145
+ "config": {
146
+ "launchConfigId": 0,
147
+ "launchForwarder": null,
148
+ "quoteToken": null,
149
+ "quoteEconomics": null,
150
+ "eurc": null,
151
+ "arcMemo": "0x5294E9927c3306DcBaDb03fe70b92e01cCede505",
152
+ "nativeDecimals": null,
153
+ "quoteAssets": null
154
+ },
155
+ "v2": null,
156
+ "v4": {
157
+ "poolManager": {
158
+ "address": "0x8366a39CC670B4001A1121B8F6A443A643e40951"
159
+ },
160
+ "positionManager": {
161
+ "address": "0x6049c9a0e26405C0985f9E3685C87d0aE917f82B"
162
+ },
163
+ "permit2": {
164
+ "address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
165
+ },
166
+ "stateView": {
167
+ "address": "0xF3334192D15450CdD385c8B70e03f9A6bD9E673b"
168
+ },
169
+ "v4Quoter": {
170
+ "address": "0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94"
171
+ },
172
+ "universalRouter": {
173
+ "address": "0x4fcA4a51Ab4F23A7447b3284fBd7D73289A89Fb1"
174
+ }
175
+ }
176
+ },
177
+ "5042002": {
178
+ "chainId": 5042002,
179
+ "network": "arc-testnet",
180
+ "timestamp": "2026-09-12T13:31:37.222Z",
181
+ "commit": "3ed705d",
182
+ "contracts": {
183
+ "ParabolicFeeEscrow": {
184
+ "address": "0xC372B9D7A5c35840437213D21fc80B85E0Edb96b",
185
+ "block": 61736654
186
+ },
187
+ "ParabolicHook": {
188
+ "address": "0x8c66F61C339B0adedbc33866152196256D62E044",
189
+ "block": 61736658
190
+ },
191
+ "ParabolicBuybackVault": {
192
+ "address": "0xe5fA2De1984B42f98BAEF6eb276E44111B277C8D",
193
+ "block": 61736662
194
+ },
195
+ "ParabolicLaunchLocker": {
196
+ "address": "0xb3c71648b3429414140B16a0603989E0678Aff2f",
197
+ "block": 61736666
198
+ },
199
+ "ParabolicLaunchFactory": {
200
+ "address": "0x2E06eD99bD7D164458847D186B282B23700b2C63",
201
+ "block": 61736670
202
+ },
203
+ "ParabolicGraduationGuard": {
204
+ "address": "0x8e68F53a86B6f40931B564728131F981977c7A16",
205
+ "block": 61736670
206
+ },
207
+ "ParabolicLaunchDeployer": {
208
+ "address": "0xdd0927daE105a939806e03420b91476556F16acc",
209
+ "block": 61736674
210
+ },
211
+ "ParabolicGraduationExecutor": {
212
+ "address": "0xF5654351f15c5677f9373A104c9a1dAC2106c1C0",
213
+ "block": 61736677
214
+ },
215
+ "ParabolicMemoRouter": {
216
+ "address": "0x1381567ea31a094e64f6B39Bd880d0b59c48e08F",
217
+ "block": 61736742
218
+ }
219
+ },
220
+ "config": {
221
+ "launchConfigId": 0,
222
+ "launchForwarder": null,
223
+ "quoteToken": null,
224
+ "quoteEconomics": null,
225
+ "eurc": "0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a",
226
+ "arcMemo": "0x5294E9927c3306DcBaDb03fe70b92e01cCede505",
227
+ "nativeDecimals": null,
228
+ "quoteAssets": null
229
+ },
230
+ "v2": null,
231
+ "v4": {
232
+ "poolManager": {
233
+ "address": "0x9536D5b6c015F3e237552215750C85D645AbA551"
234
+ },
235
+ "positionManager": {
236
+ "address": "0xfEd2BED46F5006f81B44f486AfbD1d9223F38A28"
237
+ },
238
+ "permit2": {
239
+ "address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
240
+ },
241
+ "positionDescriptor": {
242
+ "address": "0xa0036f24aebf61C0B4FD6Adafe045a89cD104009"
243
+ },
244
+ "stateView": {
245
+ "address": "0x62926aDAFaEa3D720f22f7a57E60Fde9DF5b8630"
246
+ },
247
+ "v4Quoter": {
248
+ "address": "0x8B2b249d70F81e839Ad47618abD8168f4F64AAb0"
249
+ },
250
+ "poolSwapTest": {
251
+ "address": "0x14e0D76BC31a49Da950f558e91344a2bd7AA0B54"
252
+ },
253
+ "poolModifyLiquidityTest": {
254
+ "address": "0x27EAeC564fd049E6920C73323ffA7eb6a32A4B1e"
255
+ }
256
+ }
257
+ }
258
+ }
package/dist/abi.d.ts CHANGED
@@ -6,12 +6,14 @@ import type { Abi } from "viem";
6
6
  * Override with PARABOLIC_ABI_DIR when the package is bundled elsewhere.
7
7
  */
8
8
  export declare const ABI_DIR: string;
9
- export declare const ABI_NAMES: readonly ["ParabolicLaunchFactory", "ParabolicBondingCurve", "ParabolicLauncherToken", "ParabolicMemoRouter"];
9
+ export declare const ABI_NAMES: readonly ["ParabolicLaunchFactory", "ParabolicBondingCurve", "ParabolicLauncherToken", "ParabolicMemoRouter", "ParabolicAggregatorRouter"];
10
10
  export type AbiName = (typeof ABI_NAMES)[number];
11
11
  export declare function loadAbi(name: AbiName): Abi;
12
12
  export declare const factoryAbi: Abi;
13
13
  export declare const curveAbi: Abi;
14
14
  export declare const tokenAbi: Abi;
15
15
  export declare const memoRouterAbi: Abi;
16
+ /** docs/33 §A: routed trades on another launchpad's coin (src/routed.ts). */
17
+ export declare const aggregatorRouterAbi: Abi;
16
18
  /** Names of all functions in an ABI (used to document what the factory can and cannot enumerate). */
17
19
  export declare const functionNames: (abi: Abi) => string[];
package/dist/abi.js CHANGED
@@ -8,7 +8,7 @@ import { fileURLToPath } from "node:url";
8
8
  * Override with PARABOLIC_ABI_DIR when the package is bundled elsewhere.
9
9
  */
10
10
  export const ABI_DIR = process.env.PARABOLIC_ABI_DIR ?? resolve(dirname(fileURLToPath(import.meta.url)), "..", "abi");
11
- export const ABI_NAMES = ["ParabolicLaunchFactory", "ParabolicBondingCurve", "ParabolicLauncherToken", "ParabolicMemoRouter"];
11
+ export const ABI_NAMES = ["ParabolicLaunchFactory", "ParabolicBondingCurve", "ParabolicLauncherToken", "ParabolicMemoRouter", "ParabolicAggregatorRouter"];
12
12
  const cache = new Map();
13
13
  export function loadAbi(name) {
14
14
  const hit = cache.get(name);
@@ -32,6 +32,8 @@ export const factoryAbi = loadAbi("ParabolicLaunchFactory");
32
32
  export const curveAbi = loadAbi("ParabolicBondingCurve");
33
33
  export const tokenAbi = loadAbi("ParabolicLauncherToken");
34
34
  export const memoRouterAbi = loadAbi("ParabolicMemoRouter");
35
+ /** docs/33 §A: routed trades on another launchpad's coin (src/routed.ts). */
36
+ export const aggregatorRouterAbi = loadAbi("ParabolicAggregatorRouter");
35
37
  /** Names of all functions in an ABI (used to document what the factory can and cannot enumerate). */
36
38
  export const functionNames = (abi) => abi.flatMap((e) => (e.type === "function" ? [e.name] : []));
37
39
  //# sourceMappingURL=abi.js.map
package/dist/abi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEtH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,qBAAqB,CAAU,CAAC;AAGvI,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEtC,MAAM,UAAU,OAAO,CAAC,IAAa;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC3C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,8GAA+G,CAAW,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5L,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,MAAa,CAAC;IAC1B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAQ,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,QAAQ,GAAQ,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,QAAQ,GAAQ,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,aAAa,GAAQ,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAEjE,qGAAqG;AACrG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAY,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEtH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,2BAA2B,CAAU,CAAC;AAGpK,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEtC,MAAM,UAAU,OAAO,CAAC,IAAa;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC3C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,8GAA+G,CAAW,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5L,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,MAAa,CAAC;IAC1B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAQ,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,QAAQ,GAAQ,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,QAAQ,GAAQ,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,aAAa,GAAQ,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACjE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAQ,OAAO,CAAC,2BAA2B,CAAC,CAAC;AAE7E,qGAAqG;AACrG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAY,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
package/dist/chain.d.ts CHANGED
@@ -23,8 +23,19 @@ export interface Rpc {
23
23
  read(a: ReadArgs): Promise<unknown>;
24
24
  logs(a: LogsArgs): Promise<DecodedLog[]>;
25
25
  blockNumber(): Promise<bigint>;
26
+ /**
27
+ * The head block's timestamp: the chain's clock, which a routed trade's deadline is counted from (src/routed.ts).
28
+ * Optional so an in-memory Rpc written before it existed still type-checks; a routed build without it refuses
29
+ * rather than falling back to this machine's clock, which is not the clock the router checks.
30
+ */
31
+ blockTimestamp?(): Promise<bigint>;
26
32
  }
27
- /** Arc chain definition for viem: native USDC with 18-decimal native accounting. */
33
+ /**
34
+ * The viem chain for `chainId`, from the registry (src/chains.ts): its own gas token and explorer. It was Arc's for
35
+ * every id, native USDC and an explorer called Arcscan, so Robinhood Chain was defined as a chain whose gas is USDC
36
+ * (CON-45, 30 Sep 2026). Internal, never emitted, which is why it was wrong for eleven days with nothing red. A chain
37
+ * the registry has no gas token for keeps Arc's shape, the one this server was written against.
38
+ */
28
39
  export declare function arcChain(chainId: number, rpcUrl: string): Chain;
29
40
  /** viem-backed Rpc. HTTP batching folds the many small reads of get_coin / list_coins into a few JSON-RPC requests. */
30
41
  export declare function viemRpc(rpcUrl: string, chainId: number): Rpc;
package/dist/chain.js CHANGED
@@ -1,15 +1,23 @@
1
1
  import { createPublicClient, defineChain, getAbiItem, http } from "viem";
2
+ import { chainFor } from "./chains.js";
2
3
  import { chainName, explorerBase } from "./config.js";
3
- /** Arc chain definition for viem: native USDC with 18-decimal native accounting. */
4
+ /**
5
+ * The viem chain for `chainId`, from the registry (src/chains.ts): its own gas token and explorer. It was Arc's for
6
+ * every id, native USDC and an explorer called Arcscan, so Robinhood Chain was defined as a chain whose gas is USDC
7
+ * (CON-45, 30 Sep 2026). Internal, never emitted, which is why it was wrong for eleven days with nothing red. A chain
8
+ * the registry has no gas token for keeps Arc's shape, the one this server was written against.
9
+ */
4
10
  export function arcChain(chainId, rpcUrl) {
11
+ const info = chainFor(chainId);
5
12
  const explorer = explorerBase(chainId);
13
+ const gas = info?.native ?? { name: "USDC", symbol: "USDC", decimals: 18 };
6
14
  return defineChain({
7
15
  id: chainId,
8
16
  name: chainName(chainId),
9
- nativeCurrency: { name: "USDC", symbol: "USDC", decimals: 18 },
17
+ nativeCurrency: { name: gas.name, symbol: gas.symbol, decimals: gas.decimals },
10
18
  rpcUrls: { default: { http: [rpcUrl] } },
11
- ...(explorer ? { blockExplorers: { default: { name: "Arcscan", url: explorer } } } : {}),
12
- testnet: chainId !== 5042,
19
+ ...(explorer ? { blockExplorers: { default: { name: info?.explorerName ?? "Explorer", url: explorer } } } : {}),
20
+ testnet: info?.testnet ?? chainId !== 5042,
13
21
  });
14
22
  }
15
23
  /** viem-backed Rpc. HTTP batching folds the many small reads of get_coin / list_coins into a few JSON-RPC requests. */
@@ -32,6 +40,7 @@ export function viemRpc(rpcUrl, chainId) {
32
40
  // viem caches the block number for four seconds by default; the log scan uses it as the top of
33
41
  // its newest window, so a coin launched in that window was missed. Always read the real head.
34
42
  blockNumber: () => client.getBlockNumber({ cacheTime: 0 }),
43
+ blockTimestamp: async () => (await client.getBlock({ blockTag: "latest" })).timestamp,
35
44
  };
36
45
  }
37
46
  /** Runs `fn` over `items` with at most `limit` in flight, preserving order. */
package/dist/chain.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"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"}
package/dist/chains.d.ts CHANGED
@@ -9,9 +9,9 @@ import { type Address } from "viem";
9
9
  * published tool's input without a version break.
10
10
  *
11
11
  * The registry is small on purpose. It carries what a *reference* needs — an id, a prefix, a name, an
12
- * explorer — while the deployed addresses stay in `DEPLOYMENTS` (src/config.ts), keyed by the same chain
13
- * id and written from `contracts/deployments/<chainId>.json`. A chain can be nameable here long before
14
- * anything of ours is deployed on it, which is exactly the state Robinhood Chain is in.
12
+ * explorer — while the deployed addresses stay in `DEPLOYMENTS` (src/config.ts), which reads them out of
13
+ * `abi/deployments.json` (src/deployed.ts) rather than carrying them as literals. A chain can be nameable
14
+ * here long before anything of ours is deployed on it, which is the state Base, Ethereum and BNB are in.
15
15
  */
16
16
  /**
17
17
  * A chain's stable name in configuration, logs and the `chain` field of an answer. The same set
@@ -35,19 +35,26 @@ export type ChainInfo = {
35
35
  decimals: number;
36
36
  dollar: boolean;
37
37
  };
38
+ /** What the explorer calls itself (Arcscan, Blockscout), for viem's `blockExplorers.default.name`; bot/src/chains.ts carries the same. */
39
+ explorerName?: string;
38
40
  explorer?: string;
39
41
  testnet: boolean;
40
- /** Whether Parabolic is deployed and served there today. */
42
+ /**
43
+ * Whether Parabolic is deployed and served there today. **Derived, never written** (23 Sep 2026, F50):
44
+ * it is true when this package ships that chain's factory address in `abi/deployments.json`, which is
45
+ * what makes an unconfigured server able to read the chain. Typed by hand it stayed false on Robinhood
46
+ * Chain for four days after the deploy, and `assertChain` told every agent so in those words.
47
+ */
41
48
  live: boolean;
42
49
  };
43
50
  /**
44
- * Arc mainnet and Arc Testnet, with the explorer hosts this package has always used (Arc mainnet's is
45
- * Circle's `explorer.arc.io`, published 16 Sep 2026, behind a login at launch; `PARABOLIC_EXPLORER_URL`
46
- * still overrides both).
51
+ * Arc mainnet and Arc Testnet, with the explorer hosts each chain answers on today (Arc mainnet's is
52
+ * Circle's `explorer.arc.io`, published 16 Sep 2026, behind a login at launch; the testnet's moved on
53
+ * 23 Sep 2026, see the entry below; `PARABOLIC_EXPLORER_URL` still overrides both).
47
54
  *
48
- * Robinhood Chain (4663, from docs/20-multichain.md §1, verified 18 Sep 2026 against chain docs) is here
49
- * so a reference and an error message can name it. It has no gas token and no explorer written down,
50
- * because neither has been read in this repo, and nothing here invents either.
55
+ * Robinhood Chain (4663) is served since 23 Sep 2026, the day this package stopped writing `live` by hand.
56
+ * Base, Ethereum, BNB and Anvil are here so a reference and an error message can name them, and carry no
57
+ * gas token, because nothing in this repo has read one and nothing here invents one.
51
58
  */
52
59
  export declare const CHAINS: Record<number, ChainInfo>;
53
60
  /** Arc mainnet: the chain an unqualified identifier means. */
package/dist/chains.js CHANGED
@@ -1,28 +1,33 @@
1
1
  import { getAddress, isAddress } from "viem";
2
+ import { isDeployedOn } from "./deployed.js";
3
+ /** A chain is live because its deployment record says so; see `ChainInfo.live`. */
4
+ const served = (chainId) => isDeployedOn(chainId);
2
5
  /**
3
- * Arc mainnet and Arc Testnet, with the explorer hosts this package has always used (Arc mainnet's is
4
- * Circle's `explorer.arc.io`, published 16 Sep 2026, behind a login at launch; `PARABOLIC_EXPLORER_URL`
5
- * still overrides both).
6
+ * Arc mainnet and Arc Testnet, with the explorer hosts each chain answers on today (Arc mainnet's is
7
+ * Circle's `explorer.arc.io`, published 16 Sep 2026, behind a login at launch; the testnet's moved on
8
+ * 23 Sep 2026, see the entry below; `PARABOLIC_EXPLORER_URL` still overrides both).
6
9
  *
7
- * Robinhood Chain (4663, from docs/20-multichain.md §1, verified 18 Sep 2026 against chain docs) is here
8
- * so a reference and an error message can name it. It has no gas token and no explorer written down,
9
- * because neither has been read in this repo, and nothing here invents either.
10
+ * Robinhood Chain (4663) is served since 23 Sep 2026, the day this package stopped writing `live` by hand.
11
+ * Base, Ethereum, BNB and Anvil are here so a reference and an error message can name them, and carry no
12
+ * gas token, because nothing in this repo has read one and nothing here invents one.
10
13
  */
11
14
  export const CHAINS = {
12
- 5042: { id: 5042, key: "arc", prefix: "", name: "Arc", native: { name: "USDC", symbol: "USDC", decimals: 18, dollar: true }, explorer: "https://explorer.arc.io", testnet: false, live: true },
13
- 5042002: { id: 5042002, key: "arc-testnet", prefix: "", name: "Arc Testnet", native: { name: "USDC", symbol: "USDC", decimals: 18, dollar: true }, explorer: "https://testnet.arcscan.app", testnet: true, live: true },
15
+ 5042: { id: 5042, key: "arc", prefix: "", name: "Arc", native: { name: "USDC", symbol: "USDC", decimals: 18, dollar: true }, explorer: "https://explorer.arc.io", explorerName: "Arcscan", testnet: false, live: served(5042) },
16
+ // The testnet's host moved: `testnet.arcscan.app` answers 301 to `explorer.testnet.arc.io` (measured
17
+ // 23 Sep 2026, F49). Every `links.token` this package publishes followed the redirect and still landed, so
18
+ // nothing was broken; it is written as the host that answers because web/lib/chains.ts and bot/src/chains.ts
19
+ // moved the same day, and one chain named two ways in three registries is how a stale host survives.
20
+ 5042002: { id: 5042002, key: "arc-testnet", prefix: "", name: "Arc Testnet", native: { name: "USDC", symbol: "USDC", decimals: 18, dollar: true }, explorer: "https://explorer.testnet.arc.io", explorerName: "Arcscan", testnet: true, live: served(5042002) },
14
21
  // Deployed 19 Sep 2026 (contracts/deployments/4663.json), and its gas asset filled in here on 20 Sep. ETH
15
22
  // at 18 decimals is the scale the deploy MEASURED against the WETH9 that chain's own PositionManager names
16
23
  // and wrote into `config.nativeDecimals`, not a figure taken from a doc; `dollar: false` is why no balance
17
24
  // or launch fee on this chain may be reported as money in dollars. The Blockscout instance is the one the
18
- // chain lists and the one contracts/scripts/verify-arcscan.sh has on record. `live` stays false here because
19
- // this package has no `DEPLOYMENTS` entry for the chain: it is a chain a reference can name, not one an
20
- // unconfigured server can read.
21
- 4663: { id: 4663, key: "rhc", prefix: "rhc", name: "Robinhood Chain", native: { name: "Ether", symbol: "ETH", decimals: 18, dollar: false }, explorer: "https://robinhoodchain.blockscout.com", testnet: false, live: false },
22
- 8453: { id: 8453, key: "base", prefix: "base", name: "Base", testnet: false, live: false },
23
- 1: { id: 1, key: "eth", prefix: "eth", name: "Ethereum", testnet: false, live: false },
24
- 56: { id: 56, key: "bnb", prefix: "bnb", name: "BNB Chain", testnet: false, live: false },
25
- 31337: { id: 31337, key: "anvil", prefix: "anvil", name: "Anvil", testnet: true, live: false },
25
+ // chain lists and the one contracts/scripts/verify-arcscan.sh has on record.
26
+ 4663: { id: 4663, key: "rhc", prefix: "rhc", name: "Robinhood Chain", native: { name: "Ether", symbol: "ETH", decimals: 18, dollar: false }, explorer: "https://robinhoodchain.blockscout.com", explorerName: "Blockscout", testnet: false, live: served(4663) },
27
+ 8453: { id: 8453, key: "base", prefix: "base", name: "Base", testnet: false, live: served(8453) },
28
+ 1: { id: 1, key: "eth", prefix: "eth", name: "Ethereum", testnet: false, live: served(1) },
29
+ 56: { id: 56, key: "bnb", prefix: "bnb", name: "BNB Chain", testnet: false, live: served(56) },
30
+ 31337: { id: 31337, key: "anvil", prefix: "anvil", name: "Anvil", testnet: true, live: served(31337) },
26
31
  };
27
32
  /** Arc mainnet: the chain an unqualified identifier means. */
28
33
  export const ARC = 5042;
@@ -1 +1 @@
1
- {"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type Address } from "viem";
2
+ import { type VenueKey } from "./venues.js";
2
3
  /** Arc's system `Memo` contract (CREATE2, zero salt), verified on Arc Testnet; expected to match on mainnet. */
3
4
  export declare const ARC_MEMO_DEFAULT: Address;
4
5
  /** ERC-20 view of native USDC on Arc (6 decimals, same balance as the 18-decimal native asset). */
@@ -9,10 +10,17 @@ export declare const DEFAULT_API_URL = "https://www.parabolic.family/api/v1";
9
10
  /**
10
11
  * Deployed Parabolic addresses per chain, so the server is useful with no configuration at all.
11
12
  * The source repository is private; these are the same addresses the site publishes at
12
- * https://www.parabolic.family/docs#contracts and that are verified on Arcscan.
13
+ * https://www.parabolic.family/docs#contracts and that are verified on Sourcify.
13
14
  *
14
- * Arc mainnet (5042) opened on 16 September 2026; Parabolic deployed at block 21,105,294 and these are
15
- * the live addresses (contracts/deployments/5042.json). With them in place the default chain is Arc.
15
+ * **No address is written here** (23 Sep 2026, finding F50). Every one is read out of the deployment
16
+ * record the deploy itself produced, through `abi/deployments.json` (src/deployed.ts). This table was
17
+ * three chains typed by hand and chain two was never typed, so the package shipped for four days telling
18
+ * every agent Parabolic was not deployed on Robinhood Chain; syncing a record is now the whole of adding
19
+ * a chain, and `CHAINS[id].live` follows the same file.
20
+ *
21
+ * What stays written here is what no deploy can answer: the **public** JSON-RPC endpoint an unconfigured
22
+ * agent may call (a record holds the deploy machine's endpoint, which on Arc is a keyed provider's), the
23
+ * site that serves the chain, and Arc's ERC-8004 registry, which is Arc's contract and not one of ours.
16
24
  */
17
25
  export declare const DEPLOYMENTS: Record<number, {
18
26
  rpcUrl: string;
@@ -42,11 +50,11 @@ export declare const DEPLOYMENTS: Record<number, {
42
50
  export declare const DEFAULT_CHAIN_ID: number;
43
51
  export declare const DEFAULT_RPC_URL: string;
44
52
  export type Config = {
45
- /** JSON-RPC endpoint for Arc. */
53
+ /** JSON-RPC endpoint for the chain this server serves, which is not always Arc (23 Sep 2026). */
46
54
  rpcUrl: string;
47
55
  /** PARABOLIC_RPC_URL was set to something other than the deployment's own endpoint (a fork, a private node). */
48
56
  rpcOverridden?: boolean;
49
- /** 5042002 = Arc Testnet, 5042 = Arc mainnet (id unofficial until Circle publishes it). */
57
+ /** The chain this server serves: 5042 Arc, 5042002 Arc Testnet, 4663 Robinhood Chain. */
50
58
  chainId: number;
51
59
  /** ParabolicLaunchFactory. Required for on-chain coin lookups and for building launch transactions. */
52
60
  factory?: Address;
@@ -71,10 +79,27 @@ export type Config = {
71
79
  launchConfigId: bigint;
72
80
  /** First block to scan for `TokenLaunched` logs when listing without a subgraph. */
73
81
  factoryStartBlock: bigint;
82
+ /**
83
+ * ParabolicAggregatorRouter, for routed trades on another launchpad's coin (src/routed.ts). From the chain's
84
+ * deployment record (`aggregator`), or from PARABOLIC_AGGREGATOR_ROUTER only where the record names none AND the
85
+ * chain is Anvil or a testnet (`aggregatorEnvHonoured`), never on 5042 or 4663; never both, so an environment variable can never stand in for a deployed router.
86
+ */
87
+ aggregatorRouter?: Address;
88
+ /** Where `aggregatorRouter` came from: the deployment record, or the variable (a rehearsal, said so in every answer). */
89
+ aggregatorSource?: "record" | "env";
90
+ /** Venue subgraph endpoints for this chain, keyed by venue (PARABOLIC_SUBGRAPH_URL_<VENUE>_<CHAIN>). */
91
+ venueSubgraphs?: Partial<Record<VenueKey, string>>;
74
92
  };
75
93
  /** Environment variables the server reads, with their meaning (also rendered by `parabolic.docs`). */
76
94
  export declare const ENV_VARS: Array<[name: string, meaning: string]>;
77
95
  export declare function configFromEnv(env?: Record<string, string | undefined>): Config;
96
+ /**
97
+ * Whether PARABOLIC_AGGREGATOR_ROUTER may stand in for a router on this chain: Anvil and the testnets only (RE-30B-4).
98
+ * On a live chain (Arc 5042, Robinhood Chain 4663, any id this registry does not call a testnet) the deployment record
99
+ * is the only source, so an install snippet carrying the variable can never aim a trade at an address the record does
100
+ * not carry. A fork proof on a live chain's id sets the router on its own config, in the test, not through this.
101
+ */
102
+ export declare const aggregatorEnvHonoured: (chainId: number) => boolean;
78
103
  /**
79
104
  * Re-exported rather than defined here since 18 Sep 2026: the same two strings for the same two chains,
80
105
  * from the registry that now also knows how a coin on a third one is named (src/chains.ts).
@@ -89,13 +114,13 @@ export { chainName } from "./chains.js";
89
114
  */
90
115
  export declare function siteBase(chainId: number): string | undefined;
91
116
  /**
92
- * Arcscan base URL for the chain, undefined where there is no explorer (Anvil).
117
+ * The explorer base URL for the chain, undefined where there is no explorer (Anvil).
93
118
  *
94
- * Arc mainnet's host is a guess: Circle has published an explorer for Arc Testnet only, and
95
- * `https://explorer.arc.io` is Circle's published explorer (16 Sep 2026), behind a login at launch. `PARABOLIC_EXPLORER_URL` overrides it so a wrong guess
96
- * costs an environment variable rather than a republish of this package. Read from `process.env`
97
- * directly, unlike every other setting here, because this is called from `arcChain()` which builds a
98
- * viem chain from a chain id alone and never sees a Config.
119
+ * Arc mainnet's is Circle's `explorer.arc.io`, published 16 Sep 2026 and behind a login on the day;
120
+ * Robinhood Chain's is the Blockscout instance that chain lists. `PARABOLIC_EXPLORER_URL` overrides both,
121
+ * so a host that moves costs an environment variable rather than a republish of this package. Read from
122
+ * `process.env` directly, unlike every other setting here, because this is called from `arcChain()` which
123
+ * builds a viem chain from a chain id alone and never sees a Config.
99
124
  */
100
125
  export declare function explorerBase(chainId: number): string | undefined;
101
126
  export declare const explorerUrl: (chainId: number, kind: "address" | "tx", value: string) => string | undefined;