@daimo/pay-common 1.7.2 → 1.7.3-dev

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/src/token.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { getAddress, zeroAddress } from "viem";
1
+ import { Address, getAddress, zeroAddress } from "viem";
2
2
  import { assertNotNull } from "./assert";
3
3
  import {
4
4
  arbitrum,
@@ -18,34 +18,36 @@ export type Token = {
18
18
  /** Chain ID, eg 10 for OP Mainnet */
19
19
  chainId: number;
20
20
  /** Ethereum (capitalized) or Solana token address */
21
- token: string;
21
+ token: `0x${string}` | string;
22
22
  /** Name, eg "Wrapped Bitcoin" */
23
23
  name?: string;
24
24
  /** Symbol, eg "WBTC" */
25
25
  symbol: string;
26
26
  /** Token decimals, eg 8 for WBTC */
27
27
  decimals: number;
28
- /** Logo URI. Fetch required, not guaranteed to be base64. */
29
- logoURI?: string;
30
28
  /** Fiat ISO code for stablecoins, eg "USD" or "EUR" */
31
29
  fiatISO?: string;
30
+ /** Logo preview data URI. Generally SVG or 64x64 PNG. */
31
+ logoURI: TokenLogo | string;
32
+ /** Original source image URL. */
33
+ logoSourceURI: string;
32
34
  };
33
35
 
34
36
  export enum TokenLogo {
35
37
  ETH = "https://pay.daimo.com/chain-logos/ethereum.png",
36
- USDC = "https://assets.coingecko.com/coins/images/6319/large/usdc.png",
37
- EURC = "https://assets.coingecko.com/coins/images/26045/large/euro.png",
38
+ USDC = "https://pay.daimo.com/coin-logos/usdc.png",
39
+ EURC = "https://pay.daimo.com/coin-logos/eurc.png",
38
40
  USDT = "https://pay.daimo.com/coin-logos/usdt.png",
39
41
  DAI = "https://pay.daimo.com/coin-logos/dai.png",
40
- POL = "https://assets.coingecko.com/coins/images/4713/large/polygon.png",
41
- AVAX = "https://assets.coingecko.com/coins/images/12559/large/Avalanche_Circle_RedWhite_Trans.png",
42
- BNB = "https://assets.coingecko.com/coins/images/825/large/bnb-icon2_2x.png",
43
- SOL = "https://solana.com/src/img/branding/solanaLogoMark.png",
44
- WLD = "https://assets.coingecko.com/coins/images/31069/large/worldcoin.jpeg",
45
- USDB = "https://assets.coingecko.com/coins/images/35595/large/65c67f0ebf2f6a1bd0feb13c_usdb-icon-yellow.png",
46
- BLAST = "https://assets.coingecko.com/coins/images/35494/large/Blast.jpg",
47
- WBTC = "https://s2.coinmarketcap.com/static/img/coins/128x128/3717.png",
48
- MNT = "https://assets.coingecko.com/coins/images/30980/large/Mantle-Logo-mark.png",
42
+ POL = "https://pay.daimo.com/coin-logos/pol.png",
43
+ AVAX = "https://pay.daimo.com/coin-logos/avax.png",
44
+ BNB = "https://pay.daimo.com/coin-logos/bnb.png",
45
+ SOL = "https://pay.daimo.com/coin-logos/sol.png",
46
+ WLD = "https://pay.daimo.com/coin-logos/wld.jpeg",
47
+ USDB = "https://pay.daimo.com/coin-logos/usdb.png",
48
+ BLAST = "https://pay.daimo.com/coin-logos/blast.jpg",
49
+ WBTC = "https://pay.daimo.com/coin-logos/wbtc.png",
50
+ MNT = "https://pay.daimo.com/coin-logos/mnt.png",
49
51
  }
50
52
 
51
53
  /* --------------------- Tokens Constants --------------------- */
@@ -56,16 +58,16 @@ export enum TokenLogo {
56
58
 
57
59
  export const arbitrumETH = nativeETH(arbitrum.chainId);
58
60
 
59
- export const arbitrumWETH: Token = {
61
+ export const arbitrumWETH: Token = token({
60
62
  chainId: arbitrum.chainId,
61
63
  token: getAddress("0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"),
62
64
  decimals: 18,
63
65
  name: "Wrapped Ether",
64
66
  symbol: "WETH",
65
67
  logoURI: TokenLogo.ETH,
66
- };
68
+ });
67
69
 
68
- export const arbitrumUSDC: Token = {
70
+ export const arbitrumUSDC: Token = token({
69
71
  chainId: arbitrum.chainId,
70
72
  token: getAddress("0xaf88d065e77c8cC2239327C5EDb3A432268e5831"),
71
73
  name: "USD Coin",
@@ -73,9 +75,9 @@ export const arbitrumUSDC: Token = {
73
75
  fiatISO: "USD",
74
76
  decimals: 6,
75
77
  logoURI: TokenLogo.USDC,
76
- };
78
+ });
77
79
 
78
- export const arbitrumAxlUSDC: Token = {
80
+ export const arbitrumAxlUSDC: Token = token({
79
81
  chainId: arbitrum.chainId,
80
82
  token: getAddress("0xEB466342C4d449BC9f53A865D5Cb90586f405215"),
81
83
  decimals: 6,
@@ -83,9 +85,9 @@ export const arbitrumAxlUSDC: Token = {
83
85
  name: "Axelar Wrapped USDC",
84
86
  symbol: "axlUSDC",
85
87
  logoURI: TokenLogo.USDC,
86
- };
88
+ });
87
89
 
88
- export const arbitrumDAI: Token = {
90
+ export const arbitrumDAI: Token = token({
89
91
  chainId: arbitrum.chainId,
90
92
  token: getAddress("0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1"),
91
93
  decimals: 18,
@@ -93,9 +95,9 @@ export const arbitrumDAI: Token = {
93
95
  name: "Dai Stablecoin",
94
96
  symbol: "DAI",
95
97
  logoURI: TokenLogo.DAI,
96
- };
98
+ });
97
99
 
98
- export const arbitrumUSDT: Token = {
100
+ export const arbitrumUSDT: Token = token({
99
101
  chainId: arbitrum.chainId,
100
102
  token: getAddress("0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"),
101
103
  decimals: 6,
@@ -103,9 +105,9 @@ export const arbitrumUSDT: Token = {
103
105
  name: "Tether USD",
104
106
  symbol: "USDT",
105
107
  logoURI: TokenLogo.USDT,
106
- };
108
+ });
107
109
 
108
- export const arbitrumUSDCe: Token = {
110
+ export const arbitrumUSDCe: Token = token({
109
111
  chainId: arbitrum.chainId,
110
112
  token: getAddress("0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"),
111
113
  decimals: 6,
@@ -113,7 +115,7 @@ export const arbitrumUSDCe: Token = {
113
115
  name: "Bridged USD Coin",
114
116
  symbol: "USDCe",
115
117
  logoURI: TokenLogo.USDC,
116
- };
118
+ });
117
119
 
118
120
  const arbitrumTokens: Token[] = [
119
121
  arbitrumETH,
@@ -131,16 +133,16 @@ const arbitrumTokens: Token[] = [
131
133
 
132
134
  export const baseETH = nativeETH(base.chainId);
133
135
 
134
- export const baseWETH: Token = {
136
+ export const baseWETH: Token = token({
135
137
  chainId: base.chainId,
136
138
  token: getAddress("0x4200000000000000000000000000000000000006"),
137
139
  decimals: 18,
138
140
  name: "Wrapped Ether",
139
141
  symbol: "WETH",
140
142
  logoURI: TokenLogo.ETH,
141
- };
143
+ });
142
144
 
143
- export const baseUSDC: Token = {
145
+ export const baseUSDC: Token = token({
144
146
  chainId: base.chainId,
145
147
  token: getAddress("0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"),
146
148
  name: "USD Coin",
@@ -148,9 +150,9 @@ export const baseUSDC: Token = {
148
150
  fiatISO: "USD",
149
151
  decimals: 6,
150
152
  logoURI: TokenLogo.USDC,
151
- };
153
+ });
152
154
 
153
- export const baseEURC: Token = {
155
+ export const baseEURC: Token = token({
154
156
  chainId: base.chainId,
155
157
  token: getAddress("0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42"),
156
158
  decimals: 6,
@@ -158,19 +160,19 @@ export const baseEURC: Token = {
158
160
  name: "EURC",
159
161
  symbol: "EURC",
160
162
  logoURI: TokenLogo.EURC,
161
- };
163
+ });
162
164
 
163
- export const baseUSDbC: Token = {
165
+ export const baseUSDbC: Token = token({
164
166
  chainId: base.chainId,
165
167
  token: getAddress("0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA"),
166
168
  name: "Bridged USD Coin", // USDbC has a bad name & logo on CoinGecko
167
169
  symbol: "USDbC",
168
170
  fiatISO: "USD",
169
171
  decimals: 6,
170
- logoURI: `https://daimo.com/assets/foreign-coin-logos/USDbC.png`,
171
- };
172
+ logoURI: "https://pay.daimo.com/coin-logos/usdbc.png",
173
+ });
172
174
 
173
- export const baseDAI: Token = {
175
+ export const baseDAI: Token = token({
174
176
  chainId: base.chainId,
175
177
  token: getAddress("0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb"),
176
178
  name: "Dai Stablecoin",
@@ -178,9 +180,9 @@ export const baseDAI: Token = {
178
180
  fiatISO: "USD",
179
181
  decimals: 18,
180
182
  logoURI: TokenLogo.DAI,
181
- };
183
+ });
182
184
 
183
- export const baseUSDT: Token = {
185
+ export const baseUSDT: Token = token({
184
186
  chainId: base.chainId,
185
187
  token: getAddress("0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2"),
186
188
  name: "Tether USD",
@@ -188,9 +190,9 @@ export const baseUSDT: Token = {
188
190
  fiatISO: "USD",
189
191
  decimals: 6,
190
192
  logoURI: TokenLogo.USDT,
191
- };
193
+ });
192
194
 
193
- export const baseAxlUSDC: Token = {
195
+ export const baseAxlUSDC: Token = token({
194
196
  chainId: base.chainId,
195
197
  token: getAddress("0xEB466342C4d449BC9f53A865D5Cb90586f405215"),
196
198
  decimals: 6,
@@ -198,7 +200,7 @@ export const baseAxlUSDC: Token = {
198
200
  name: "Axelar Wrapped USDC",
199
201
  symbol: "axlUSDC",
200
202
  logoURI: TokenLogo.USDC,
201
- };
203
+ });
202
204
 
203
205
  const baseTokens: Token[] = [
204
206
  baseETH,
@@ -217,16 +219,16 @@ const baseTokens: Token[] = [
217
219
 
218
220
  export const blastETH = nativeETH(blast.chainId);
219
221
 
220
- export const blastWETH: Token = {
222
+ export const blastWETH: Token = token({
221
223
  chainId: blast.chainId,
222
224
  token: getAddress("0x4300000000000000000000000000000000000004"),
223
225
  decimals: 18,
224
226
  name: "Wrapped Ether",
225
227
  symbol: "WETH",
226
228
  logoURI: TokenLogo.ETH,
227
- };
229
+ });
228
230
 
229
- export const blastUSDB: Token = {
231
+ export const blastUSDB: Token = token({
230
232
  chainId: blast.chainId,
231
233
  token: getAddress("0x4300000000000000000000000000000000000003"),
232
234
  decimals: 18,
@@ -234,7 +236,7 @@ export const blastUSDB: Token = {
234
236
  name: "USDB",
235
237
  symbol: "USDB",
236
238
  logoURI: TokenLogo.USDB,
237
- };
239
+ });
238
240
 
239
241
  const blastTokens: Token[] = [blastETH, blastWETH, blastUSDB];
240
242
 
@@ -249,16 +251,16 @@ export const bscBNB = nativeToken({
249
251
  logoURI: TokenLogo.BNB,
250
252
  });
251
253
 
252
- export const bscWBNB: Token = {
254
+ export const bscWBNB: Token = token({
253
255
  chainId: bsc.chainId,
254
256
  token: getAddress("0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"),
255
257
  decimals: 18,
256
258
  name: "Wrapped BNB",
257
259
  symbol: "WBNB",
258
260
  logoURI: TokenLogo.BNB,
259
- };
261
+ });
260
262
 
261
- export const bscAxlUSDC: Token = {
263
+ export const bscAxlUSDC: Token = token({
262
264
  chainId: bsc.chainId,
263
265
  token: getAddress("0x4268B8F0B87b6Eae5d897996E6b845ddbD99Adf3"),
264
266
  decimals: 6,
@@ -266,9 +268,9 @@ export const bscAxlUSDC: Token = {
266
268
  name: "Axelar Wrapped USDC",
267
269
  symbol: "axlUSDC",
268
270
  logoURI: TokenLogo.USDC,
269
- };
271
+ });
270
272
 
271
- export const bscUSDC: Token = {
273
+ export const bscUSDC: Token = token({
272
274
  chainId: bsc.chainId,
273
275
  token: getAddress("0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"),
274
276
  decimals: 18,
@@ -276,9 +278,9 @@ export const bscUSDC: Token = {
276
278
  name: "USD Coin",
277
279
  symbol: "USDC",
278
280
  logoURI: TokenLogo.USDC,
279
- };
281
+ });
280
282
 
281
- export const bscUSDT: Token = {
283
+ export const bscUSDT: Token = token({
282
284
  chainId: bsc.chainId,
283
285
  token: getAddress("0x55d398326f99059fF775485246999027B3197955"),
284
286
  decimals: 18,
@@ -286,7 +288,7 @@ export const bscUSDT: Token = {
286
288
  name: "Tether USD",
287
289
  symbol: "USDT",
288
290
  logoURI: TokenLogo.USDT,
289
- };
291
+ });
290
292
 
291
293
  const bscTokens: Token[] = [bscBNB, bscWBNB, bscAxlUSDC, bscUSDC, bscUSDT];
292
294
 
@@ -296,16 +298,16 @@ const bscTokens: Token[] = [bscBNB, bscWBNB, bscAxlUSDC, bscUSDC, bscUSDT];
296
298
 
297
299
  export const ethereumETH = nativeETH(ethereum.chainId);
298
300
 
299
- export const ethereumWETH: Token = {
301
+ export const ethereumWETH: Token = token({
300
302
  chainId: ethereum.chainId,
301
303
  token: getAddress("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"),
302
304
  decimals: 18,
303
305
  name: "Wrapped Ether",
304
306
  symbol: "WETH",
305
307
  logoURI: TokenLogo.ETH,
306
- };
308
+ });
307
309
 
308
- export const ethereumUSDC: Token = {
310
+ export const ethereumUSDC: Token = token({
309
311
  chainId: ethereum.chainId,
310
312
  token: getAddress("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"),
311
313
  decimals: 6,
@@ -313,9 +315,9 @@ export const ethereumUSDC: Token = {
313
315
  name: "USD Coin",
314
316
  symbol: "USDC",
315
317
  logoURI: TokenLogo.USDC,
316
- };
318
+ });
317
319
 
318
- export const ethereumDAI: Token = {
320
+ export const ethereumDAI: Token = token({
319
321
  chainId: ethereum.chainId,
320
322
  token: getAddress("0x6B175474E89094C44Da98b954EedeAC495271d0F"),
321
323
  decimals: 18,
@@ -323,9 +325,9 @@ export const ethereumDAI: Token = {
323
325
  name: "Dai Stablecoin",
324
326
  symbol: "DAI",
325
327
  logoURI: TokenLogo.DAI,
326
- };
328
+ });
327
329
 
328
- export const ethereumUSDT: Token = {
330
+ export const ethereumUSDT: Token = token({
329
331
  chainId: ethereum.chainId,
330
332
  token: getAddress("0xdAC17F958D2ee523a2206206994597C13D831ec7"),
331
333
  decimals: 6,
@@ -333,9 +335,9 @@ export const ethereumUSDT: Token = {
333
335
  name: "Tether USD",
334
336
  symbol: "USDT",
335
337
  logoURI: TokenLogo.USDT,
336
- };
338
+ });
337
339
 
338
- export const ethereumEURC: Token = {
340
+ export const ethereumEURC: Token = token({
339
341
  chainId: ethereum.chainId,
340
342
  token: getAddress("0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c"),
341
343
  decimals: 6,
@@ -343,7 +345,7 @@ export const ethereumEURC: Token = {
343
345
  name: "EURC",
344
346
  symbol: "EURC",
345
347
  logoURI: TokenLogo.EURC,
346
- };
348
+ });
347
349
 
348
350
  const ethereumTokens: Token[] = [
349
351
  ethereumETH,
@@ -360,16 +362,16 @@ const ethereumTokens: Token[] = [
360
362
 
361
363
  export const lineaETH = nativeETH(linea.chainId);
362
364
 
363
- export const lineaWETH: Token = {
365
+ export const lineaWETH: Token = token({
364
366
  chainId: linea.chainId,
365
367
  token: getAddress("0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f"),
366
368
  decimals: 18,
367
369
  name: "Wrapped Ether",
368
370
  symbol: "WETH",
369
371
  logoURI: TokenLogo.ETH,
370
- };
372
+ });
371
373
 
372
- export const lineaUSDC: Token = {
374
+ export const lineaUSDC: Token = token({
373
375
  chainId: linea.chainId,
374
376
  token: getAddress("0x176211869cA2b568f2A7D4EE941E073a821EE1ff"),
375
377
  decimals: 6,
@@ -377,9 +379,9 @@ export const lineaUSDC: Token = {
377
379
  name: "USD Coin",
378
380
  symbol: "USDC",
379
381
  logoURI: TokenLogo.USDC,
380
- };
382
+ });
381
383
 
382
- export const lineaAxlUSDC: Token = {
384
+ export const lineaAxlUSDC: Token = token({
383
385
  chainId: linea.chainId,
384
386
  token: getAddress("0xEB466342C4d449BC9f53A865D5Cb90586f405215"),
385
387
  decimals: 6,
@@ -387,9 +389,9 @@ export const lineaAxlUSDC: Token = {
387
389
  name: "Axelar Wrapped USDC",
388
390
  symbol: "axlUSDC",
389
391
  logoURI: TokenLogo.USDC,
390
- };
392
+ });
391
393
 
392
- export const lineaDAI: Token = {
394
+ export const lineaDAI: Token = token({
393
395
  chainId: linea.chainId,
394
396
  token: getAddress("0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5"),
395
397
  decimals: 18,
@@ -397,7 +399,7 @@ export const lineaDAI: Token = {
397
399
  name: "Dai Stablecoin",
398
400
  symbol: "DAI",
399
401
  logoURI: TokenLogo.DAI,
400
- };
402
+ });
401
403
 
402
404
  const lineaTokens: Token[] = [
403
405
  lineaETH,
@@ -418,16 +420,16 @@ export const mantleMNT = nativeToken({
418
420
  logoURI: TokenLogo.MNT,
419
421
  });
420
422
 
421
- export const mantleWMNT: Token = {
423
+ export const mantleWMNT: Token = token({
422
424
  chainId: mantle.chainId,
423
425
  token: getAddress("0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8"),
424
426
  decimals: 18,
425
427
  name: "Wrapped Mantle",
426
428
  symbol: "WMNT",
427
429
  logoURI: TokenLogo.MNT,
428
- };
430
+ });
429
431
 
430
- export const mantleBridgedUSDC: Token = {
432
+ export const mantleBridgedUSDC: Token = token({
431
433
  chainId: mantle.chainId,
432
434
  token: getAddress("0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9"),
433
435
  decimals: 6,
@@ -435,9 +437,9 @@ export const mantleBridgedUSDC: Token = {
435
437
  name: "USD Coin",
436
438
  symbol: "USDC",
437
439
  logoURI: TokenLogo.USDC,
438
- };
440
+ });
439
441
 
440
- export const mantleUSDT: Token = {
442
+ export const mantleUSDT: Token = token({
441
443
  chainId: mantle.chainId,
442
444
  token: getAddress("0x201eba5cc46d216ce6dc03f6a759e8e766e956ae"),
443
445
  decimals: 6,
@@ -445,9 +447,9 @@ export const mantleUSDT: Token = {
445
447
  name: "Tether USD",
446
448
  symbol: "USDT",
447
449
  logoURI: TokenLogo.USDT,
448
- };
450
+ });
449
451
 
450
- export const mantleAxlUSDC: Token = {
452
+ export const mantleAxlUSDC: Token = token({
451
453
  chainId: mantle.chainId,
452
454
  token: getAddress("0xEB466342C4d449BC9f53A865D5Cb90586f405215"),
453
455
  decimals: 6,
@@ -455,7 +457,7 @@ export const mantleAxlUSDC: Token = {
455
457
  name: "Axelar Wrapped USDC",
456
458
  symbol: "axlUSDC",
457
459
  logoURI: TokenLogo.USDC,
458
- };
460
+ });
459
461
 
460
462
  const mantleTokens: Token[] = [
461
463
  mantleMNT,
@@ -471,16 +473,16 @@ const mantleTokens: Token[] = [
471
473
 
472
474
  export const optimismETH = nativeETH(optimism.chainId);
473
475
 
474
- export const optimismWETH: Token = {
476
+ export const optimismWETH: Token = token({
475
477
  chainId: optimism.chainId,
476
478
  token: getAddress("0x4200000000000000000000000000000000000006"),
477
479
  decimals: 18,
478
480
  name: "Wrapped Ether",
479
481
  symbol: "WETH",
480
482
  logoURI: TokenLogo.ETH,
481
- };
483
+ });
482
484
 
483
- export const optimismUSDC: Token = {
485
+ export const optimismUSDC: Token = token({
484
486
  chainId: optimism.chainId,
485
487
  token: getAddress("0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"),
486
488
  decimals: 6,
@@ -488,9 +490,9 @@ export const optimismUSDC: Token = {
488
490
  name: "USD Coin",
489
491
  symbol: "USDC",
490
492
  logoURI: TokenLogo.USDC,
491
- };
493
+ });
492
494
 
493
- export const optimismAxlUSDC: Token = {
495
+ export const optimismAxlUSDC: Token = token({
494
496
  chainId: optimism.chainId,
495
497
  token: getAddress("0xEB466342C4d449BC9f53A865D5Cb90586f405215"),
496
498
  decimals: 6,
@@ -498,9 +500,9 @@ export const optimismAxlUSDC: Token = {
498
500
  name: "Axelar Wrapped USDC",
499
501
  symbol: "axlUSDC",
500
502
  logoURI: TokenLogo.USDC,
501
- };
503
+ });
502
504
 
503
- export const optimismDAI: Token = {
505
+ export const optimismDAI: Token = token({
504
506
  chainId: optimism.chainId,
505
507
  token: getAddress("0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1"),
506
508
  decimals: 18,
@@ -508,9 +510,9 @@ export const optimismDAI: Token = {
508
510
  name: "Dai Stablecoin",
509
511
  symbol: "DAI",
510
512
  logoURI: TokenLogo.DAI,
511
- };
513
+ });
512
514
 
513
- export const optimismUSDT: Token = {
515
+ export const optimismUSDT: Token = token({
514
516
  chainId: optimism.chainId,
515
517
  token: getAddress("0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"),
516
518
  decimals: 6,
@@ -518,9 +520,9 @@ export const optimismUSDT: Token = {
518
520
  name: "Tether USD",
519
521
  symbol: "USDT",
520
522
  logoURI: TokenLogo.USDT,
521
- };
523
+ });
522
524
 
523
- export const optimismUSDCe: Token = {
525
+ export const optimismUSDCe: Token = token({
524
526
  chainId: optimism.chainId,
525
527
  token: getAddress("0x7F5c764cBc14f9669B88837ca1490cCa17c31607"),
526
528
  decimals: 6,
@@ -528,7 +530,7 @@ export const optimismUSDCe: Token = {
528
530
  name: "Bridged USD Coin",
529
531
  symbol: "USDCe",
530
532
  logoURI: TokenLogo.USDC,
531
- };
533
+ });
532
534
 
533
535
  const optimismTokens = [
534
536
  optimismETH,
@@ -551,25 +553,25 @@ export const polygonPOL = nativeToken({
551
553
  logoURI: TokenLogo.POL,
552
554
  });
553
555
 
554
- export const polygonWPOL: Token = {
556
+ export const polygonWPOL: Token = token({
555
557
  chainId: polygon.chainId,
556
558
  token: getAddress("0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"),
557
559
  decimals: 18,
558
560
  name: "Wrapped Polygon",
559
561
  symbol: "WPOL",
560
562
  logoURI: TokenLogo.POL,
561
- };
563
+ });
562
564
 
563
- export const polygonWETH: Token = {
565
+ export const polygonWETH: Token = token({
564
566
  chainId: polygon.chainId,
565
567
  token: getAddress("0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619"),
566
568
  decimals: 18,
567
569
  name: "Wrapped Ether",
568
570
  symbol: "WETH",
569
571
  logoURI: TokenLogo.ETH,
570
- };
572
+ });
571
573
 
572
- export const polygonUSDC: Token = {
574
+ export const polygonUSDC: Token = token({
573
575
  chainId: polygon.chainId,
574
576
  token: getAddress("0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"),
575
577
  decimals: 6,
@@ -577,9 +579,9 @@ export const polygonUSDC: Token = {
577
579
  name: "USD Coin",
578
580
  symbol: "USDC",
579
581
  logoURI: TokenLogo.USDC,
580
- };
582
+ });
581
583
 
582
- export const polygonAxlUSDC: Token = {
584
+ export const polygonAxlUSDC: Token = token({
583
585
  chainId: polygon.chainId,
584
586
  token: getAddress("0x750e4C4984a9e0f12978eA6742Bc1c5D248f40ed"),
585
587
  decimals: 6,
@@ -587,9 +589,9 @@ export const polygonAxlUSDC: Token = {
587
589
  name: "Axelar Wrapped USDC",
588
590
  symbol: "axlUSDC",
589
591
  logoURI: TokenLogo.USDC,
590
- };
592
+ });
591
593
 
592
- export const polygonDAI: Token = {
594
+ export const polygonDAI: Token = token({
593
595
  chainId: polygon.chainId,
594
596
  token: getAddress("0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063"),
595
597
  decimals: 18,
@@ -597,9 +599,9 @@ export const polygonDAI: Token = {
597
599
  name: "Dai Stablecoin",
598
600
  symbol: "DAI",
599
601
  logoURI: TokenLogo.DAI,
600
- };
602
+ });
601
603
 
602
- export const polygonUSDT: Token = {
604
+ export const polygonUSDT: Token = token({
603
605
  chainId: polygon.chainId,
604
606
  token: getAddress("0xc2132D05D31c914a87C6611C10748AEb04B58e8F"),
605
607
  decimals: 6,
@@ -607,9 +609,9 @@ export const polygonUSDT: Token = {
607
609
  name: "Tether USD",
608
610
  symbol: "USDT",
609
611
  logoURI: TokenLogo.USDT,
610
- };
612
+ });
611
613
 
612
- export const polygonUSDCe: Token = {
614
+ export const polygonUSDCe: Token = token({
613
615
  chainId: polygon.chainId,
614
616
  token: getAddress("0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"),
615
617
  decimals: 6,
@@ -617,7 +619,7 @@ export const polygonUSDCe: Token = {
617
619
  name: "USD Coin (PoS)",
618
620
  symbol: "USDCe",
619
621
  logoURI: TokenLogo.USDC,
620
- };
622
+ });
621
623
 
622
624
  const polygonTokens: Token[] = [
623
625
  polygonPOL,
@@ -643,16 +645,16 @@ export const solanaSOL = nativeToken({
643
645
  decimals: 9,
644
646
  });
645
647
 
646
- export const solanaWSOL: Token = {
648
+ export const solanaWSOL: Token = token({
647
649
  chainId: solana.chainId,
648
650
  token: "So11111111111111111111111111111111111111112",
649
651
  decimals: 9,
650
652
  name: "Wrapped SOL",
651
653
  symbol: "WSOL",
652
654
  logoURI: TokenLogo.SOL,
653
- };
655
+ });
654
656
 
655
- export const solanaUSDC: Token = {
657
+ export const solanaUSDC: Token = token({
656
658
  chainId: solana.chainId,
657
659
  token: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
658
660
  decimals: 6,
@@ -660,7 +662,7 @@ export const solanaUSDC: Token = {
660
662
  name: "USD Coin",
661
663
  symbol: "USDC",
662
664
  logoURI: TokenLogo.USDC,
663
- };
665
+ });
664
666
 
665
667
  const solanaTokens: Token[] = [solanaUSDC, solanaWSOL, solanaSOL];
666
668
 
@@ -670,25 +672,25 @@ const solanaTokens: Token[] = [solanaUSDC, solanaWSOL, solanaSOL];
670
672
 
671
673
  export const worldchainETH = nativeETH(worldchain.chainId);
672
674
 
673
- export const worldchainWETH: Token = {
675
+ export const worldchainWETH: Token = token({
674
676
  chainId: worldchain.chainId,
675
677
  token: getAddress("0x4200000000000000000000000000000000000006"),
676
678
  decimals: 18,
677
679
  name: "Wrapped Ether",
678
680
  symbol: "WETH",
679
681
  logoURI: TokenLogo.ETH,
680
- };
682
+ });
681
683
 
682
- export const worldchainWBTC: Token = {
684
+ export const worldchainWBTC: Token = token({
683
685
  chainId: worldchain.chainId,
684
686
  token: getAddress("0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3"),
685
687
  decimals: 8,
686
688
  name: "Wrapped Bitcoin",
687
689
  symbol: "WBTC",
688
690
  logoURI: TokenLogo.WBTC,
689
- };
691
+ });
690
692
 
691
- export const worldchainUSDCe: Token = {
693
+ export const worldchainUSDCe: Token = token({
692
694
  chainId: worldchain.chainId,
693
695
  token: getAddress("0x79A02482A880bCE3F13e09Da970dC34db4CD24d1"),
694
696
  decimals: 6,
@@ -696,16 +698,16 @@ export const worldchainUSDCe: Token = {
696
698
  name: "Bridged USD Coin",
697
699
  symbol: "USDCe",
698
700
  logoURI: TokenLogo.USDC,
699
- };
701
+ });
700
702
 
701
- export const worldchainWLD: Token = {
703
+ export const worldchainWLD: Token = token({
702
704
  chainId: worldchain.chainId,
703
705
  token: getAddress("0x2cFc85d8E48F8EAB294be644d9E25C3030863003"),
704
706
  decimals: 18,
705
707
  name: "Worldcoin",
706
708
  symbol: "WLD",
707
709
  logoURI: TokenLogo.WLD,
708
- };
710
+ });
709
711
 
710
712
  const worldchainTokens: Token[] = [
711
713
  worldchainETH,
@@ -938,5 +940,35 @@ function nativeToken({
938
940
  decimals,
939
941
  symbol,
940
942
  logoURI,
943
+ logoSourceURI: logoURI,
944
+ };
945
+ }
946
+
947
+ export function token({
948
+ chainId,
949
+ token,
950
+ name,
951
+ symbol,
952
+ decimals,
953
+ fiatISO,
954
+ logoURI,
955
+ }: {
956
+ chainId: number;
957
+ token: Address | string;
958
+ name: string;
959
+ symbol: string;
960
+ decimals: number;
961
+ fiatISO?: string;
962
+ logoURI: string;
963
+ }): Token {
964
+ return {
965
+ chainId,
966
+ token,
967
+ name,
968
+ symbol,
969
+ decimals,
970
+ fiatISO,
971
+ logoURI,
972
+ logoSourceURI: logoURI,
941
973
  };
942
974
  }