@rhinestone/deposit-modal 0.8.1 → 0.9.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 +193 -29
- package/dist/{chunk-2JPB3PLB.mjs → DepositModalReown-6KUAO5ZC.mjs} +56 -4
- package/dist/{chunk-Q3W53BKR.cjs → DepositModalReown-XC5RIU7Z.cjs} +62 -10
- package/dist/{caip-C_ZYFIGa.d.cts → caip-523Zrc3r.d.cts} +1 -3
- package/dist/{caip-C_ZYFIGa.d.ts → caip-523Zrc3r.d.ts} +1 -3
- package/dist/{chunk-D3Y7ZBED.cjs → chunk-22RV33LK.cjs} +2170 -1460
- package/dist/chunk-4WB2FHGC.mjs +865 -0
- package/dist/chunk-A223BLVC.mjs +801 -0
- package/dist/{chunk-HQWZCOMS.cjs → chunk-DIX7M3SP.cjs} +232 -601
- package/dist/{chunk-T43VUEJH.mjs → chunk-E4G5BOZP.mjs} +167 -536
- package/dist/chunk-H577RJN5.cjs +801 -0
- package/dist/{chunk-DABKCJVL.mjs → chunk-ILT2PITN.mjs} +60 -3
- package/dist/{chunk-7KHEIMWD.mjs → chunk-KKHLNFSA.mjs} +2436 -1726
- package/dist/chunk-LGVJWVSS.mjs +81 -0
- package/dist/chunk-NEXUCY4B.cjs +11 -0
- package/dist/chunk-NMIMRASD.cjs +1785 -0
- package/dist/chunk-OSI2CFGL.mjs +11 -0
- package/dist/chunk-PAGMU4RQ.cjs +865 -0
- package/dist/chunk-T7LGQFP3.cjs +81 -0
- package/dist/chunk-VN4BLZYC.cjs +2273 -0
- package/dist/chunk-VOGZAZB2.mjs +2273 -0
- package/dist/chunk-WYXBY2MQ.mjs +1785 -0
- package/dist/{chunk-4NN7UTWQ.cjs → chunk-YEBXUUH3.cjs} +63 -6
- package/dist/claim.cjs +10 -0
- package/dist/claim.d.cts +8 -0
- package/dist/claim.d.ts +8 -0
- package/dist/claim.mjs +10 -0
- package/dist/constants.cjs +3 -3
- package/dist/constants.d.cts +4 -2
- package/dist/constants.d.ts +4 -2
- package/dist/constants.mjs +5 -5
- package/dist/deposit.cjs +8 -6
- package/dist/deposit.d.cts +2 -2
- package/dist/deposit.d.ts +2 -2
- package/dist/deposit.mjs +7 -5
- package/dist/index.cjs +22 -12
- package/dist/index.d.cts +15 -2
- package/dist/index.d.ts +15 -2
- package/dist/index.mjs +21 -11
- package/dist/polymarket.cjs +5 -6
- package/dist/polymarket.mjs +2 -3
- package/dist/server.cjs +96 -0
- package/dist/server.d.cts +65 -0
- package/dist/server.d.ts +65 -0
- package/dist/server.mjs +96 -0
- package/dist/styles.css +263 -12
- package/dist/types-C0SGf-21.d.cts +606 -0
- package/dist/types-C0SGf-21.d.ts +606 -0
- package/dist/withdraw.cjs +6 -5
- package/dist/withdraw.d.cts +3 -6
- package/dist/withdraw.d.ts +3 -6
- package/dist/withdraw.mjs +5 -4
- package/package.json +53 -6
- package/dist/DepositModalReown-4BSHOQ5Y.mjs +0 -63
- package/dist/DepositModalReown-UND3DEJH.cjs +0 -63
- package/dist/WithdrawModalReown-FVXSSGY5.mjs +0 -46
- package/dist/WithdrawModalReown-TVZWJKQI.cjs +0 -46
- package/dist/chunk-7OKA6GNA.cjs +0 -4537
- package/dist/chunk-NASHLEVQ.mjs +0 -4537
- package/dist/chunk-O5OKA27M.mjs +0 -800
- package/dist/chunk-U7SVYWVD.cjs +0 -800
- package/dist/chunk-WK5AFRSP.mjs +0 -295
- package/dist/chunk-XRWQMIBY.cjs +0 -295
- package/dist/types--LQWg_4W.d.cts +0 -468
- package/dist/types--LQWg_4W.d.ts +0 -468
|
@@ -0,0 +1,801 @@
|
|
|
1
|
+
// src/core/caip.ts
|
|
2
|
+
var SOLANA_MAINNET_GENESIS = "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
3
|
+
var SOLANA_MAINNET_CAIP2 = `solana:${SOLANA_MAINNET_GENESIS}`;
|
|
4
|
+
function toEvmCaip2(chainId) {
|
|
5
|
+
return `eip155:${chainId}`;
|
|
6
|
+
}
|
|
7
|
+
function targetChainToCaip2(targetChain) {
|
|
8
|
+
if (targetChain === "solana") return SOLANA_MAINNET_CAIP2;
|
|
9
|
+
if (targetChain === HYPERCORE_CHAIN_ID) return HYPERCORE_MAINNET_CAIP2;
|
|
10
|
+
return toEvmCaip2(targetChain);
|
|
11
|
+
}
|
|
12
|
+
function parseEvmChainId(value) {
|
|
13
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
if (typeof value !== "string") return null;
|
|
17
|
+
const match = value.match(/^eip155:(\d+)$/);
|
|
18
|
+
if (!match?.[1]) return null;
|
|
19
|
+
const parsed = Number.parseInt(match[1], 10);
|
|
20
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
21
|
+
}
|
|
22
|
+
function isSolanaCaip2(value) {
|
|
23
|
+
return typeof value === "string" && value.startsWith("solana:");
|
|
24
|
+
}
|
|
25
|
+
function isHyperCoreCaip2(value) {
|
|
26
|
+
return typeof value === "string" && value.startsWith("hypercore:");
|
|
27
|
+
}
|
|
28
|
+
var HYPERCORE_CHAIN_ID = 1337;
|
|
29
|
+
var HYPERCORE_MAINNET_CAIP2 = "hypercore:mainnet";
|
|
30
|
+
var HYPERCORE_USDC_ADDRESS = "0xb88339CB7199b77E23DB6E890353E22632Ba630f";
|
|
31
|
+
var HYPERCORE_USDT0_ADDRESS = "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb";
|
|
32
|
+
var HYPERCORE_SOURCE_TOKENS = [
|
|
33
|
+
{ symbol: "USDC", address: HYPERCORE_USDC_ADDRESS, decimals: 6 },
|
|
34
|
+
{ symbol: "USDT0", address: HYPERCORE_USDT0_ADDRESS, decimals: 6 }
|
|
35
|
+
];
|
|
36
|
+
var HYPERCORE_MIN_DEPOSIT_USD = 1;
|
|
37
|
+
function isVirtualDestination(targetChain) {
|
|
38
|
+
return targetChain === "solana" || targetChain === HYPERCORE_CHAIN_ID;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// src/core/solana-tokens.ts
|
|
42
|
+
var SOLANA_TOKENS = [
|
|
43
|
+
{ symbol: "SOL", mint: "native", decimals: 9 },
|
|
44
|
+
{
|
|
45
|
+
symbol: "USDC",
|
|
46
|
+
mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
|
|
47
|
+
decimals: 6
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
symbol: "USDT",
|
|
51
|
+
mint: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
|
|
52
|
+
decimals: 6
|
|
53
|
+
}
|
|
54
|
+
];
|
|
55
|
+
function getSolanaTokenBySymbol(symbol) {
|
|
56
|
+
return SOLANA_TOKENS.find(
|
|
57
|
+
(t) => t.symbol.toUpperCase() === symbol.toUpperCase()
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
function getSolanaTokenByMint(mint) {
|
|
61
|
+
return SOLANA_TOKENS.find((t) => t.mint === mint);
|
|
62
|
+
}
|
|
63
|
+
function isNativeSol(token) {
|
|
64
|
+
return token.mint === "native";
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// src/core/icons.ts
|
|
68
|
+
import {
|
|
69
|
+
arbitrum,
|
|
70
|
+
base,
|
|
71
|
+
bsc,
|
|
72
|
+
gnosis,
|
|
73
|
+
hyperliquid,
|
|
74
|
+
katana,
|
|
75
|
+
mainnet,
|
|
76
|
+
monad,
|
|
77
|
+
optimism,
|
|
78
|
+
plasma,
|
|
79
|
+
polygon,
|
|
80
|
+
sonic,
|
|
81
|
+
soneium,
|
|
82
|
+
unichain
|
|
83
|
+
} from "viem/chains";
|
|
84
|
+
var ICON_CDN = "https://s3.rhinestone.dev";
|
|
85
|
+
var CHAIN_ICON_SLUGS = {
|
|
86
|
+
[mainnet.id]: "mainnet",
|
|
87
|
+
[optimism.id]: "optimism",
|
|
88
|
+
[base.id]: "base",
|
|
89
|
+
[arbitrum.id]: "arbitrum",
|
|
90
|
+
[polygon.id]: "polygon",
|
|
91
|
+
[bsc.id]: "bsc",
|
|
92
|
+
[sonic.id]: "sonic",
|
|
93
|
+
[soneium.id]: "soneium",
|
|
94
|
+
[plasma.id]: "plasma",
|
|
95
|
+
[gnosis.id]: "gnosis",
|
|
96
|
+
[hyperliquid.id]: "hypeevm",
|
|
97
|
+
[monad.id]: "monad",
|
|
98
|
+
[unichain.id]: "unichain",
|
|
99
|
+
[katana.id]: "katana"
|
|
100
|
+
};
|
|
101
|
+
function cdnIconUrl(dir, slug) {
|
|
102
|
+
return `${ICON_CDN}/${dir}/${slug}.svg`;
|
|
103
|
+
}
|
|
104
|
+
var CHAIN_ICONS = Object.fromEntries(
|
|
105
|
+
Object.entries(CHAIN_ICON_SLUGS).map(([id, slug]) => [
|
|
106
|
+
Number(id),
|
|
107
|
+
cdnIconUrl("chains", slug)
|
|
108
|
+
])
|
|
109
|
+
);
|
|
110
|
+
var SOLANA_CHAIN_ICON = cdnIconUrl("chains", "solana");
|
|
111
|
+
function getChainIcon(chainId) {
|
|
112
|
+
if (chainId === "solana") return SOLANA_CHAIN_ICON;
|
|
113
|
+
if (chainId === "hypercore" || chainId === HYPERCORE_CHAIN_ID) {
|
|
114
|
+
return CHAIN_ICONS[hyperliquid.id];
|
|
115
|
+
}
|
|
116
|
+
return CHAIN_ICONS[chainId];
|
|
117
|
+
}
|
|
118
|
+
var ICON_SLUG_ALIASES = {
|
|
119
|
+
"usdc.e": "usdc",
|
|
120
|
+
wsol: "sol",
|
|
121
|
+
xdai: "dai"
|
|
122
|
+
};
|
|
123
|
+
function tokenIconUrl(symbol) {
|
|
124
|
+
const key = symbol.toLowerCase().replace(/₮/g, "t");
|
|
125
|
+
const slug = ICON_SLUG_ALIASES[key] ?? key;
|
|
126
|
+
return `https://s3.rhinestone.dev/tokens/${slug}.svg`;
|
|
127
|
+
}
|
|
128
|
+
function getTokenIcon(symbol) {
|
|
129
|
+
return tokenIconUrl(symbol);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// src/core/constants.ts
|
|
133
|
+
import {
|
|
134
|
+
arbitrum as arbitrum2,
|
|
135
|
+
base as base2,
|
|
136
|
+
bsc as bsc2,
|
|
137
|
+
gnosis as gnosis2,
|
|
138
|
+
hyperliquid as hyperliquid2,
|
|
139
|
+
katana as katana2,
|
|
140
|
+
mainnet as mainnet2,
|
|
141
|
+
monad as monad2,
|
|
142
|
+
optimism as optimism2,
|
|
143
|
+
plasma as plasma2,
|
|
144
|
+
polygon as polygon2,
|
|
145
|
+
sonic as sonic2,
|
|
146
|
+
soneium as soneium2,
|
|
147
|
+
unichain as unichain2
|
|
148
|
+
} from "viem/chains";
|
|
149
|
+
var NATIVE_TOKEN_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
150
|
+
var ALL_CHAINS_BY_ID = {
|
|
151
|
+
[mainnet2.id]: mainnet2,
|
|
152
|
+
[base2.id]: base2,
|
|
153
|
+
[optimism2.id]: optimism2,
|
|
154
|
+
[arbitrum2.id]: arbitrum2,
|
|
155
|
+
[polygon2.id]: polygon2,
|
|
156
|
+
[bsc2.id]: bsc2,
|
|
157
|
+
[plasma2.id]: plasma2,
|
|
158
|
+
[soneium2.id]: soneium2,
|
|
159
|
+
[gnosis2.id]: gnosis2,
|
|
160
|
+
[sonic2.id]: sonic2,
|
|
161
|
+
[monad2.id]: monad2,
|
|
162
|
+
[unichain2.id]: unichain2,
|
|
163
|
+
[katana2.id]: katana2,
|
|
164
|
+
[hyperliquid2.id]: hyperliquid2
|
|
165
|
+
};
|
|
166
|
+
var SUPPORTED_TOKEN_MATRIX = {
|
|
167
|
+
ETH: [
|
|
168
|
+
mainnet2.id,
|
|
169
|
+
base2.id,
|
|
170
|
+
arbitrum2.id,
|
|
171
|
+
optimism2.id,
|
|
172
|
+
soneium2.id,
|
|
173
|
+
unichain2.id,
|
|
174
|
+
katana2.id
|
|
175
|
+
],
|
|
176
|
+
// Polygon's native gas token is POL, not ETH (address 0x0 on 137 is POL).
|
|
177
|
+
POL: [polygon2.id],
|
|
178
|
+
WETH: [
|
|
179
|
+
mainnet2.id,
|
|
180
|
+
base2.id,
|
|
181
|
+
arbitrum2.id,
|
|
182
|
+
optimism2.id,
|
|
183
|
+
polygon2.id,
|
|
184
|
+
soneium2.id,
|
|
185
|
+
unichain2.id,
|
|
186
|
+
katana2.id
|
|
187
|
+
],
|
|
188
|
+
USDC: [
|
|
189
|
+
mainnet2.id,
|
|
190
|
+
base2.id,
|
|
191
|
+
arbitrum2.id,
|
|
192
|
+
optimism2.id,
|
|
193
|
+
polygon2.id,
|
|
194
|
+
soneium2.id,
|
|
195
|
+
gnosis2.id,
|
|
196
|
+
sonic2.id,
|
|
197
|
+
monad2.id,
|
|
198
|
+
unichain2.id,
|
|
199
|
+
katana2.id,
|
|
200
|
+
hyperliquid2.id
|
|
201
|
+
],
|
|
202
|
+
USDT: [mainnet2.id, bsc2.id, soneium2.id, katana2.id],
|
|
203
|
+
USDT0: [arbitrum2.id, optimism2.id, polygon2.id, plasma2.id, monad2.id, unichain2.id]
|
|
204
|
+
};
|
|
205
|
+
var CHAIN_DISPLAY_ORDER = [
|
|
206
|
+
mainnet2.id,
|
|
207
|
+
base2.id,
|
|
208
|
+
arbitrum2.id,
|
|
209
|
+
optimism2.id,
|
|
210
|
+
polygon2.id,
|
|
211
|
+
bsc2.id,
|
|
212
|
+
plasma2.id,
|
|
213
|
+
soneium2.id,
|
|
214
|
+
gnosis2.id,
|
|
215
|
+
sonic2.id,
|
|
216
|
+
monad2.id,
|
|
217
|
+
unichain2.id,
|
|
218
|
+
katana2.id,
|
|
219
|
+
hyperliquid2.id
|
|
220
|
+
];
|
|
221
|
+
var supportedChainSet = /* @__PURE__ */ new Set();
|
|
222
|
+
for (const chainIds of Object.values(SUPPORTED_TOKEN_MATRIX)) {
|
|
223
|
+
for (const chainId of chainIds) {
|
|
224
|
+
supportedChainSet.add(chainId);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
var SUPPORTED_CHAIN_IDS = CHAIN_DISPLAY_ORDER.filter(
|
|
228
|
+
(chainId) => supportedChainSet.has(chainId) && Boolean(ALL_CHAINS_BY_ID[chainId])
|
|
229
|
+
);
|
|
230
|
+
var CHAIN_BY_ID = Object.fromEntries(
|
|
231
|
+
SUPPORTED_CHAIN_IDS.map((id) => [id, ALL_CHAINS_BY_ID[id]])
|
|
232
|
+
);
|
|
233
|
+
var SOURCE_CHAINS = SUPPORTED_CHAIN_IDS.map(
|
|
234
|
+
(id) => CHAIN_BY_ID[id]
|
|
235
|
+
);
|
|
236
|
+
var SUPPORTED_CHAINS = SOURCE_CHAINS;
|
|
237
|
+
var SUPPORTED_TOKENS_BY_CHAIN = Object.fromEntries(
|
|
238
|
+
SUPPORTED_CHAIN_IDS.map((chainId) => {
|
|
239
|
+
const symbols = Object.entries(SUPPORTED_TOKEN_MATRIX).filter(([, chainIds]) => chainIds.includes(chainId)).map(([symbol]) => symbol);
|
|
240
|
+
return [chainId, symbols];
|
|
241
|
+
})
|
|
242
|
+
);
|
|
243
|
+
var chainRegistry = {
|
|
244
|
+
[mainnet2.id]: {
|
|
245
|
+
name: mainnet2.name,
|
|
246
|
+
tokens: [
|
|
247
|
+
{ symbol: "ETH", address: NATIVE_TOKEN_ADDRESS, decimals: 18 },
|
|
248
|
+
{
|
|
249
|
+
symbol: "USDC",
|
|
250
|
+
address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
251
|
+
decimals: 6
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
symbol: "WETH",
|
|
255
|
+
address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
256
|
+
decimals: 18
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
symbol: "USDT",
|
|
260
|
+
address: "0xdac17f958d2ee523a2206206994597c13d831ec7",
|
|
261
|
+
decimals: 6
|
|
262
|
+
}
|
|
263
|
+
]
|
|
264
|
+
},
|
|
265
|
+
[hyperliquid2.id]: {
|
|
266
|
+
name: "HyperEVM",
|
|
267
|
+
tokens: [
|
|
268
|
+
{ symbol: "HYPE", address: NATIVE_TOKEN_ADDRESS, decimals: 18 },
|
|
269
|
+
{
|
|
270
|
+
symbol: "USDC",
|
|
271
|
+
address: HYPERCORE_USDC_ADDRESS,
|
|
272
|
+
decimals: 6
|
|
273
|
+
}
|
|
274
|
+
]
|
|
275
|
+
},
|
|
276
|
+
[base2.id]: {
|
|
277
|
+
name: base2.name,
|
|
278
|
+
tokens: [
|
|
279
|
+
{ symbol: "ETH", address: NATIVE_TOKEN_ADDRESS, decimals: 18 },
|
|
280
|
+
{
|
|
281
|
+
symbol: "USDC",
|
|
282
|
+
address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
283
|
+
decimals: 6
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
symbol: "WETH",
|
|
287
|
+
address: "0x4200000000000000000000000000000000000006",
|
|
288
|
+
decimals: 18
|
|
289
|
+
}
|
|
290
|
+
]
|
|
291
|
+
},
|
|
292
|
+
[arbitrum2.id]: {
|
|
293
|
+
name: arbitrum2.name,
|
|
294
|
+
tokens: [
|
|
295
|
+
{ symbol: "ETH", address: NATIVE_TOKEN_ADDRESS, decimals: 18 },
|
|
296
|
+
{
|
|
297
|
+
symbol: "USDC",
|
|
298
|
+
address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
299
|
+
decimals: 6
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
symbol: "WETH",
|
|
303
|
+
address: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
|
|
304
|
+
decimals: 18
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
symbol: "USDT0",
|
|
308
|
+
address: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",
|
|
309
|
+
decimals: 6
|
|
310
|
+
}
|
|
311
|
+
]
|
|
312
|
+
},
|
|
313
|
+
[optimism2.id]: {
|
|
314
|
+
name: optimism2.name,
|
|
315
|
+
tokens: [
|
|
316
|
+
{ symbol: "ETH", address: NATIVE_TOKEN_ADDRESS, decimals: 18 },
|
|
317
|
+
{
|
|
318
|
+
symbol: "USDC",
|
|
319
|
+
address: "0x0b2c639c533813f4aa9d7837caf62653d097ff85",
|
|
320
|
+
decimals: 6
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
symbol: "WETH",
|
|
324
|
+
address: "0x4200000000000000000000000000000000000006",
|
|
325
|
+
decimals: 18
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
symbol: "USDT0",
|
|
329
|
+
address: "0x01bFF41798a0BcF287b996046Ca68b395DbC1071",
|
|
330
|
+
decimals: 6
|
|
331
|
+
}
|
|
332
|
+
]
|
|
333
|
+
},
|
|
334
|
+
[polygon2.id]: {
|
|
335
|
+
name: polygon2.name,
|
|
336
|
+
tokens: [
|
|
337
|
+
// Polygon's native gas token is POL (0x0 on 137), not ETH.
|
|
338
|
+
{ symbol: "POL", address: NATIVE_TOKEN_ADDRESS, decimals: 18 },
|
|
339
|
+
{
|
|
340
|
+
symbol: "USDC",
|
|
341
|
+
address: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
|
|
342
|
+
decimals: 6
|
|
343
|
+
},
|
|
344
|
+
// Bridged USDC.e — what Polymarket withdrawals arrive as. Mapped to the
|
|
345
|
+
// USDC symbol/icon for display and 6 decimals so history rows resolve
|
|
346
|
+
// correctly. Listed after native USDC so symbol→address lookups (and
|
|
347
|
+
// the selectable token list, which is driven separately by
|
|
348
|
+
// SUPPORTED_TOKENS_BY_CHAIN) keep resolving USDC to the native address.
|
|
349
|
+
{
|
|
350
|
+
symbol: "USDC",
|
|
351
|
+
address: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174",
|
|
352
|
+
decimals: 6
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
symbol: "WETH",
|
|
356
|
+
address: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
|
|
357
|
+
decimals: 18
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
symbol: "USDT0",
|
|
361
|
+
address: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f",
|
|
362
|
+
decimals: 6
|
|
363
|
+
}
|
|
364
|
+
]
|
|
365
|
+
},
|
|
366
|
+
[bsc2.id]: {
|
|
367
|
+
name: bsc2.name,
|
|
368
|
+
tokens: [
|
|
369
|
+
{
|
|
370
|
+
symbol: "USDC",
|
|
371
|
+
address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",
|
|
372
|
+
decimals: 18
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
symbol: "WETH",
|
|
376
|
+
address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8",
|
|
377
|
+
decimals: 18
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
symbol: "USDT",
|
|
381
|
+
address: "0x55d398326f99059fF775485246999027B3197955",
|
|
382
|
+
decimals: 18
|
|
383
|
+
}
|
|
384
|
+
]
|
|
385
|
+
},
|
|
386
|
+
[plasma2.id]: {
|
|
387
|
+
name: plasma2.name,
|
|
388
|
+
tokens: [
|
|
389
|
+
{
|
|
390
|
+
symbol: "USDT0",
|
|
391
|
+
address: "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb",
|
|
392
|
+
decimals: 6
|
|
393
|
+
}
|
|
394
|
+
]
|
|
395
|
+
},
|
|
396
|
+
[soneium2.id]: {
|
|
397
|
+
name: soneium2.name,
|
|
398
|
+
tokens: [
|
|
399
|
+
{ symbol: "ETH", address: NATIVE_TOKEN_ADDRESS, decimals: 18 },
|
|
400
|
+
{
|
|
401
|
+
symbol: "USDC",
|
|
402
|
+
address: "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369",
|
|
403
|
+
decimals: 6
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
symbol: "WETH",
|
|
407
|
+
address: "0x4200000000000000000000000000000000000006",
|
|
408
|
+
decimals: 18
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
symbol: "USDT",
|
|
412
|
+
address: "0x3A337a6adA9d885b6Ad95ec48F9b75f197b5AE35",
|
|
413
|
+
decimals: 6
|
|
414
|
+
}
|
|
415
|
+
]
|
|
416
|
+
},
|
|
417
|
+
[gnosis2.id]: {
|
|
418
|
+
name: gnosis2.name,
|
|
419
|
+
tokens: [
|
|
420
|
+
{
|
|
421
|
+
symbol: "USDC",
|
|
422
|
+
address: "0x2a22f9c3b484c3629090feed35f17ff8f88f76f0",
|
|
423
|
+
decimals: 6
|
|
424
|
+
}
|
|
425
|
+
]
|
|
426
|
+
},
|
|
427
|
+
[sonic2.id]: {
|
|
428
|
+
name: sonic2.name,
|
|
429
|
+
tokens: [
|
|
430
|
+
{
|
|
431
|
+
symbol: "USDC",
|
|
432
|
+
address: "0x29219dd400f2Bf60E5a23d13Be72B486D4038894",
|
|
433
|
+
decimals: 6
|
|
434
|
+
}
|
|
435
|
+
]
|
|
436
|
+
},
|
|
437
|
+
[monad2.id]: {
|
|
438
|
+
name: monad2.name,
|
|
439
|
+
tokens: [
|
|
440
|
+
{
|
|
441
|
+
symbol: "USDC",
|
|
442
|
+
address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603",
|
|
443
|
+
decimals: 6
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
symbol: "USDT0",
|
|
447
|
+
address: "0xe7cd86e13AC4309349F30B3435a9d337750fC82D",
|
|
448
|
+
decimals: 6
|
|
449
|
+
}
|
|
450
|
+
]
|
|
451
|
+
},
|
|
452
|
+
[unichain2.id]: {
|
|
453
|
+
name: unichain2.name,
|
|
454
|
+
tokens: [
|
|
455
|
+
{ symbol: "ETH", address: NATIVE_TOKEN_ADDRESS, decimals: 18 },
|
|
456
|
+
{
|
|
457
|
+
symbol: "USDC",
|
|
458
|
+
address: "0x078d782b760474a361dda0af3839290b0ef57ad6",
|
|
459
|
+
decimals: 6
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
symbol: "WETH",
|
|
463
|
+
address: "0x4200000000000000000000000000000000000006",
|
|
464
|
+
decimals: 18
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
symbol: "USDT0",
|
|
468
|
+
address: "0x9151434b16b9763660705744891fA906F660EcC5",
|
|
469
|
+
decimals: 6
|
|
470
|
+
}
|
|
471
|
+
]
|
|
472
|
+
},
|
|
473
|
+
[katana2.id]: {
|
|
474
|
+
name: katana2.name,
|
|
475
|
+
tokens: [
|
|
476
|
+
{ symbol: "ETH", address: NATIVE_TOKEN_ADDRESS, decimals: 18 },
|
|
477
|
+
{
|
|
478
|
+
symbol: "USDC",
|
|
479
|
+
address: "0x203a662b0bd271a6ed5a60edfbd04bfce608fd36",
|
|
480
|
+
decimals: 6
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
symbol: "USDT",
|
|
484
|
+
address: "0x2dca96907fde857dd3d816880a0df407eeb2d2f2",
|
|
485
|
+
decimals: 6
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
symbol: "WETH",
|
|
489
|
+
address: "0xEE7D8BCFb72bC1880D0Cf19822eB0A2e6577aB62",
|
|
490
|
+
decimals: 18
|
|
491
|
+
}
|
|
492
|
+
]
|
|
493
|
+
},
|
|
494
|
+
// HyperCore (virtual chain 1337) is a USDC-only deposit *destination*. It has
|
|
495
|
+
// no viem chain / RPC, so it lives only here for name + token resolution —
|
|
496
|
+
// deliberately absent from the source-chain matrices above.
|
|
497
|
+
[HYPERCORE_CHAIN_ID]: {
|
|
498
|
+
name: "HyperCore",
|
|
499
|
+
// Destination truth: HyperCore delivery is USDC-only. The source path accepts
|
|
500
|
+
// USDT0 too, but that lives in HYPERCORE_SOURCE_TOKENS (caip.ts) so it can't
|
|
501
|
+
// leak into destination registration/display via this shared registry.
|
|
502
|
+
tokens: [{ symbol: "USDC", address: HYPERCORE_USDC_ADDRESS, decimals: 6 }]
|
|
503
|
+
}
|
|
504
|
+
};
|
|
505
|
+
function getChainId(chain) {
|
|
506
|
+
return typeof chain === "number" ? chain : chain.id;
|
|
507
|
+
}
|
|
508
|
+
function getChainObject(chain) {
|
|
509
|
+
if (typeof chain === "number") {
|
|
510
|
+
return CHAIN_BY_ID[chain];
|
|
511
|
+
}
|
|
512
|
+
return chain;
|
|
513
|
+
}
|
|
514
|
+
function normalizeTokenSymbol(symbol) {
|
|
515
|
+
const trimmed = symbol.trim();
|
|
516
|
+
const wrapped = trimmed.match(/\(([^)]+)\)/);
|
|
517
|
+
if (wrapped?.[1]) {
|
|
518
|
+
return wrapped[1].trim().toUpperCase();
|
|
519
|
+
}
|
|
520
|
+
return trimmed.toUpperCase();
|
|
521
|
+
}
|
|
522
|
+
function isSymbolSupportedOnChain(symbol, chainId) {
|
|
523
|
+
const symbols = SUPPORTED_TOKENS_BY_CHAIN[chainId];
|
|
524
|
+
if (!symbols) return false;
|
|
525
|
+
return symbols.includes(normalizeTokenSymbol(symbol));
|
|
526
|
+
}
|
|
527
|
+
function getTokenFromRegistry(chainId, symbol) {
|
|
528
|
+
const chainEntry = chainRegistry[String(chainId)];
|
|
529
|
+
if (!chainEntry) return void 0;
|
|
530
|
+
const normalized = normalizeTokenSymbol(symbol);
|
|
531
|
+
const token = chainEntry.tokens.find(
|
|
532
|
+
(t) => t.symbol.toUpperCase() === normalized
|
|
533
|
+
);
|
|
534
|
+
if (token) {
|
|
535
|
+
return { address: token.address, decimals: token.decimals };
|
|
536
|
+
}
|
|
537
|
+
return void 0;
|
|
538
|
+
}
|
|
539
|
+
function getUsdcAddress(chainId) {
|
|
540
|
+
const token = getTokenFromRegistry(chainId, "USDC");
|
|
541
|
+
return token?.address;
|
|
542
|
+
}
|
|
543
|
+
function getUsdcDecimals(chainId) {
|
|
544
|
+
const token = getTokenFromRegistry(chainId, "USDC");
|
|
545
|
+
return token?.decimals ?? 6;
|
|
546
|
+
}
|
|
547
|
+
function getTokenAddress(symbol, chainId) {
|
|
548
|
+
if (symbol.toUpperCase() === "ETH") {
|
|
549
|
+
if (!isSymbolSupportedOnChain("ETH", chainId)) {
|
|
550
|
+
return void 0;
|
|
551
|
+
}
|
|
552
|
+
return NATIVE_TOKEN_ADDRESS;
|
|
553
|
+
}
|
|
554
|
+
if (!isSymbolSupportedOnChain(symbol, chainId)) {
|
|
555
|
+
return void 0;
|
|
556
|
+
}
|
|
557
|
+
const token = getTokenFromRegistry(chainId, symbol);
|
|
558
|
+
return token?.address;
|
|
559
|
+
}
|
|
560
|
+
function getTokenDecimals(symbol, chainId) {
|
|
561
|
+
if (symbol.toUpperCase() === "ETH") {
|
|
562
|
+
return 18;
|
|
563
|
+
}
|
|
564
|
+
const token = getTokenFromRegistry(chainId, symbol);
|
|
565
|
+
return token?.decimals ?? 18;
|
|
566
|
+
}
|
|
567
|
+
function getTargetTokenSymbolsForChain(chainId) {
|
|
568
|
+
const symbols = SUPPORTED_TOKENS_BY_CHAIN[chainId] ?? [];
|
|
569
|
+
return [...symbols];
|
|
570
|
+
}
|
|
571
|
+
function getSupportedTokenSymbolsForChain(chainId) {
|
|
572
|
+
return getTargetTokenSymbolsForChain(chainId);
|
|
573
|
+
}
|
|
574
|
+
function getSupportedChainIds() {
|
|
575
|
+
return [...SUPPORTED_CHAIN_IDS];
|
|
576
|
+
}
|
|
577
|
+
function isSupportedTokenAddressForChain(token, chainId) {
|
|
578
|
+
const normalized = token.toLowerCase();
|
|
579
|
+
if (normalized === NATIVE_TOKEN_ADDRESS) {
|
|
580
|
+
return Boolean(SUPPORTED_TOKENS_BY_CHAIN[chainId]);
|
|
581
|
+
}
|
|
582
|
+
const symbol = getTokenSymbol(token, chainId);
|
|
583
|
+
if (!symbol || symbol === "Token") return false;
|
|
584
|
+
if (!isSymbolSupportedOnChain(symbol, chainId)) return false;
|
|
585
|
+
const expected = getTokenFromRegistry(chainId, symbol);
|
|
586
|
+
if (!expected) return false;
|
|
587
|
+
return expected.address.toLowerCase() === normalized;
|
|
588
|
+
}
|
|
589
|
+
function getSupportedTargetTokens(chainId) {
|
|
590
|
+
const symbols = getSupportedTokenSymbolsForChain(chainId);
|
|
591
|
+
const options = [];
|
|
592
|
+
for (const symbol of symbols) {
|
|
593
|
+
const address = getTokenAddress(symbol, chainId);
|
|
594
|
+
if (!address) continue;
|
|
595
|
+
options.push({
|
|
596
|
+
symbol,
|
|
597
|
+
address,
|
|
598
|
+
decimals: getTokenDecimals(symbol, chainId)
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
return options;
|
|
602
|
+
}
|
|
603
|
+
function findTokenDecimals(token, chainId) {
|
|
604
|
+
const normalized = token.toLowerCase();
|
|
605
|
+
if (normalized === NATIVE_TOKEN_ADDRESS) {
|
|
606
|
+
return 18;
|
|
607
|
+
}
|
|
608
|
+
if (chainId) {
|
|
609
|
+
const chainEntry = chainRegistry[String(chainId)];
|
|
610
|
+
if (chainEntry) {
|
|
611
|
+
const found = chainEntry.tokens.find(
|
|
612
|
+
(t) => t.address.toLowerCase() === normalized
|
|
613
|
+
);
|
|
614
|
+
if (found) return found.decimals;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
for (const chainEntry of Object.values(chainRegistry)) {
|
|
618
|
+
const found = chainEntry.tokens.find(
|
|
619
|
+
(t) => t.address.toLowerCase() === normalized
|
|
620
|
+
);
|
|
621
|
+
if (found) return found.decimals;
|
|
622
|
+
}
|
|
623
|
+
return void 0;
|
|
624
|
+
}
|
|
625
|
+
function getTokenDecimalsByAddress(token, chainId) {
|
|
626
|
+
return findTokenDecimals(token, chainId) ?? 18;
|
|
627
|
+
}
|
|
628
|
+
function findChainIdForToken(address) {
|
|
629
|
+
const normalized = address.toLowerCase();
|
|
630
|
+
for (const [chainIdStr, chainEntry] of Object.entries(chainRegistry)) {
|
|
631
|
+
for (const token of chainEntry.tokens) {
|
|
632
|
+
if (token.address.toLowerCase() === normalized) {
|
|
633
|
+
return Number(chainIdStr);
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
return void 0;
|
|
638
|
+
}
|
|
639
|
+
function isRegistryTokenOnChain(token, chainId) {
|
|
640
|
+
const normalized = token.toLowerCase();
|
|
641
|
+
if (normalized === NATIVE_TOKEN_ADDRESS) return true;
|
|
642
|
+
const chainEntry = chainRegistry[String(chainId)];
|
|
643
|
+
return chainEntry ? chainEntry.tokens.some((t) => t.address.toLowerCase() === normalized) : false;
|
|
644
|
+
}
|
|
645
|
+
var NATIVE_SYMBOL_BY_CHAIN = {
|
|
646
|
+
[bsc2.id]: "BNB",
|
|
647
|
+
[plasma2.id]: "XPL",
|
|
648
|
+
[polygon2.id]: "POL",
|
|
649
|
+
[gnosis2.id]: "XDAI",
|
|
650
|
+
[sonic2.id]: "S",
|
|
651
|
+
[monad2.id]: "MON",
|
|
652
|
+
[hyperliquid2.id]: "HYPE"
|
|
653
|
+
};
|
|
654
|
+
function getNativeSymbol(chainId) {
|
|
655
|
+
return chainId != null && NATIVE_SYMBOL_BY_CHAIN[chainId] || "ETH";
|
|
656
|
+
}
|
|
657
|
+
function getTokenSymbol(token, chainId) {
|
|
658
|
+
const normalized = token.toLowerCase();
|
|
659
|
+
if (normalized === NATIVE_TOKEN_ADDRESS) {
|
|
660
|
+
return getNativeSymbol(chainId);
|
|
661
|
+
}
|
|
662
|
+
if (chainId) {
|
|
663
|
+
const chainEntry = chainRegistry[String(chainId)];
|
|
664
|
+
if (chainEntry) {
|
|
665
|
+
const found = chainEntry.tokens.find(
|
|
666
|
+
(t) => t.address.toLowerCase() === normalized
|
|
667
|
+
);
|
|
668
|
+
if (found) return found.symbol;
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
for (const chainEntry of Object.values(chainRegistry)) {
|
|
672
|
+
const found = chainEntry.tokens.find(
|
|
673
|
+
(t) => t.address.toLowerCase() === normalized
|
|
674
|
+
);
|
|
675
|
+
if (found) return found.symbol;
|
|
676
|
+
}
|
|
677
|
+
return "Token";
|
|
678
|
+
}
|
|
679
|
+
function getTargetTokenSymbol(token, chain) {
|
|
680
|
+
if (chain === "solana") {
|
|
681
|
+
return getSolanaTokenByMint(String(token))?.symbol ?? "Token";
|
|
682
|
+
}
|
|
683
|
+
return getTokenSymbol(token, chain);
|
|
684
|
+
}
|
|
685
|
+
function isStablecoinSymbol(symbol) {
|
|
686
|
+
return /^(usdc|usdt|usdt0|dai|usd)$/i.test(symbol);
|
|
687
|
+
}
|
|
688
|
+
var CHAIN_BADGES = {
|
|
689
|
+
[mainnet2.id]: { shortLabel: "ETH", color: "#627EEA", bg: "#EEF2FF" },
|
|
690
|
+
[base2.id]: { shortLabel: "Base", color: "#0052FF", bg: "#E7F0FF" },
|
|
691
|
+
[optimism2.id]: { shortLabel: "OP", color: "#FF0420", bg: "#FFE9EC" },
|
|
692
|
+
[arbitrum2.id]: { shortLabel: "Arb", color: "#28A0F0", bg: "#E6F6FF" },
|
|
693
|
+
[polygon2.id]: { shortLabel: "Matic", color: "#8247E5", bg: "#EFE7FF" },
|
|
694
|
+
[bsc2.id]: { shortLabel: "BSC", color: "#F3BA2F", bg: "#FFF8E0" },
|
|
695
|
+
[plasma2.id]: { shortLabel: "Plasma", color: "#6C47FF", bg: "#EDE7FF" },
|
|
696
|
+
[soneium2.id]: { shortLabel: "Soneium", color: "#0D0D0D", bg: "#E8E8E8" },
|
|
697
|
+
[sonic2.id]: { shortLabel: "Sonic", color: "#5B6DEF", bg: "#EDEFFE" },
|
|
698
|
+
[gnosis2.id]: { shortLabel: "Gnosis", color: "#3E6957", bg: "#E5F0EB" },
|
|
699
|
+
[hyperliquid2.id]: { shortLabel: "Hyper", color: "#5BE7C4", bg: "#E5FFF8" },
|
|
700
|
+
[monad2.id]: { shortLabel: "Monad", color: "#6E54FF", bg: "#EEEBFF" },
|
|
701
|
+
[unichain2.id]: { shortLabel: "Uni", color: "#F50DB4", bg: "#FFE5F5" },
|
|
702
|
+
[katana2.id]: { shortLabel: "Katana", color: "#0441B2", bg: "#E5EEFC" },
|
|
703
|
+
[HYPERCORE_CHAIN_ID]: {
|
|
704
|
+
shortLabel: "HyperCore",
|
|
705
|
+
color: "#5BE7C4",
|
|
706
|
+
bg: "#E5FFF8"
|
|
707
|
+
}
|
|
708
|
+
};
|
|
709
|
+
function resolveDisplayChainId(chainId) {
|
|
710
|
+
return chainId === "hypercore" ? HYPERCORE_CHAIN_ID : chainId;
|
|
711
|
+
}
|
|
712
|
+
var HYPERCORE_EXPLORER_URL = "https://app.hyperliquid.xyz/explorer";
|
|
713
|
+
function getChainName(chainId) {
|
|
714
|
+
if (chainId === "solana") return "Solana";
|
|
715
|
+
const id = resolveDisplayChainId(chainId);
|
|
716
|
+
const chain = CHAIN_BY_ID[id];
|
|
717
|
+
if (chain) return chain.name;
|
|
718
|
+
const chainEntry = chainRegistry[String(id)];
|
|
719
|
+
if (chainEntry) return chainEntry.name;
|
|
720
|
+
return `Chain ${id}`;
|
|
721
|
+
}
|
|
722
|
+
function getChainBadge(chainId) {
|
|
723
|
+
if (chainId === "solana") {
|
|
724
|
+
return { shortLabel: "SOL", color: "#9945FF", bg: "#F3EEFF" };
|
|
725
|
+
}
|
|
726
|
+
return CHAIN_BADGES[resolveDisplayChainId(chainId)] || {
|
|
727
|
+
shortLabel: "Net",
|
|
728
|
+
color: "#64748B",
|
|
729
|
+
bg: "#F1F5F9"
|
|
730
|
+
};
|
|
731
|
+
}
|
|
732
|
+
function getExplorerUrl(chainId) {
|
|
733
|
+
if (chainId === "solana") return "https://solscan.io";
|
|
734
|
+
if (chainId === "hypercore") return HYPERCORE_EXPLORER_URL;
|
|
735
|
+
return CHAIN_BY_ID[chainId]?.blockExplorers?.default?.url;
|
|
736
|
+
}
|
|
737
|
+
function getExplorerTxUrl(chainId, txHash) {
|
|
738
|
+
if (chainId === "solana") return `https://solscan.io/tx/${txHash}`;
|
|
739
|
+
if (chainId === "hypercore" && !txHash.startsWith("0x")) return void 0;
|
|
740
|
+
const url = getExplorerUrl(chainId);
|
|
741
|
+
if (!url) return void 0;
|
|
742
|
+
return `${url}/tx/${txHash}`;
|
|
743
|
+
}
|
|
744
|
+
function getExplorerName(chainId) {
|
|
745
|
+
if (chainId === "solana") return "Solscan";
|
|
746
|
+
if (chainId === "hypercore") return "Hyperliquid Explorer";
|
|
747
|
+
return CHAIN_BY_ID[chainId]?.blockExplorers?.default?.name ?? "Explorer";
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
export {
|
|
751
|
+
toEvmCaip2,
|
|
752
|
+
targetChainToCaip2,
|
|
753
|
+
parseEvmChainId,
|
|
754
|
+
isSolanaCaip2,
|
|
755
|
+
isHyperCoreCaip2,
|
|
756
|
+
HYPERCORE_CHAIN_ID,
|
|
757
|
+
HYPERCORE_MAINNET_CAIP2,
|
|
758
|
+
HYPERCORE_USDC_ADDRESS,
|
|
759
|
+
HYPERCORE_USDT0_ADDRESS,
|
|
760
|
+
HYPERCORE_SOURCE_TOKENS,
|
|
761
|
+
HYPERCORE_MIN_DEPOSIT_USD,
|
|
762
|
+
isVirtualDestination,
|
|
763
|
+
SOLANA_TOKENS,
|
|
764
|
+
getSolanaTokenBySymbol,
|
|
765
|
+
getSolanaTokenByMint,
|
|
766
|
+
isNativeSol,
|
|
767
|
+
ICON_CDN,
|
|
768
|
+
cdnIconUrl,
|
|
769
|
+
getChainIcon,
|
|
770
|
+
tokenIconUrl,
|
|
771
|
+
getTokenIcon,
|
|
772
|
+
NATIVE_TOKEN_ADDRESS,
|
|
773
|
+
CHAIN_BY_ID,
|
|
774
|
+
SOURCE_CHAINS,
|
|
775
|
+
SUPPORTED_CHAINS,
|
|
776
|
+
chainRegistry,
|
|
777
|
+
getChainId,
|
|
778
|
+
getChainObject,
|
|
779
|
+
getUsdcAddress,
|
|
780
|
+
getUsdcDecimals,
|
|
781
|
+
getTokenAddress,
|
|
782
|
+
getTokenDecimals,
|
|
783
|
+
getTargetTokenSymbolsForChain,
|
|
784
|
+
getSupportedTokenSymbolsForChain,
|
|
785
|
+
getSupportedChainIds,
|
|
786
|
+
isSupportedTokenAddressForChain,
|
|
787
|
+
getSupportedTargetTokens,
|
|
788
|
+
findTokenDecimals,
|
|
789
|
+
getTokenDecimalsByAddress,
|
|
790
|
+
findChainIdForToken,
|
|
791
|
+
isRegistryTokenOnChain,
|
|
792
|
+
getNativeSymbol,
|
|
793
|
+
getTokenSymbol,
|
|
794
|
+
getTargetTokenSymbol,
|
|
795
|
+
isStablecoinSymbol,
|
|
796
|
+
getChainName,
|
|
797
|
+
getChainBadge,
|
|
798
|
+
getExplorerUrl,
|
|
799
|
+
getExplorerTxUrl,
|
|
800
|
+
getExplorerName
|
|
801
|
+
};
|