@parabolicfamily/mcp 0.1.7 → 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 (80) hide show
  1. package/README.md +91 -12
  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 +25 -13
  16. package/dist/chains.js.map +1 -1
  17. package/dist/coins.d.ts +38 -3
  18. package/dist/coins.js +54 -4
  19. package/dist/coins.js.map +1 -1
  20. package/dist/config.d.ts +36 -11
  21. package/dist/config.js +98 -20
  22. package/dist/config.js.map +1 -1
  23. package/dist/curve.d.ts +2 -1
  24. package/dist/curve.js +2 -1
  25. package/dist/curve.js.map +1 -1
  26. package/dist/deployed.d.ts +80 -0
  27. package/dist/deployed.js +95 -0
  28. package/dist/deployed.js.map +1 -0
  29. package/dist/docs.d.ts +13 -0
  30. package/dist/docs.js +75 -14
  31. package/dist/docs.js.map +1 -1
  32. package/dist/parabolic.d.ts +120 -3
  33. package/dist/parabolic.js +309 -41
  34. package/dist/parabolic.js.map +1 -1
  35. package/dist/quote-unit.d.ts +77 -0
  36. package/dist/quote-unit.js +143 -0
  37. package/dist/quote-unit.js.map +1 -0
  38. package/dist/referrals.d.ts +77 -0
  39. package/dist/referrals.js +55 -0
  40. package/dist/referrals.js.map +1 -0
  41. package/dist/restapi.d.ts +23 -0
  42. package/dist/restapi.js +60 -4
  43. package/dist/restapi.js.map +1 -1
  44. package/dist/routed.d.ts +389 -0
  45. package/dist/routed.js +413 -0
  46. package/dist/routed.js.map +1 -0
  47. package/dist/server.d.ts +1 -1
  48. package/dist/server.js +117 -10
  49. package/dist/server.js.map +1 -1
  50. package/dist/subgraph.d.ts +18 -6
  51. package/dist/subgraph.js +13 -1
  52. package/dist/subgraph.js.map +1 -1
  53. package/dist/ticker.d.ts +97 -0
  54. package/dist/ticker.js +109 -0
  55. package/dist/ticker.js.map +1 -0
  56. package/dist/tx.d.ts +6 -0
  57. package/dist/tx.js +12 -2
  58. package/dist/tx.js.map +1 -1
  59. package/dist/venues.d.ts +49 -0
  60. package/dist/venues.js +44 -0
  61. package/dist/venues.js.map +1 -0
  62. package/package.json +2 -2
  63. package/src/abi.ts +3 -1
  64. package/src/chain.ts +19 -4
  65. package/src/chains.ts +37 -17
  66. package/src/coins.ts +67 -5
  67. package/src/config.ts +112 -22
  68. package/src/curve.ts +2 -1
  69. package/src/deployed.ts +128 -0
  70. package/src/docs.ts +78 -15
  71. package/src/parabolic.ts +323 -42
  72. package/src/quote-unit.ts +194 -0
  73. package/src/referrals.ts +61 -0
  74. package/src/restapi.ts +66 -4
  75. package/src/routed.ts +499 -0
  76. package/src/server.ts +154 -10
  77. package/src/subgraph.ts +22 -4
  78. package/src/ticker.ts +148 -0
  79. package/src/tx.ts +13 -2
  80. 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,21 +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 },
14
- 4663: { id: 4663, key: "rhc", prefix: "rhc", name: "Robinhood Chain", testnet: false, live: false },
15
- 8453: { id: 8453, key: "base", prefix: "base", name: "Base", testnet: false, live: false },
16
- 1: { id: 1, key: "eth", prefix: "eth", name: "Ethereum", testnet: false, live: false },
17
- 56: { id: 56, key: "bnb", prefix: "bnb", name: "BNB Chain", testnet: false, live: false },
18
- 31337: { id: 31337, key: "anvil", prefix: "anvil", name: "Anvil", testnet: true, live: false },
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) },
21
+ // Deployed 19 Sep 2026 (contracts/deployments/4663.json), and its gas asset filled in here on 20 Sep. ETH
22
+ // at 18 decimals is the scale the deploy MEASURED against the WETH9 that chain's own PositionManager names
23
+ // and wrote into `config.nativeDecimals`, not a figure taken from a doc; `dollar: false` is why no balance
24
+ // or launch fee on this chain may be reported as money in dollars. The Blockscout instance is the one the
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) },
19
31
  };
20
32
  /** Arc mainnet: the chain an unqualified identifier means. */
21
33
  export const ARC = 5042;
@@ -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;AAyC3D;;;;;;;;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,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;IAC9L,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,6BAA6B,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IACvN,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IACnG,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,KAAK,EAAE;IAC1F,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,KAAK,EAAE;IACtF,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,KAAK,EAAE;IACzF,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,KAAK,EAAE;CAC/F,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"}
1
+ {"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"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"}
package/dist/coins.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type Address } from "viem";
2
+ import { type QuoteBlock } from "./quote-unit.js";
2
3
  import type { GqlCoin } from "./subgraph.js";
3
4
  export type StatusKey = "climbing" | "graduated";
4
5
  export declare const SORT_KEYS: readonly ["trending", "new", "near_graduation", "market_cap"];
@@ -9,9 +10,19 @@ export type CoinSummary = {
9
10
  name: string;
10
11
  ticker: string;
11
12
  creator: Address;
12
- pair: "USDC" | "EURC";
13
+ /**
14
+ * What the coin's money is called — the asset's own symbol, whatever it is.
15
+ *
16
+ * It was the literal union `"USDC" | "EURC"` until 20 September 2026, which is Arc's two answers written
17
+ * into a type: every coin on any other chain was reported to an agent as an EURC while every figure beside
18
+ * it was right, and src/restapi.ts had to cast a real symbol back through it to compile.
19
+ */
20
+ pair: string;
13
21
  pairToken: Address;
22
+ /** Read from the asset's own `decimals()`, or from the chain's gas asset. Never derived from `pairToken`. */
14
23
  quoteDecimals: number;
24
+ /** What the money IS: whether it is a dollar, what kind of asset it is, who issues it. See src/quote-unit.ts. */
25
+ quote: QuoteBlock;
15
26
  status: StatusKey;
16
27
  /** Quote raised on the curve (net of fees), whole units; for a graduated coin the threshold it crossed. */
17
28
  raised: string;
@@ -36,7 +47,22 @@ export type CoinSummary = {
36
47
  source: "subgraph" | "api" | "chain";
37
48
  };
38
49
  export declare const isNative: (pairToken: string) => boolean;
39
- export declare const quoteDecimalsOf: (pairToken: string) => number;
50
+ /**
51
+ * The scale a coin's quote amounts are written at, from the only two sources that have ever read it.
52
+ *
53
+ * This was `isNative(pairToken) ? 18 : 6` — Arc's own two answers, typed out, and the same pair of literals
54
+ * web/lib/data.ts and bot/src/chain.ts carried until 18 September 2026. The 18 is right only where the gas
55
+ * token is an 18-decimal dollar, and the 6 is right only for EURC on Arc: USDC is a **6-decimal ERC-20** on
56
+ * Base, Ethereum and BNB, all three of them chains on the plan, so every `raisedRaw` and `thresholdRaw` this
57
+ * produced there was out by a factor of a trillion — inside calldata an agent signs, with nothing to say so.
58
+ *
59
+ * `indexed` is the coin's own `Coin.quoteDecimals`, which the indexer writes at launch from the factory's
60
+ * re-read of the asset's `decimals()` — the chain's answer for *that launch*. Without it, a gas-asset quote
61
+ * falls back to the chain registry, whose figures were read off the chain when the chain was added. Neither
62
+ * available means **nothing is returned**: a caller must refuse a figure it cannot scale rather than pick a
63
+ * number (docs/20-multichain.md §3).
64
+ */
65
+ export declare function quoteDecimalsOf(pairToken: string, indexed: number | null | undefined, chainId: number): number | undefined;
40
66
  /** Curve progress in percent with three decimals, capped at 100. */
41
67
  export declare const progressPct: (raised: bigint, threshold: bigint) => number;
42
68
  /**
@@ -47,6 +73,15 @@ export declare function dayStats(g: GqlCoin, now: number, quoteDecimals: number)
47
73
  volume24h: number;
48
74
  change24h: number;
49
75
  };
50
- export declare function summaryFromGql(g: GqlCoin, now?: number): CoinSummary;
76
+ /**
77
+ * A subgraph row as a coin summary.
78
+ *
79
+ * `chainId` is the chain the subgraph is indexing, and it is required because the scale of the row's amounts
80
+ * is not inferable from the row: `Coin.quoteDecimals` when the endpoint carries it (subgraph 0.3.0 and later),
81
+ * and otherwise that chain's gas asset for a native-quoted coin. A row nothing can scale **throws**, because
82
+ * every figure below it — raised, threshold, price, volume — would be wrong by orders of magnitude and would
83
+ * look entirely ordinary.
84
+ */
85
+ export declare function summaryFromGql(g: GqlCoin, now?: number, chainId?: number, knownDecimals?: number): CoinSummary;
51
86
  /** Pure sort used by list_coins; `near_graduation` ranks climbing coins by progress and puts graduated ones last. */
52
87
  export declare function sortCoins(list: CoinSummary[], sort: SortKey): CoinSummary[];