@imtbl/sdk 0.1.6 → 0.1.7-alpha.2

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.
@@ -0,0 +1,734 @@
1
+ import { utils, Contract } from 'ethers';
2
+ import $7v2Z6$metamaskdetectprovider from '@metamask/detect-provider';
3
+ import { Web3Provider } from '@ethersproject/providers';
4
+
5
+ var Environment;
6
+ (function (Environment) {
7
+ Environment["PRODUCTION"] = "production";
8
+ Environment["SANDBOX"] = "sandbox";
9
+ })(Environment || (Environment = {}));
10
+
11
+ function $parcel$interopDefault(a) {
12
+ return a && a.__esModule ? a.default : a;
13
+ }
14
+
15
+ const $762782b6c862d954$export$db5daa1b5156ccfe = [
16
+ {
17
+ constant: true,
18
+ inputs: [],
19
+ name: "name",
20
+ outputs: [
21
+ {
22
+ name: "",
23
+ type: "string"
24
+ }
25
+ ],
26
+ payable: false,
27
+ type: "function"
28
+ },
29
+ {
30
+ constant: true,
31
+ inputs: [],
32
+ name: "decimals",
33
+ outputs: [
34
+ {
35
+ name: "",
36
+ type: "uint8"
37
+ }
38
+ ],
39
+ payable: false,
40
+ type: "function"
41
+ },
42
+ {
43
+ constant: true,
44
+ inputs: [
45
+ {
46
+ name: "_owner",
47
+ type: "address"
48
+ }
49
+ ],
50
+ name: "balanceOf",
51
+ outputs: [
52
+ {
53
+ name: "balance",
54
+ type: "uint256"
55
+ }
56
+ ],
57
+ payable: false,
58
+ type: "function"
59
+ },
60
+ {
61
+ constant: true,
62
+ inputs: [],
63
+ name: "symbol",
64
+ outputs: [
65
+ {
66
+ name: "",
67
+ type: "string"
68
+ }
69
+ ],
70
+ payable: false,
71
+ type: "function"
72
+ }
73
+ ];
74
+
75
+
76
+
77
+ const $bc2bfebf768286d3$export$6a2ba3c3bd042990 = {
78
+ baseConfig: {
79
+ environment: (Environment).SANDBOX
80
+ }
81
+ };
82
+
83
+
84
+ let $d176a05e966364ba$export$3bfad4d03ada24c4;
85
+ (function(ConnectionProviders) {
86
+ ConnectionProviders["METAMASK"] = "metamask";
87
+ })($d176a05e966364ba$export$3bfad4d03ada24c4 || ($d176a05e966364ba$export$3bfad4d03ada24c4 = {}));
88
+
89
+
90
+ let $a47e48dd2c04791b$export$c06e1e7429de6283;
91
+ (function(ChainId) {
92
+ ChainId[ChainId["ETHEREUM"] = 1] = "ETHEREUM";
93
+ ChainId[ChainId["SEPOLIA"] = 11155111] = "SEPOLIA";
94
+ ChainId[ChainId["IMTBL_ZKEVM_DEVNET"] = 13373] = "IMTBL_ZKEVM_DEVNET";
95
+ ChainId[ChainId["IMTBL_ZKEVM_TESTNET"] = 13372] = "IMTBL_ZKEVM_TESTNET";
96
+ ChainId[ChainId["POLYGON_ZKEVM_TESTNET"] = 1442] = "POLYGON_ZKEVM_TESTNET";
97
+ ChainId[ChainId["POLYGON_ZKEVM"] = 137] = "POLYGON_ZKEVM";
98
+ })($a47e48dd2c04791b$export$c06e1e7429de6283 || ($a47e48dd2c04791b$export$c06e1e7429de6283 = {}));
99
+ const $a47e48dd2c04791b$export$6f24f3cef7d501c4 = new Map([
100
+ [
101
+ $a47e48dd2c04791b$export$c06e1e7429de6283.ETHEREUM,
102
+ {
103
+ chainIdHex: "0x1",
104
+ chainName: "Ethereum",
105
+ rpcUrls: [
106
+ "https://mainnet.infura.io/v3/"
107
+ ],
108
+ nativeCurrency: {
109
+ name: "Ethereum",
110
+ symbol: "ETH",
111
+ decimals: 18
112
+ },
113
+ blockExplorerUrls: [
114
+ "https://etherscan.io/"
115
+ ]
116
+ }
117
+ ],
118
+ [
119
+ $a47e48dd2c04791b$export$c06e1e7429de6283.IMTBL_ZKEVM_TESTNET,
120
+ {
121
+ chainIdHex: "0x343C",
122
+ chainName: "Immutable zkEVM Testnet",
123
+ rpcUrls: [
124
+ "https://zkevm-rpc.sandbox.x.immutable.com"
125
+ ],
126
+ nativeCurrency: {
127
+ name: "IMX",
128
+ symbol: "IMX",
129
+ decimals: 18
130
+ }
131
+ }
132
+ ],
133
+ [
134
+ $a47e48dd2c04791b$export$c06e1e7429de6283.POLYGON_ZKEVM,
135
+ {
136
+ chainIdHex: "0x89",
137
+ chainName: "Polygon zkEVM",
138
+ rpcUrls: [
139
+ "https://polygon-rpc.com"
140
+ ],
141
+ nativeCurrency: {
142
+ name: "MATIC",
143
+ symbol: "MATIC",
144
+ decimals: 18
145
+ },
146
+ blockExplorerUrls: [
147
+ "https://polygonscan.com/"
148
+ ]
149
+ }
150
+ ]
151
+ ]);
152
+ const $a47e48dd2c04791b$export$3e81fc0987227f10 = new Map([
153
+ [
154
+ $a47e48dd2c04791b$export$c06e1e7429de6283.SEPOLIA,
155
+ {
156
+ chainIdHex: "0xaa36a7",
157
+ chainName: "Sepolia",
158
+ rpcUrls: [
159
+ "https://sepolia.infura.io/v3/"
160
+ ],
161
+ nativeCurrency: {
162
+ name: "Sep Eth",
163
+ symbol: "ETH",
164
+ decimals: 18
165
+ },
166
+ blockExplorerUrls: [
167
+ "https://sepolia.etherscan.io/"
168
+ ]
169
+ }
170
+ ],
171
+ [
172
+ $a47e48dd2c04791b$export$c06e1e7429de6283.IMTBL_ZKEVM_DEVNET,
173
+ {
174
+ chainIdHex: "0x343D",
175
+ chainName: "Immutable zkEVM Devnet",
176
+ rpcUrls: [
177
+ "https://zkevm-rpc.dev.x.immutable.com/"
178
+ ],
179
+ nativeCurrency: {
180
+ name: "IMX",
181
+ symbol: "IMX",
182
+ decimals: 18
183
+ }
184
+ }
185
+ ],
186
+ [
187
+ $a47e48dd2c04791b$export$c06e1e7429de6283.POLYGON_ZKEVM_TESTNET,
188
+ {
189
+ chainIdHex: "0x5A2",
190
+ chainName: "Polygon zkEVM Testnet",
191
+ rpcUrls: [
192
+ "https://rpc.public.zkevm-test.net"
193
+ ],
194
+ nativeCurrency: {
195
+ name: "MATIC",
196
+ symbol: "MATIC",
197
+ decimals: 18
198
+ },
199
+ blockExplorerUrls: [
200
+ "https://testnet-zkevm.polygonscan.com"
201
+ ]
202
+ }
203
+ ]
204
+ ]);
205
+ let $a47e48dd2c04791b$export$1f05a55fe0680cc7;
206
+ (function(NetworkFilterTypes) {
207
+ NetworkFilterTypes["ALL"] = "all";
208
+ })($a47e48dd2c04791b$export$1f05a55fe0680cc7 || ($a47e48dd2c04791b$export$1f05a55fe0680cc7 = {}));
209
+
210
+
211
+ // TODO: fix circular dependency
212
+ // eslint-disable-next-line import/no-cycle
213
+ let $08d5ddc39acd6833$export$fd9b17d87f4121d2;
214
+ (function(TokenFilterTypes) {
215
+ TokenFilterTypes["SWAP"] = "swap";
216
+ TokenFilterTypes["BRIDGE"] = "bridge";
217
+ TokenFilterTypes["ALL"] = "all";
218
+ })($08d5ddc39acd6833$export$fd9b17d87f4121d2 || ($08d5ddc39acd6833$export$fd9b17d87f4121d2 = {}));
219
+
220
+
221
+
222
+
223
+ // TODO: fix circular dependency
224
+ // eslint-disable-next-line import/no-cycle
225
+ let $4f91c5f280efe242$export$35b06f0d33f57e26;
226
+ (function(WalletAction) {
227
+ WalletAction["CHECK_CONNECTION"] = "eth_accounts";
228
+ WalletAction["CONNECT"] = "eth_requestAccounts";
229
+ WalletAction["ADD_NETWORK"] = "wallet_addEthereumChain";
230
+ WalletAction["SWITCH_NETWORK"] = "wallet_switchEthereumChain";
231
+ })($4f91c5f280efe242$export$35b06f0d33f57e26 || ($4f91c5f280efe242$export$35b06f0d33f57e26 = {}));
232
+ let $4f91c5f280efe242$export$a75605c67ea83a5a;
233
+ (function(WalletFilterTypes) {
234
+ WalletFilterTypes["ALL"] = "all";
235
+ WalletFilterTypes["DESKTOP"] = "desktop";
236
+ WalletFilterTypes["MOBILE"] = "mobile";
237
+ })($4f91c5f280efe242$export$a75605c67ea83a5a || ($4f91c5f280efe242$export$a75605c67ea83a5a = {}));
238
+
239
+
240
+
241
+
242
+ /**
243
+ * The different types of errors that can be returned by the checkout process.
244
+ */ let $a8bc256d81a5e2c1$export$e3dc0620abde7f5a;
245
+ (function(CheckoutErrorType) {
246
+ CheckoutErrorType["PROVIDER_PREFERENCE_ERROR"] = "PROVIDER_PREFERENCE_ERROR";
247
+ CheckoutErrorType["CONNECT_PROVIDER_ERROR"] = "CONNECT_PROVIDER_ERROR";
248
+ CheckoutErrorType["GET_BALANCE_ERROR"] = "GET_BALANCE_ERROR";
249
+ CheckoutErrorType["GET_ERC20_BALANCE_ERROR"] = "GET_ERC20_BALANCE_ERROR";
250
+ CheckoutErrorType["GET_NETWORK_INFO_ERROR"] = "GET_NETWORK_INFO_ERROR";
251
+ CheckoutErrorType["METAMASK_PROVIDER_ERROR"] = "METAMASK_PROVIDER_ERROR";
252
+ CheckoutErrorType["CHAIN_NOT_SUPPORTED_ERROR"] = "CHAIN_NOT_SUPPORTED_ERROR";
253
+ CheckoutErrorType["PROVIDER_REQUEST_MISSING_ERROR"] = "PROVIDER_REQUEST_MISSING_ERROR";
254
+ CheckoutErrorType["PROVIDER_REQUEST_FAILED_ERROR"] = "PROVIDER_REQUEST_FAILED_ERROR";
255
+ CheckoutErrorType["USER_REJECTED_REQUEST_ERROR"] = "USER_REJECTED_REQUEST_ERROR";
256
+ CheckoutErrorType["TRANSACTION_ERROR"] = "TRANSACTION_ERROR";
257
+ })($a8bc256d81a5e2c1$export$e3dc0620abde7f5a || ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a = {}));
258
+ class $a8bc256d81a5e2c1$export$b722478a3cbfa3bc extends Error {
259
+ constructor(message, type, data){
260
+ super(message);
261
+ this.message = message;
262
+ this.type = type;
263
+ this.data = data;
264
+ }
265
+ }
266
+ let $a8bc256d81a5e2c1$export$a22d4e0719ee6def;
267
+ (function(CheckoutInternalErrorType) {
268
+ CheckoutInternalErrorType["REJECTED_SWITCH_AFTER_ADDING_NETWORK"] = "REJECTED_SWITCH_AFTER_ADDING_NETWORK";
269
+ })($a8bc256d81a5e2c1$export$a22d4e0719ee6def || ($a8bc256d81a5e2c1$export$a22d4e0719ee6def = {}));
270
+ const $a8bc256d81a5e2c1$export$bacc563de539c6c3 = async (fn, customError)=>{
271
+ try {
272
+ return await fn();
273
+ } catch (error) {
274
+ const cause = `${error.message}` || "UnknownError";
275
+ const errorMessage = customError.message ? `[${customError.type}]:${customError.message}. Cause:${cause}` : `[${customError.type}] Cause:${cause}`;
276
+ if (error instanceof $a8bc256d81a5e2c1$export$b722478a3cbfa3bc) throw new $a8bc256d81a5e2c1$export$b722478a3cbfa3bc(errorMessage, customError.type, {
277
+ ...customError.data,
278
+ innerErrorType: error.type,
279
+ ...error.data
280
+ });
281
+ throw new $a8bc256d81a5e2c1$export$b722478a3cbfa3bc(errorMessage, customError.type, {
282
+ ...customError.data
283
+ });
284
+ }
285
+ };
286
+
287
+
288
+
289
+
290
+ /* eslint-disable @typescript-eslint/no-explicit-any */
291
+
292
+ /* eslint-disable @typescript-eslint/no-explicit-any */
293
+
294
+
295
+
296
+ async function $c99672cf2294e839$var$getMetaMaskProvider() {
297
+ const provider = await ($a8bc256d81a5e2c1$export$bacc563de539c6c3)(async ()=>await ($7v2Z6$metamaskdetectprovider)(), {
298
+ type: ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).METAMASK_PROVIDER_ERROR
299
+ });
300
+ if (!provider || !provider.request) throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("No MetaMask provider installed.", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).METAMASK_PROVIDER_ERROR);
301
+ return new (Web3Provider)(provider);
302
+ }
303
+ async function $c99672cf2294e839$var$getWalletProviderForPreference(providerPreference) {
304
+ let web3Provider = null;
305
+ switch(providerPreference){
306
+ case ($d176a05e966364ba$export$3bfad4d03ada24c4).METAMASK:
307
+ web3Provider = await $c99672cf2294e839$var$getMetaMaskProvider();
308
+ break;
309
+ default:
310
+ throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("Provider preference is not supported", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).PROVIDER_PREFERENCE_ERROR);
311
+ }
312
+ return web3Provider;
313
+ }
314
+ async function $c99672cf2294e839$export$2d040992269b4717(providerPreference) {
315
+ const provider = await $c99672cf2294e839$var$getWalletProviderForPreference(providerPreference);
316
+ if (!provider.provider?.request) throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("Incompatible provider", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).PROVIDER_REQUEST_MISSING_ERROR, {
317
+ details: `Unsupported provider for ${providerPreference}`
318
+ });
319
+ let accounts = [];
320
+ try {
321
+ accounts = await provider.provider.request({
322
+ method: (0, $4f91c5f280efe242$export$35b06f0d33f57e26).CHECK_CONNECTION,
323
+ params: []
324
+ });
325
+ } catch (err) {
326
+ throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("Check wallet connection request failed", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).PROVIDER_REQUEST_FAILED_ERROR, {
327
+ rpcMethod: ($4f91c5f280efe242$export$35b06f0d33f57e26).CHECK_CONNECTION
328
+ });
329
+ }
330
+ // accounts[0] will have the active account if connected.
331
+ return {
332
+ isConnected: accounts && accounts.length > 0,
333
+ walletAddress: accounts[0] ?? ""
334
+ };
335
+ }
336
+ async function $c99672cf2294e839$export$fba2f6c3656e07c1(params) {
337
+ const web3Provider = await $c99672cf2294e839$var$getWalletProviderForPreference(params.providerPreference);
338
+ await ($a8bc256d81a5e2c1$export$bacc563de539c6c3)(async ()=>{
339
+ if (!web3Provider || !web3Provider?.provider?.request) throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("Incompatible provider", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).PROVIDER_REQUEST_MISSING_ERROR, {
340
+ details: `Unsupported provider for ${params.providerPreference}`
341
+ });
342
+ // this makes the request to the wallet to connect i.e request eth accounts ('eth_requestAccounts')
343
+ await web3Provider.provider.request({
344
+ method: ($4f91c5f280efe242$export$35b06f0d33f57e26).CONNECT,
345
+ params: []
346
+ });
347
+ }, {
348
+ type: ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).USER_REJECTED_REQUEST_ERROR
349
+ });
350
+ return web3Provider;
351
+ }
352
+
353
+
354
+ var $497c134ecbc8a50f$exports = {};
355
+ $497c134ecbc8a50f$exports = JSON.parse('[{"chainId":1},{"chainId":11155111},{"chainId":13372},{"chainId":13373},{"chainId":1442},{"chainId":137}]');
356
+
357
+
358
+ const $de192de6ef100f9f$var$UNRECOGNISED_CHAIN_ERROR_CODE = 4902; // error code (MetaMask)
359
+ // these functions should not be exported. These functions should be used as part of an exported function e.g switchWalletNetwork() above.
360
+ // make sure to check if(provider.provider?.request) in the exported function and throw an error
361
+ // eslint-disable-next-line consistent-return
362
+ async function $de192de6ef100f9f$var$switchNetworkInWallet(networkMap, provider, chainId) {
363
+ if (provider.provider?.request) return await provider.provider.request({
364
+ method: ($4f91c5f280efe242$export$35b06f0d33f57e26).SWITCH_NETWORK,
365
+ params: [
366
+ {
367
+ chainId: networkMap.get(chainId)?.chainIdHex
368
+ }
369
+ ]
370
+ });
371
+ }
372
+ // TODO: Should these functions always return something?
373
+ // eslint-disable-next-line consistent-return
374
+ async function $de192de6ef100f9f$var$addNetworkToWallet(networkMap, provider, chainId) {
375
+ if (provider.provider?.request) {
376
+ const networkDetails = networkMap.get(chainId);
377
+ const addNetwork = {
378
+ chainId: networkDetails?.chainIdHex,
379
+ chainName: networkDetails?.chainName,
380
+ rpcUrls: networkDetails?.rpcUrls,
381
+ nativeCurrency: networkDetails?.nativeCurrency,
382
+ blockExplorerUrls: networkDetails?.blockExplorerUrls
383
+ };
384
+ return await provider.provider.request({
385
+ method: ($4f91c5f280efe242$export$35b06f0d33f57e26).ADD_NETWORK,
386
+ params: [
387
+ addNetwork
388
+ ]
389
+ });
390
+ }
391
+ }
392
+ async function $de192de6ef100f9f$export$79f13b4cfaaf0d09(config, provider) {
393
+ const { networkMap: networkMap } = config;
394
+ return ($a8bc256d81a5e2c1$export$bacc563de539c6c3)(async ()=>{
395
+ const network = await provider.getNetwork();
396
+ if (!Array.from(networkMap.keys()).includes(network.chainId)) // return empty details
397
+ return {
398
+ chainId: network.chainId,
399
+ name: network.name,
400
+ isSupported: false
401
+ };
402
+ const chainIdNetworkInfo = networkMap.get(network.chainId);
403
+ return {
404
+ name: chainIdNetworkInfo.chainName,
405
+ chainId: parseInt(chainIdNetworkInfo.chainIdHex, 16),
406
+ nativeCurrency: chainIdNetworkInfo.nativeCurrency,
407
+ isSupported: true
408
+ };
409
+ }, {
410
+ type: ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).GET_NETWORK_INFO_ERROR
411
+ });
412
+ }
413
+ async function $de192de6ef100f9f$export$b827d9418aeb5dbd(config, providerPreference, provider, chainId) {
414
+ let currentProvider = provider;
415
+ const { networkMap: networkMap } = config;
416
+ if (!Object.values(($a47e48dd2c04791b$export$c06e1e7429de6283)).includes(chainId)) throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)(`Chain:${chainId} is not a supported chain`, ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).CHAIN_NOT_SUPPORTED_ERROR);
417
+ if (!currentProvider || !currentProvider.provider?.request) throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("Incompatible provider", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).PROVIDER_REQUEST_MISSING_ERROR, {
418
+ details: "Unsupported provider"
419
+ });
420
+ // WT-1146 - Refer to the README in this folder for explantion on the switch network flow
421
+ try {
422
+ await $de192de6ef100f9f$var$switchNetworkInWallet(networkMap, currentProvider, chainId);
423
+ } catch (err) {
424
+ if (err.code === $de192de6ef100f9f$var$UNRECOGNISED_CHAIN_ERROR_CODE) try {
425
+ await $de192de6ef100f9f$var$addNetworkToWallet(networkMap, currentProvider, chainId);
426
+ // eslint-disable-next-line @typescript-eslint/no-shadow
427
+ } catch (err) {
428
+ throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("User cancelled add network request", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).USER_REJECTED_REQUEST_ERROR);
429
+ }
430
+ else throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("User cancelled switch network request", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).USER_REJECTED_REQUEST_ERROR);
431
+ }
432
+ currentProvider = await ($c99672cf2294e839$export$fba2f6c3656e07c1)({
433
+ providerPreference: providerPreference
434
+ });
435
+ if ((await currentProvider.getNetwork()).chainId !== chainId) // user didn't actually switch
436
+ throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("User cancelled switch network request", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).USER_REJECTED_REQUEST_ERROR);
437
+ // we can assume that if the above succeeds then user has successfully
438
+ // switched to the network specified
439
+ const newNetwork = networkMap.get(chainId);
440
+ return {
441
+ network: {
442
+ name: newNetwork?.chainName,
443
+ chainId: parseInt(newNetwork?.chainIdHex ?? "", 16),
444
+ nativeCurrency: newNetwork?.nativeCurrency
445
+ },
446
+ provider: currentProvider
447
+ };
448
+ }
449
+ async function $de192de6ef100f9f$export$3043f6442a9ef563(config, { type: type = ($a47e48dd2c04791b$export$1f05a55fe0680cc7).ALL , exclude: exclude }) {
450
+ const { networkMap: networkMap } = config;
451
+ const list = ((/*@__PURE__*/$parcel$interopDefault($497c134ecbc8a50f$exports))).filter((network)=>{
452
+ const allowAllTokens = type === ($a47e48dd2c04791b$export$1f05a55fe0680cc7).ALL;
453
+ const networkNotExcluded = !(exclude || []).map((exc)=>exc.chainId).includes(network.chainId);
454
+ return allowAllTokens && networkNotExcluded;
455
+ });
456
+ const allowedNetworks = [];
457
+ list.forEach((element)=>{
458
+ const newNetwork = networkMap.get(element.chainId);
459
+ if (newNetwork) allowedNetworks.push({
460
+ name: newNetwork.chainName,
461
+ chainId: parseInt(newNetwork.chainIdHex, 16),
462
+ nativeCurrency: newNetwork.nativeCurrency,
463
+ isSupported: true
464
+ });
465
+ });
466
+ return {
467
+ networks: allowedNetworks
468
+ };
469
+ }
470
+
471
+
472
+
473
+
474
+
475
+ var $cda6003506e4182e$exports = {};
476
+ $cda6003506e4182e$exports = JSON.parse("[{\"chainId\":13373,\"name\":\"IMX\",\"symbol\":\"IMX\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 139 113' style='enable-background:new 0 0 139 113;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bclip-path:url(%23SVGID_00000053504646934646330740000009134454895836103350_);%7D .st1%7Bfill:%2317B5CB;%7D%0A%3C/style%3E%3Cg%3E%3Cdefs%3E%3Crect id='SVGID_1_' width='139' height='113'/%3E%3C/defs%3E%3CclipPath id='SVGID_00000035518931339590433170000002358037249938198420_'%3E%3Cuse xlink:href='%23SVGID_1_' style='overflow:visible;'/%3E%3C/clipPath%3E%3Cg style='clip-path:url(%23SVGID_00000035518931339590433170000002358037249938198420_);'%3E%3Cpath class='st1' d='M124.1,0h14.6L79.5,67.6c-1.5,1.7-1.6,4.3-0.1,6.1l34.1,39.7H98.3L66.8,76.6l-1.6-2c-1.5-1.7-1.4-4.4,0.1-6.1 L124.1,0z'/%3E%3Cpath class='st1' d='M91.2,73.7c-1-1.1-1.3-2.7-1-4.1c0.3-0.8,0.8-1.6,1.4-2.2l3.9-4.3l43.5,50.3h-13.8 C125.2,113.4,99.7,83.6,91.2,73.7z'/%3E%3Cpath class='st1' d='M15.2,113.4H0l46.6-53.9c1.5-1.7,1.5-4.3,0-6L0.4,0H15l46.5,53.9c1.2,1.6,1.4,3.9,0.1,5.4 C49.4,73.4,15.2,113.4,15.2,113.4z'/%3E%3Cpath class='st1' d='M40.6,0h-14l43.1,49.9c0,0,0.1-0.1,4.9-5.8c1.3-1.5,1.6-3.4,0.1-4.9C65.7,30,40.6,0,40.6,0z'/%3E%3Cpath class='st1' d='M82.6,34.8L112.5,0H98.3L82.7,18.2l-4.5,5.3c-1.5,1.7-1.6,4.3-0.1,6.1C79.2,30.9,82.6,34.8,82.6,34.8z'/%3E%3Cpath class='st1' d='M56.6,78.6l-29.9,34.8h14.1l15.6-18.2l4.5-5.3c1.5-1.7,1.6-4.3,0.1-6.1C59.9,82.5,56.6,78.6,56.6,78.6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"chainId\":13373,\"name\":\"FUN token\",\"address\":\"0xd8f1D29a1572FbCeF0B0C9541E50637Ad8804F21\",\"symbol\":\"FUN\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='100%25' height='100%25' version='1.1' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd'%0AviewBox='0 0 784.37 1277.39' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3E%3Cg id='Layer_x0020_1'%3E%3Cmetadata id='CorelCorpID_0Corel-Layer'/%3E%3Cg id='_1421394342400'%3E%3Cg%3E%3Cpolygon fill='%23343434' fill-rule='nonzero' points='392.07,0 383.5,29.11 383.5,873.74 392.07,882.29 784.13,650.54 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,0 -0,650.54 392.07,882.29 392.07,472.33 '/%3E%3Cpolygon fill='%233C3C3B' fill-rule='nonzero' points='392.07,956.52 387.24,962.41 387.24,1263.28 392.07,1277.38 784.37,724.89 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,1277.38 392.07,956.52 -0,724.89 '/%3E%3Cpolygon fill='%23141414' fill-rule='nonzero' points='392.07,882.29 784.13,650.54 392.07,472.33 '/%3E%3Cpolygon fill='%23393939' fill-rule='nonzero' points='0,650.54 392.07,882.29 392.07,472.33 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"chainId\":13373,\"name\":\"USDC\",\"address\":\"0x5893A5c7bc615Dfd36D7383366d00FFFca5f7178\",\"symbol\":\"USDC\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='100%25' height='100%25' version='1.1' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd'%0AviewBox='0 0 784.37 1277.39' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3E%3Cg id='Layer_x0020_1'%3E%3Cmetadata id='CorelCorpID_0Corel-Layer'/%3E%3Cg id='_1421394342400'%3E%3Cg%3E%3Cpolygon fill='%23343434' fill-rule='nonzero' points='392.07,0 383.5,29.11 383.5,873.74 392.07,882.29 784.13,650.54 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,0 -0,650.54 392.07,882.29 392.07,472.33 '/%3E%3Cpolygon fill='%233C3C3B' fill-rule='nonzero' points='392.07,956.52 387.24,962.41 387.24,1263.28 392.07,1277.38 784.37,724.89 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,1277.38 392.07,956.52 -0,724.89 '/%3E%3Cpolygon fill='%23141414' fill-rule='nonzero' points='392.07,882.29 784.13,650.54 392.07,472.33 '/%3E%3Cpolygon fill='%23393939' fill-rule='nonzero' points='0,650.54 392.07,882.29 392.07,472.33 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"chainId\":13373,\"name\":\"WETH\",\"address\":\"0xD6d9321DCC42377C1fa8cFec665182c463b2392C\",\"symbol\":\"WETH\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='100%25' height='100%25' version='1.1' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd'%0AviewBox='0 0 784.37 1277.39' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3E%3Cg id='Layer_x0020_1'%3E%3Cmetadata id='CorelCorpID_0Corel-Layer'/%3E%3Cg id='_1421394342400'%3E%3Cg%3E%3Cpolygon fill='%23343434' fill-rule='nonzero' points='392.07,0 383.5,29.11 383.5,873.74 392.07,882.29 784.13,650.54 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,0 -0,650.54 392.07,882.29 392.07,472.33 '/%3E%3Cpolygon fill='%233C3C3B' fill-rule='nonzero' points='392.07,956.52 387.24,962.41 387.24,1263.28 392.07,1277.38 784.37,724.89 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,1277.38 392.07,956.52 -0,724.89 '/%3E%3Cpolygon fill='%23141414' fill-rule='nonzero' points='392.07,882.29 784.13,650.54 392.07,472.33 '/%3E%3Cpolygon fill='%23393939' fill-rule='nonzero' points='0,650.54 392.07,882.29 392.07,472.33 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"chainId\":1,\"name\":\"Ethereum\",\"symbol\":\"ETH\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='100%25' height='100%25' version='1.1' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd'%0AviewBox='0 0 784.37 1277.39' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3E%3Cg id='Layer_x0020_1'%3E%3Cmetadata id='CorelCorpID_0Corel-Layer'/%3E%3Cg id='_1421394342400'%3E%3Cg%3E%3Cpolygon fill='%23343434' fill-rule='nonzero' points='392.07,0 383.5,29.11 383.5,873.74 392.07,882.29 784.13,650.54 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,0 -0,650.54 392.07,882.29 392.07,472.33 '/%3E%3Cpolygon fill='%233C3C3B' fill-rule='nonzero' points='392.07,956.52 387.24,962.41 387.24,1263.28 392.07,1277.38 784.37,724.89 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,1277.38 392.07,956.52 -0,724.89 '/%3E%3Cpolygon fill='%23141414' fill-rule='nonzero' points='392.07,882.29 784.13,650.54 392.07,472.33 '/%3E%3Cpolygon fill='%23393939' fill-rule='nonzero' points='0,650.54 392.07,882.29 392.07,472.33 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"address\":\"0xF57e7e7C23978C3cAEC3C3548E3D615c346e79fF\",\"chainId\":1,\"name\":\"Immutable X\",\"symbol\":\"IMX\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 139 113' style='enable-background:new 0 0 139 113;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bclip-path:url(%23SVGID_00000053504646934646330740000009134454895836103350_);%7D .st1%7Bfill:%2317B5CB;%7D%0A%3C/style%3E%3Cg%3E%3Cdefs%3E%3Crect id='SVGID_1_' width='139' height='113'/%3E%3C/defs%3E%3CclipPath id='SVGID_00000035518931339590433170000002358037249938198420_'%3E%3Cuse xlink:href='%23SVGID_1_' style='overflow:visible;'/%3E%3C/clipPath%3E%3Cg style='clip-path:url(%23SVGID_00000035518931339590433170000002358037249938198420_);'%3E%3Cpath class='st1' d='M124.1,0h14.6L79.5,67.6c-1.5,1.7-1.6,4.3-0.1,6.1l34.1,39.7H98.3L66.8,76.6l-1.6-2c-1.5-1.7-1.4-4.4,0.1-6.1 L124.1,0z'/%3E%3Cpath class='st1' d='M91.2,73.7c-1-1.1-1.3-2.7-1-4.1c0.3-0.8,0.8-1.6,1.4-2.2l3.9-4.3l43.5,50.3h-13.8 C125.2,113.4,99.7,83.6,91.2,73.7z'/%3E%3Cpath class='st1' d='M15.2,113.4H0l46.6-53.9c1.5-1.7,1.5-4.3,0-6L0.4,0H15l46.5,53.9c1.2,1.6,1.4,3.9,0.1,5.4 C49.4,73.4,15.2,113.4,15.2,113.4z'/%3E%3Cpath class='st1' d='M40.6,0h-14l43.1,49.9c0,0,0.1-0.1,4.9-5.8c1.3-1.5,1.6-3.4,0.1-4.9C65.7,30,40.6,0,40.6,0z'/%3E%3Cpath class='st1' d='M82.6,34.8L112.5,0H98.3L82.7,18.2l-4.5,5.3c-1.5,1.7-1.6,4.3-0.1,6.1C79.2,30.9,82.6,34.8,82.6,34.8z'/%3E%3Cpath class='st1' d='M56.6,78.6l-29.9,34.8h14.1l15.6-18.2l4.5-5.3c1.5-1.7,1.6-4.3,0.1-6.1C59.9,82.5,56.6,78.6,56.6,78.6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"chainId\":11155111,\"name\":\"Sep Eth\",\"symbol\":\"ETH\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='100%25' height='100%25' version='1.1' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd'%0AviewBox='0 0 784.37 1277.39' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3E%3Cg id='Layer_x0020_1'%3E%3Cmetadata id='CorelCorpID_0Corel-Layer'/%3E%3Cg id='_1421394342400'%3E%3Cg%3E%3Cpolygon fill='%23343434' fill-rule='nonzero' points='392.07,0 383.5,29.11 383.5,873.74 392.07,882.29 784.13,650.54 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,0 -0,650.54 392.07,882.29 392.07,472.33 '/%3E%3Cpolygon fill='%233C3C3B' fill-rule='nonzero' points='392.07,956.52 387.24,962.41 387.24,1263.28 392.07,1277.38 784.37,724.89 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,1277.38 392.07,956.52 -0,724.89 '/%3E%3Cpolygon fill='%23141414' fill-rule='nonzero' points='392.07,882.29 784.13,650.54 392.07,472.33 '/%3E%3Cpolygon fill='%23393939' fill-rule='nonzero' points='0,650.54 392.07,882.29 392.07,472.33 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"chainId\":11155111,\"name\":\"Immutable Test token\",\"address\":\"0x40cAdc2BC5d25B9c669B8E09c68eCcb9B80873f7\",\"symbol\":\"TEST\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 139 113' style='enable-background:new 0 0 139 113;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bclip-path:url(%23SVGID_00000053504646934646330740000009134454895836103350_);%7D .st1%7Bfill:%2317B5CB;%7D%0A%3C/style%3E%3Cg%3E%3Cdefs%3E%3Crect id='SVGID_1_' width='139' height='113'/%3E%3C/defs%3E%3CclipPath id='SVGID_00000035518931339590433170000002358037249938198420_'%3E%3Cuse xlink:href='%23SVGID_1_' style='overflow:visible;'/%3E%3C/clipPath%3E%3Cg style='clip-path:url(%23SVGID_00000035518931339590433170000002358037249938198420_);'%3E%3Cpath class='st1' d='M124.1,0h14.6L79.5,67.6c-1.5,1.7-1.6,4.3-0.1,6.1l34.1,39.7H98.3L66.8,76.6l-1.6-2c-1.5-1.7-1.4-4.4,0.1-6.1 L124.1,0z'/%3E%3Cpath class='st1' d='M91.2,73.7c-1-1.1-1.3-2.7-1-4.1c0.3-0.8,0.8-1.6,1.4-2.2l3.9-4.3l43.5,50.3h-13.8 C125.2,113.4,99.7,83.6,91.2,73.7z'/%3E%3Cpath class='st1' d='M15.2,113.4H0l46.6-53.9c1.5-1.7,1.5-4.3,0-6L0.4,0H15l46.5,53.9c1.2,1.6,1.4,3.9,0.1,5.4 C49.4,73.4,15.2,113.4,15.2,113.4z'/%3E%3Cpath class='st1' d='M40.6,0h-14l43.1,49.9c0,0,0.1-0.1,4.9-5.8c1.3-1.5,1.6-3.4,0.1-4.9C65.7,30,40.6,0,40.6,0z'/%3E%3Cpath class='st1' d='M82.6,34.8L112.5,0H98.3L82.7,18.2l-4.5,5.3c-1.5,1.7-1.6,4.3-0.1,6.1C79.2,30.9,82.6,34.8,82.6,34.8z'/%3E%3Cpath class='st1' d='M56.6,78.6l-29.9,34.8h14.1l15.6-18.2l4.5-5.3c1.5-1.7,1.6-4.3,0.1-6.1C59.9,82.5,56.6,78.6,56.6,78.6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"chainId\":11155111,\"name\":\"FUN token\",\"address\":\"0x741185AEFC3E539c1F42c1d6eeE8bFf1c89D70FE\",\"symbol\":\"FUN\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='100%25' height='100%25' version='1.1' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd'%0AviewBox='0 0 784.37 1277.39' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3E%3Cg id='Layer_x0020_1'%3E%3Cmetadata id='CorelCorpID_0Corel-Layer'/%3E%3Cg id='_1421394342400'%3E%3Cg%3E%3Cpolygon fill='%23343434' fill-rule='nonzero' points='392.07,0 383.5,29.11 383.5,873.74 392.07,882.29 784.13,650.54 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,0 -0,650.54 392.07,882.29 392.07,472.33 '/%3E%3Cpolygon fill='%233C3C3B' fill-rule='nonzero' points='392.07,956.52 387.24,962.41 387.24,1263.28 392.07,1277.38 784.37,724.89 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,1277.38 392.07,956.52 -0,724.89 '/%3E%3Cpolygon fill='%23141414' fill-rule='nonzero' points='392.07,882.29 784.13,650.54 392.07,472.33 '/%3E%3Cpolygon fill='%23393939' fill-rule='nonzero' points='0,650.54 392.07,882.29 392.07,472.33 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"chainId\":11155111,\"name\":\"US Dollar Coin\",\"address\":\"0x1836E16b2036088490C2CFe4d11970Fc8e5884C4\",\"symbol\":\"USDC\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='100%25' height='100%25' version='1.1' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd'%0AviewBox='0 0 784.37 1277.39' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3E%3Cg id='Layer_x0020_1'%3E%3Cmetadata id='CorelCorpID_0Corel-Layer'/%3E%3Cg id='_1421394342400'%3E%3Cg%3E%3Cpolygon fill='%23343434' fill-rule='nonzero' points='392.07,0 383.5,29.11 383.5,873.74 392.07,882.29 784.13,650.54 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,0 -0,650.54 392.07,882.29 392.07,472.33 '/%3E%3Cpolygon fill='%233C3C3B' fill-rule='nonzero' points='392.07,956.52 387.24,962.41 387.24,1263.28 392.07,1277.38 784.37,724.89 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,1277.38 392.07,956.52 -0,724.89 '/%3E%3Cpolygon fill='%23141414' fill-rule='nonzero' points='392.07,882.29 784.13,650.54 392.07,472.33 '/%3E%3Cpolygon fill='%23393939' fill-rule='nonzero' points='0,650.54 392.07,882.29 392.07,472.33 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"chainId\":11155111,\"name\":\"DEX\",\"address\":\"0xaC953a0d7B67Fae17c87abf79f09D0f818AC66A2\",\"symbol\":\"DEX\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='100%25' height='100%25' version='1.1' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd'%0AviewBox='0 0 784.37 1277.39' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3E%3Cg id='Layer_x0020_1'%3E%3Cmetadata id='CorelCorpID_0Corel-Layer'/%3E%3Cg id='_1421394342400'%3E%3Cg%3E%3Cpolygon fill='%23343434' fill-rule='nonzero' points='392.07,0 383.5,29.11 383.5,873.74 392.07,882.29 784.13,650.54 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,0 -0,650.54 392.07,882.29 392.07,472.33 '/%3E%3Cpolygon fill='%233C3C3B' fill-rule='nonzero' points='392.07,956.52 387.24,962.41 387.24,1263.28 392.07,1277.38 784.37,724.89 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,1277.38 392.07,956.52 -0,724.89 '/%3E%3Cpolygon fill='%23141414' fill-rule='nonzero' points='392.07,882.29 784.13,650.54 392.07,472.33 '/%3E%3Cpolygon fill='%23393939' fill-rule='nonzero' points='0,650.54 392.07,882.29 392.07,472.33 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"chainId\":1442,\"name\":\"WETH\",\"address\":\"0x4F062A3EAeC3730560aB89b5CE5aC0ab2C5517aE\",\"symbol\":\"WETH\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='100%25' height='100%25' version='1.1' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd'%0AviewBox='0 0 784.37 1277.39' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3E%3Cg id='Layer_x0020_1'%3E%3Cmetadata id='CorelCorpID_0Corel-Layer'/%3E%3Cg id='_1421394342400'%3E%3Cg%3E%3Cpolygon fill='%23343434' fill-rule='nonzero' points='392.07,0 383.5,29.11 383.5,873.74 392.07,882.29 784.13,650.54 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,0 -0,650.54 392.07,882.29 392.07,472.33 '/%3E%3Cpolygon fill='%233C3C3B' fill-rule='nonzero' points='392.07,956.52 387.24,962.41 387.24,1263.28 392.07,1277.38 784.37,724.89 '/%3E%3Cpolygon fill='%238C8C8C' fill-rule='nonzero' points='392.07,1277.38 392.07,956.52 -0,724.89 '/%3E%3Cpolygon fill='%23141414' fill-rule='nonzero' points='392.07,882.29 784.13,650.54 392.07,472.33 '/%3E%3Cpolygon fill='%23393939' fill-rule='nonzero' points='0,650.54 392.07,882.29 392.07,472.33 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]},{\"address\":\"0x72958b06abdF2701AcE6ceb3cE0B8B1CE11E0851\",\"chainId\":1442,\"name\":\"Immutable X\",\"symbol\":\"IMX\",\"decimals\":18,\"icon\":\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 139 113' style='enable-background:new 0 0 139 113;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bclip-path:url(%23SVGID_00000053504646934646330740000009134454895836103350_);%7D .st1%7Bfill:%2317B5CB;%7D%0A%3C/style%3E%3Cg%3E%3Cdefs%3E%3Crect id='SVGID_1_' width='139' height='113'/%3E%3C/defs%3E%3CclipPath id='SVGID_00000035518931339590433170000002358037249938198420_'%3E%3Cuse xlink:href='%23SVGID_1_' style='overflow:visible;'/%3E%3C/clipPath%3E%3Cg style='clip-path:url(%23SVGID_00000035518931339590433170000002358037249938198420_);'%3E%3Cpath class='st1' d='M124.1,0h14.6L79.5,67.6c-1.5,1.7-1.6,4.3-0.1,6.1l34.1,39.7H98.3L66.8,76.6l-1.6-2c-1.5-1.7-1.4-4.4,0.1-6.1 L124.1,0z'/%3E%3Cpath class='st1' d='M91.2,73.7c-1-1.1-1.3-2.7-1-4.1c0.3-0.8,0.8-1.6,1.4-2.2l3.9-4.3l43.5,50.3h-13.8 C125.2,113.4,99.7,83.6,91.2,73.7z'/%3E%3Cpath class='st1' d='M15.2,113.4H0l46.6-53.9c1.5-1.7,1.5-4.3,0-6L0.4,0H15l46.5,53.9c1.2,1.6,1.4,3.9,0.1,5.4 C49.4,73.4,15.2,113.4,15.2,113.4z'/%3E%3Cpath class='st1' d='M40.6,0h-14l43.1,49.9c0,0,0.1-0.1,4.9-5.8c1.3-1.5,1.6-3.4,0.1-4.9C65.7,30,40.6,0,40.6,0z'/%3E%3Cpath class='st1' d='M82.6,34.8L112.5,0H98.3L82.7,18.2l-4.5,5.3c-1.5,1.7-1.6,4.3-0.1,6.1C79.2,30.9,82.6,34.8,82.6,34.8z'/%3E%3Cpath class='st1' d='M56.6,78.6l-29.9,34.8h14.1l15.6-18.2l4.5-5.3c1.5-1.7,1.6-4.3,0.1-6.1C59.9,82.5,56.6,78.6,56.6,78.6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\"tokenFeatures\":[\"swap\",\"bridge\"]}]");
477
+
478
+
479
+ const $efe60cea83bfc4e8$var$filterTokenList = ({ type: type , chainId: chainId , exclude: exclude })=>((/*@__PURE__*/$parcel$interopDefault($cda6003506e4182e$exports))).filter((token)=>{
480
+ const skipChainIdCheck = !chainId;
481
+ const chainIdMatches = token.chainId === chainId;
482
+ const tokenNotExcluded = !exclude?.map((excludeToken)=>excludeToken.address).includes(token.address || "");
483
+ const allowAllTokens = type === ($08d5ddc39acd6833$export$fd9b17d87f4121d2).ALL;
484
+ const tokenAllowedForType = token.tokenFeatures.includes(type);
485
+ return (skipChainIdCheck || chainIdMatches) && tokenNotExcluded && (allowAllTokens || tokenAllowedForType);
486
+ });
487
+ const $efe60cea83bfc4e8$export$473cec51305fdae8 = async ({ type: type = ($08d5ddc39acd6833$export$fd9b17d87f4121d2).ALL , chainId: chainId , exclude: exclude })=>{
488
+ const filteredTokenList = $efe60cea83bfc4e8$var$filterTokenList({
489
+ type: type,
490
+ chainId: chainId,
491
+ exclude: exclude
492
+ }).map((token)=>({
493
+ name: token.name,
494
+ symbol: token.symbol,
495
+ decimals: token.decimals,
496
+ address: token.address,
497
+ icon: token.icon
498
+ }));
499
+ return {
500
+ tokens: filteredTokenList
501
+ };
502
+ };
503
+
504
+
505
+
506
+
507
+ const $1564e43dde50bb61$export$df96cd8d56be0ab1 = async (config, provider, walletAddress)=>await ($a8bc256d81a5e2c1$export$bacc563de539c6c3)(async ()=>{
508
+ const networkInfo = await ($de192de6ef100f9f$export$79f13b4cfaaf0d09)(config, provider);
509
+ if (!networkInfo.isSupported) throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)(`Chain:${networkInfo.chainId} is not a supported chain`, ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).CHAIN_NOT_SUPPORTED_ERROR, {
510
+ chainName: networkInfo.name
511
+ });
512
+ const balance = await provider.getBalance(walletAddress);
513
+ return {
514
+ balance: balance,
515
+ formattedBalance: (utils).formatUnits(balance, networkInfo.nativeCurrency.decimals),
516
+ token: networkInfo.nativeCurrency
517
+ };
518
+ }, {
519
+ type: ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).GET_BALANCE_ERROR
520
+ });
521
+ async function $1564e43dde50bb61$export$60e0fe116a0e6ed0(provider, walletAddress, contractAddress) {
522
+ return await ($a8bc256d81a5e2c1$export$bacc563de539c6c3)(async ()=>{
523
+ const contract = new (Contract)(contractAddress, JSON.stringify(($762782b6c862d954$export$db5daa1b5156ccfe)), provider);
524
+ const name = await contract.name();
525
+ const symbol = await contract.symbol();
526
+ const balance = await contract.balanceOf(walletAddress);
527
+ const decimals = await contract.decimals();
528
+ const formattedBalance = (utils).formatUnits(balance, decimals);
529
+ return {
530
+ balance: balance,
531
+ formattedBalance: formattedBalance,
532
+ token: {
533
+ name: name,
534
+ symbol: symbol,
535
+ decimals: decimals,
536
+ address: contractAddress
537
+ }
538
+ };
539
+ }, {
540
+ type: ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).GET_ERC20_BALANCE_ERROR
541
+ });
542
+ }
543
+ const $1564e43dde50bb61$export$fee49741664a4d7e = async (config, provider, walletAddress, chainId)=>{
544
+ if (!Object.values(($a47e48dd2c04791b$export$c06e1e7429de6283)).includes(chainId)) throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)(`ChainId ${chainId} is not supported`, ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).CHAIN_NOT_SUPPORTED_ERROR);
545
+ if (!provider.provider?.request) throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("provider object is missing request function", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).PROVIDER_REQUEST_MISSING_ERROR);
546
+ const tokenList = await ($efe60cea83bfc4e8$export$473cec51305fdae8)({
547
+ type: ($08d5ddc39acd6833$export$fd9b17d87f4121d2).ALL,
548
+ chainId: chainId
549
+ });
550
+ const allBalancePromises = [];
551
+ allBalancePromises.push($1564e43dde50bb61$export$df96cd8d56be0ab1(config, provider, walletAddress));
552
+ tokenList.tokens.filter((token)=>token.address).forEach((token)=>allBalancePromises.push($1564e43dde50bb61$export$60e0fe116a0e6ed0(provider, walletAddress, token.address ?? "")));
553
+ const balanceResults = await Promise.allSettled(allBalancePromises);
554
+ const getBalanceResults = balanceResults.filter((result)=>result.status === "fulfilled").map((fulfilledResult)=>fulfilledResult.value);
555
+ return {
556
+ balances: getBalanceResults
557
+ };
558
+ };
559
+
560
+
561
+
562
+
563
+
564
+
565
+
566
+
567
+
568
+ var $6f3c55a615003cbf$exports = {};
569
+ $6f3c55a615003cbf$exports = JSON.parse('[{"connectionProvider":"metamask","icon":"some-icon-url","name":"MetaMask","description":"complete web3 wallet solution","platform":["desktop"]},{"connectionProvider":"passport","icon":"pp-icon","name":"Passport","description":"Web3 with your email!","platform":["mobile","desktop"]},{"connectionProvider":"gamestop","icon":"gme-icon","name":"GameStop","description":"Never stopping the game!","platform":["mobile"]}]');
570
+
571
+
572
+ async function $5cdde2ffe6360fec$export$a822caa90d7eef09({ type: type = ($4f91c5f280efe242$export$a75605c67ea83a5a).ALL , exclude: exclude }) {
573
+ // todo:For async API call, use the CheckoutError with errorType:API_CALL_ERROR?? or any other
574
+ const filteredWalletsList = ((/*@__PURE__*/$parcel$interopDefault($6f3c55a615003cbf$exports))).filter((wallet)=>{
575
+ const walletNotExcluded = !exclude?.map((excludeWallet)=>excludeWallet.connectionProvider).includes(wallet.connectionProvider);
576
+ const allowAllWallets = type === ($4f91c5f280efe242$export$a75605c67ea83a5a).ALL;
577
+ const walletsAllowedForType = wallet.platform.includes(type);
578
+ return walletNotExcluded && (allowAllWallets || walletsAllowedForType);
579
+ }).map((wallet)=>{
580
+ const { platform: platform , ...walletInfo } = wallet;
581
+ return walletInfo;
582
+ });
583
+ return {
584
+ wallets: filteredWalletsList
585
+ };
586
+ }
587
+
588
+
589
+
590
+
591
+
592
+
593
+ const $dbe95599a4661140$export$8e0e7ffc78696d30 = async (params)=>{
594
+ const { provider: provider , transaction: transaction } = params;
595
+ return await ($a8bc256d81a5e2c1$export$bacc563de539c6c3)(async ()=>{
596
+ const transactionResponse = await provider.getSigner().sendTransaction(transaction);
597
+ return {
598
+ transactionResponse: transactionResponse
599
+ };
600
+ }, {
601
+ type: ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).TRANSACTION_ERROR
602
+ });
603
+ };
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+ class $4013c5c91bb535f6$export$47a4ed4a38b9eecf extends Error {
613
+ constructor(message){
614
+ super(message);
615
+ this.message = message;
616
+ }
617
+ }
618
+ class $4013c5c91bb535f6$export$4823433c4a67bbc6 {
619
+ constructor(config){
620
+ // validate input
621
+ if (!Object.values((Environment)).includes(config.baseConfig.environment)) throw new $4013c5c91bb535f6$export$47a4ed4a38b9eecf("Invalid checkout configuration of environment");
622
+ this.environment = config.baseConfig.environment;
623
+ this.networkMap = config.baseConfig.environment === (Environment).PRODUCTION ? ($a47e48dd2c04791b$export$6f24f3cef7d501c4) : ($a47e48dd2c04791b$export$3e81fc0987227f10);
624
+ }
625
+ }
626
+
627
+
628
+
629
+
630
+ class $a8cb37a3fc8eb863$export$1f60ba4ec72508a0 {
631
+ constructor(config = ($bc2bfebf768286d3$export$6a2ba3c3bd042990)){
632
+ this.config = new ($4013c5c91bb535f6$export$4823433c4a67bbc6)(config);
633
+ }
634
+ /**
635
+ * Check if a wallet is connected to the current application
636
+ * without requesting permission from the wallet and hence triggering a connect popup.
637
+ * @param {CheckConnectionParams} params - The necessary data required to verify a wallet connection status.
638
+ * @returns Wallet connection status details.
639
+ * @throws {@link ErrorType}
640
+ */ // eslint-disable-next-line class-methods-use-this
641
+ async checkIsWalletConnected(params) {
642
+ return $c99672cf2294e839$export$2d040992269b4717(params.providerPreference);
643
+ }
644
+ /**
645
+ * Establish a connection with a wallet provider such as MetaMask and returns the provider object and the current network details.
646
+ * @param {ConnectParams} params - The necessary data required to establish a connection with a wallet provider.
647
+ * @returns Wallet provider and current network information.
648
+ * @throws {@link ErrorType}
649
+ */ async connect(params) {
650
+ this.providerPreference = params.providerPreference;
651
+ const provider = await $c99672cf2294e839$export$fba2f6c3656e07c1(params);
652
+ const networkInfo = await $de192de6ef100f9f$export$79f13b4cfaaf0d09(this.config, provider);
653
+ return {
654
+ provider: provider,
655
+ network: networkInfo
656
+ };
657
+ }
658
+ /**
659
+ * Switch the currently connected wallet to a new network.
660
+ * @param {SwitchNetworkParams} params - The necessary data required to switch network.
661
+ * @returns The new network information.
662
+ * @throws {@link ErrorType}
663
+ */ async switchNetwork(params) {
664
+ if (!this.providerPreference) throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("connect should be called before switchNetwork to set the provider preference", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).PROVIDER_PREFERENCE_ERROR);
665
+ return await $de192de6ef100f9f$export$b827d9418aeb5dbd(this.config, this.providerPreference, params.provider, params.chainId);
666
+ }
667
+ /**
668
+ * Fetch the balance of the native token of the current connected network or,
669
+ * if a contract address is provided, it will return the balance of that ERC20 token. For example,
670
+ * if the wallet is connected to the Ethereum Mainnet then the function gets the wallet ETH L1 balance.
671
+ * @param {GetBalanceParams} params - The necessary data required to fetch the wallet balance.
672
+ * @returns Native token balance for the given wallet.
673
+ * @throws {@link ErrorType}
674
+ */ async getBalance(params) {
675
+ if (!params.contractAddress || params.contractAddress === "") return await $1564e43dde50bb61$export$df96cd8d56be0ab1(this.config, params.provider, params.walletAddress);
676
+ return await $1564e43dde50bb61$export$60e0fe116a0e6ed0(params.provider, params.walletAddress, params.contractAddress);
677
+ }
678
+ /**
679
+ * Fetch all available balances (ERC20 & Native) of the current connected network of the given wallet.
680
+ * It will loop through the list of allowed tokens and check for balance on each one.
681
+ * @param {GetAllBalancesParams} params - The necessary data required to fetch all the wallet balances.
682
+ * @returns List of tokens balance for the given wallet.
683
+ * @throws {@link ErrorType}
684
+ */ async getAllBalances(params) {
685
+ return $1564e43dde50bb61$export$fee49741664a4d7e(this.config, params.provider, params.walletAddress, params.chainId);
686
+ }
687
+ /**
688
+ * Fetch the list of available networks that a wallet can add or/and switch to.
689
+ * @param {GetNetworkAllowListParams} params - The necessary data required to fetch the list of available networks.
690
+ * @returns List of networks.
691
+ * @throws {@link ErrorType}
692
+ */ async getNetworkAllowList(params) {
693
+ return await $de192de6ef100f9f$export$3043f6442a9ef563(this.config, params);
694
+ }
695
+ /**
696
+ * Get the list of tokens which are allowed to be used with the product.
697
+ * @param {GetTokenAllowListParams} params - The necessary data required to fetch the list of allowed tokens.
698
+ * @returns List of allowed tokens.
699
+ * @throws {@link ErrorType}
700
+ */ // eslint-disable-next-line class-methods-use-this
701
+ async getTokenAllowList(params) {
702
+ return await $efe60cea83bfc4e8$export$473cec51305fdae8(params);
703
+ }
704
+ /**
705
+ * Fetch the list of wallets which are available to connect with.
706
+ * @param {GetWalletAllowListParams} params - The necessary data required to fetch the list of allowed wallets.
707
+ * @returns List of allowed wallets.
708
+ * @throws {@link ErrorType}
709
+ */ // eslint-disable-next-line class-methods-use-this
710
+ async getWalletAllowList(params) {
711
+ return await $5cdde2ffe6360fec$export$a822caa90d7eef09(params);
712
+ }
713
+ /**
714
+ * Send a generic transaction to the provider.
715
+ * @param {SendTransactionParams} params - The necessary data required to send a transaction.
716
+ * @returns Transaction response.
717
+ * @throws {@link ErrorType}
718
+ * @remarks
719
+ * Further documenation can be found at [MetaMask | Sending Transactions](https://docs.metamask.io/guide/sending-transactions.html).
720
+ */ // eslint-disable-next-line class-methods-use-this
721
+ async sendTransaction(params) {
722
+ return await $dbe95599a4661140$export$8e0e7ffc78696d30(params);
723
+ }
724
+ /**
725
+ * Get network information about the currently selected network.
726
+ * @param {GetNetworkParams} params - The necessary data required to get the current network information.
727
+ * @returns Network details.
728
+ * @throws {@link ErrorType}
729
+ */ async getNetworkInfo(params) {
730
+ return await $de192de6ef100f9f$export$79f13b4cfaaf0d09(this.config, params.provider);
731
+ }
732
+ }
733
+
734
+ export { $a47e48dd2c04791b$export$c06e1e7429de6283 as ChainId, $a8cb37a3fc8eb863$export$1f60ba4ec72508a0 as Checkout, $a8bc256d81a5e2c1$export$e3dc0620abde7f5a as CheckoutErrorType, $d176a05e966364ba$export$3bfad4d03ada24c4 as ConnectionProviders, $a47e48dd2c04791b$export$1f05a55fe0680cc7 as NetworkFilterTypes, $08d5ddc39acd6833$export$fd9b17d87f4121d2 as TokenFilterTypes, $4f91c5f280efe242$export$a75605c67ea83a5a as WalletFilterTypes };