@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.
- package/README.md +55 -10
- package/abi/ParabolicAggregatorRouter.json +2259 -0
- package/abi/ParabolicLaunchFactoryV2.json +2542 -0
- package/abi/ParabolicPairProbe.json +429 -0
- package/abi/ParabolicRouterV2.json +1171 -0
- package/abi/ParabolicSessionModule.json +1955 -0
- package/abi/deployments.json +258 -0
- package/dist/abi.d.ts +3 -1
- package/dist/abi.js +3 -1
- package/dist/abi.js.map +1 -1
- package/dist/chain.d.ts +12 -1
- package/dist/chain.js +13 -4
- package/dist/chain.js.map +1 -1
- package/dist/chains.d.ts +17 -10
- package/dist/chains.js +21 -16
- package/dist/chains.js.map +1 -1
- package/dist/config.d.ts +36 -11
- package/dist/config.js +98 -20
- package/dist/config.js.map +1 -1
- package/dist/deployed.d.ts +80 -0
- package/dist/deployed.js +95 -0
- package/dist/deployed.js.map +1 -0
- package/dist/docs.d.ts +13 -0
- package/dist/docs.js +68 -12
- package/dist/docs.js.map +1 -1
- package/dist/parabolic.d.ts +17 -0
- package/dist/parabolic.js +55 -8
- package/dist/parabolic.js.map +1 -1
- package/dist/quote-unit.js +49 -28
- package/dist/quote-unit.js.map +1 -1
- package/dist/referrals.d.ts +77 -0
- package/dist/referrals.js +55 -0
- package/dist/referrals.js.map +1 -0
- package/dist/restapi.d.ts +4 -3
- package/dist/restapi.js +19 -4
- package/dist/restapi.js.map +1 -1
- package/dist/routed.d.ts +389 -0
- package/dist/routed.js +413 -0
- package/dist/routed.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.js +84 -6
- package/dist/server.js.map +1 -1
- package/dist/tx.d.ts +6 -0
- package/dist/tx.js +12 -2
- package/dist/tx.js.map +1 -1
- package/dist/venues.d.ts +49 -0
- package/dist/venues.js +44 -0
- package/dist/venues.js.map +1 -0
- package/package.json +1 -1
- package/src/abi.ts +3 -1
- package/src/chain.ts +19 -4
- package/src/chains.ts +33 -20
- package/src/config.ts +112 -22
- package/src/deployed.ts +128 -0
- package/src/docs.ts +70 -12
- package/src/parabolic.ts +59 -8
- package/src/quote-unit.ts +47 -6
- package/src/referrals.ts +61 -0
- package/src/restapi.ts +18 -4
- package/src/routed.ts +499 -0
- package/src/server.ts +116 -6
- package/src/tx.ts +13 -2
- 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;
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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:
|
|
17
|
+
nativeCurrency: { name: gas.name, symbol: gas.symbol, decimals: gas.decimals },
|
|
10
18
|
rpcUrls: { default: { http: [rpcUrl] } },
|
|
11
|
-
...(explorer ? { blockExplorers: { default: { name: "
|
|
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":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAA+D,MAAM,MAAM,CAAC;AACtI,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
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),
|
|
13
|
-
*
|
|
14
|
-
* anything of ours is deployed on it, which is
|
|
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
|
-
/**
|
|
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
|
|
45
|
-
* Circle's `explorer.arc.io`, published 16 Sep 2026, behind a login at launch;
|
|
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
|
|
49
|
-
* so a reference and an error message can name
|
|
50
|
-
*
|
|
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
|
|
4
|
-
* Circle's `explorer.arc.io`, published 16 Sep 2026, behind a login at launch;
|
|
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
|
|
8
|
-
* so a reference and an error message can name
|
|
9
|
-
*
|
|
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:
|
|
13
|
-
|
|
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.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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;
|
package/dist/chains.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAgB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAgB,MAAM,MAAM,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAgD7C,mFAAmF;AACnF,MAAM,MAAM,GAAG,CAAC,OAAe,EAAW,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,MAAM,GAA8B;IAC/C,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,yBAAyB,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;IAC/N,qGAAqG;IACrG,2GAA2G;IAC3G,6GAA6G;IAC7G,qGAAqG;IACrG,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,iCAAiC,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;IAC/P,0GAA0G;IAC1G,2GAA2G;IAC3G,2GAA2G;IAC3G,0GAA0G;IAC1G,6EAA6E;IAC7E,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,uCAAuC,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;IAChQ,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;IACjG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;IAC1F,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE;IAC9F,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;CACvG,CAAC;AAEF,8DAA8D;AAC9D,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC;AAExB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAyB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEpF,kEAAkE;AAClE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,SAAS,OAAO,EAAE,CAAC;AAElG;;;;;;GAMG;AACH,MAAM,WAAW,GAA2B,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AAEtF,uGAAuG;AACvG,MAAM,UAAU,WAAW,CAAC,KAAsB;IAChD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAKD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,IAAY;IAClD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACzG,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,MAAM,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;IACjD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3D,CAAC;AAED,+FAA+F;AAC/F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAe,EAA6C,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC"}
|
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
|
|
13
|
+
* https://www.parabolic.family/docs#contracts and that are verified on Sourcify.
|
|
13
14
|
*
|
|
14
|
-
*
|
|
15
|
-
* the
|
|
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
|
-
/**
|
|
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
|
-
*
|
|
117
|
+
* The explorer base URL for the chain, undefined where there is no explorer (Anvil).
|
|
93
118
|
*
|
|
94
|
-
* Arc mainnet's
|
|
95
|
-
*
|
|
96
|
-
* costs an environment variable rather than a republish of this package. Read from
|
|
97
|
-
* directly, unlike every other setting here, because this is called from `arcChain()` which
|
|
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;
|