@swapkit/helpers 3.0.0-beta.1 → 3.0.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/api/index.cjs +2 -2
  2. package/dist/api/index.cjs.map +3 -3
  3. package/dist/api/index.js +2 -2
  4. package/dist/api/index.js.map +3 -3
  5. package/dist/chunk-509k5s4y.js +3 -0
  6. package/dist/chunk-509k5s4y.js.map +10 -0
  7. package/dist/chunk-6vvdbb6s.js +4 -0
  8. package/dist/chunk-6vvdbb6s.js.map +10 -0
  9. package/dist/{chunk-x2fe9scs.js → chunk-8pft100q.js} +2 -2
  10. package/dist/{chunk-x2fe9scs.js.map → chunk-8pft100q.js.map} +2 -2
  11. package/dist/chunk-abwjsvdg.js +3 -0
  12. package/dist/chunk-abwjsvdg.js.map +10 -0
  13. package/dist/chunk-ahpfxkx0.js +4 -0
  14. package/dist/chunk-ahpfxkx0.js.map +10 -0
  15. package/dist/chunk-bz1hfk9z.js +3 -0
  16. package/dist/chunk-bz1hfk9z.js.map +10 -0
  17. package/dist/chunk-cs1sv94g.js +3 -0
  18. package/dist/chunk-cs1sv94g.js.map +10 -0
  19. package/dist/{chunk-v4dvhh90.js → chunk-dbsrwnw2.js} +2 -2
  20. package/dist/{chunk-v4dvhh90.js.map → chunk-dbsrwnw2.js.map} +2 -2
  21. package/dist/chunk-ekd1k975.js +4 -0
  22. package/dist/chunk-ekd1k975.js.map +10 -0
  23. package/dist/chunk-hqs6577q.js +3 -0
  24. package/dist/chunk-hqs6577q.js.map +10 -0
  25. package/dist/chunk-j2emm8jm.js +3 -0
  26. package/dist/chunk-j2emm8jm.js.map +10 -0
  27. package/dist/chunk-kdcsgh3q.js +4 -0
  28. package/dist/chunk-kdcsgh3q.js.map +10 -0
  29. package/dist/{chunk-1gwdyyeh.js → chunk-kr69v1tm.js} +2 -2
  30. package/dist/{chunk-1gwdyyeh.js.map → chunk-kr69v1tm.js.map} +2 -2
  31. package/dist/chunk-mjavf655.js +3 -0
  32. package/dist/chunk-mjavf655.js.map +10 -0
  33. package/dist/chunk-mmwvr2y8.js +4 -0
  34. package/dist/chunk-mmwvr2y8.js.map +10 -0
  35. package/dist/chunk-q8xy3739.js +4 -0
  36. package/dist/chunk-q8xy3739.js.map +10 -0
  37. package/dist/{chunk-3ptwhtpd.js → chunk-qr6hqr2f.js} +2 -2
  38. package/dist/{chunk-3ptwhtpd.js.map → chunk-qr6hqr2f.js.map} +2 -2
  39. package/dist/chunk-rqj9janq.js +3 -0
  40. package/dist/chunk-rqj9janq.js.map +10 -0
  41. package/dist/chunk-s3f27t8q.js +3 -0
  42. package/dist/chunk-s3f27t8q.js.map +10 -0
  43. package/dist/chunk-tq87xn7m.js +4 -0
  44. package/dist/chunk-tq87xn7m.js.map +10 -0
  45. package/dist/chunk-wmxwvv8c.js +4 -0
  46. package/dist/chunk-wmxwvv8c.js.map +10 -0
  47. package/dist/chunk-wrjh857m.js +4 -0
  48. package/dist/chunk-wrjh857m.js.map +10 -0
  49. package/dist/chunk-xyczdrny.js +4 -0
  50. package/dist/chunk-xyczdrny.js.map +10 -0
  51. package/dist/chunk-z80467hm.js +3 -0
  52. package/dist/chunk-z80467hm.js.map +10 -0
  53. package/dist/chunk-z8emzpyc.js +4 -0
  54. package/dist/chunk-z8emzpyc.js.map +10 -0
  55. package/dist/{chunk-a0fxkkfh.js → chunk-zsakm9d3.js} +2 -3
  56. package/dist/chunk-zsakm9d3.js.map +10 -0
  57. package/dist/index.cjs +3 -3
  58. package/dist/index.cjs.map +9 -9
  59. package/dist/index.js +3 -3
  60. package/dist/index.js.map +9 -9
  61. package/dist/tokens/index.js +1 -1
  62. package/package.json +6 -5
  63. package/src/api/thornode/endpoints.ts +22 -4
  64. package/src/api/thornode/types.ts +3 -2
  65. package/src/modules/__tests__/assetValue.test.ts +23 -23
  66. package/src/modules/assetValue.ts +65 -5
  67. package/src/modules/swapKitConfig.ts +0 -1
  68. package/src/tokens/lists/camelot_v3.ts +114 -4
  69. package/src/tokens/lists/caviar_v1.ts +1 -1
  70. package/src/tokens/lists/chainflip.ts +1 -1
  71. package/src/tokens/lists/jupiter.ts +13685 -11126
  72. package/src/tokens/lists/mayachain.ts +2 -48
  73. package/src/tokens/lists/oneinch.ts +439 -3939
  74. package/src/tokens/lists/pancakeswap.ts +907 -17
  75. package/src/tokens/lists/pangolin_v1.ts +2 -82
  76. package/src/tokens/lists/sushiswap_v2.ts +2 -392
  77. package/src/tokens/lists/thorchain.ts +18 -8
  78. package/src/tokens/lists/traderjoe_v2.ts +182 -922
  79. package/src/tokens/lists/uniswap_v2.ts +6300 -1502
  80. package/src/tokens/lists/uniswap_v3.ts +14517 -1748
  81. package/src/types/quotes.ts +1 -0
  82. package/src/types/wallet.ts +1 -0
  83. package/src/utils/asset.ts +14 -25
  84. package/src/utils/wallets.ts +1 -1
  85. package/dist/chunk-2bhvezjh.js +0 -4
  86. package/dist/chunk-2bhvezjh.js.map +0 -10
  87. package/dist/chunk-40epvqbm.js +0 -3
  88. package/dist/chunk-40epvqbm.js.map +0 -10
  89. package/dist/chunk-49nsjaay.js +0 -3
  90. package/dist/chunk-49nsjaay.js.map +0 -10
  91. package/dist/chunk-4b66tryh.js +0 -4
  92. package/dist/chunk-4b66tryh.js.map +0 -10
  93. package/dist/chunk-4kzjrrjv.js +0 -3
  94. package/dist/chunk-4kzjrrjv.js.map +0 -10
  95. package/dist/chunk-5m49s8z8.js +0 -4
  96. package/dist/chunk-5m49s8z8.js.map +0 -10
  97. package/dist/chunk-9b6y7r75.js +0 -4
  98. package/dist/chunk-9b6y7r75.js.map +0 -10
  99. package/dist/chunk-9zcbvqq2.js +0 -3
  100. package/dist/chunk-9zcbvqq2.js.map +0 -10
  101. package/dist/chunk-a0bpx1q3.js +0 -4
  102. package/dist/chunk-a0bpx1q3.js.map +0 -10
  103. package/dist/chunk-a0fxkkfh.js.map +0 -10
  104. package/dist/chunk-bg6pz5qh.js +0 -3
  105. package/dist/chunk-bg6pz5qh.js.map +0 -10
  106. package/dist/chunk-cpdcnp2x.js +0 -4
  107. package/dist/chunk-cpdcnp2x.js.map +0 -10
  108. package/dist/chunk-ftdtdkhk.js +0 -3
  109. package/dist/chunk-ftdtdkhk.js.map +0 -10
  110. package/dist/chunk-gjeaw024.js +0 -4
  111. package/dist/chunk-gjeaw024.js.map +0 -10
  112. package/dist/chunk-hdcdd2cf.js +0 -4
  113. package/dist/chunk-hdcdd2cf.js.map +0 -10
  114. package/dist/chunk-q2pb6ggs.js +0 -3
  115. package/dist/chunk-q2pb6ggs.js.map +0 -10
  116. package/dist/chunk-t9s9811k.js +0 -3
  117. package/dist/chunk-t9s9811k.js.map +0 -10
  118. package/dist/chunk-vzptz52h.js +0 -4
  119. package/dist/chunk-vzptz52h.js.map +0 -10
  120. package/dist/chunk-wyr5d8ad.js +0 -3
  121. package/dist/chunk-wyr5d8ad.js.map +0 -10
  122. package/dist/chunk-x0jsq6ag.js +0 -3
  123. package/dist/chunk-x0jsq6ag.js.map +0 -10
  124. package/dist/chunk-xm5jkehh.js +0 -4
  125. package/dist/chunk-xm5jkehh.js.map +0 -10
  126. package/dist/chunk-xzb1nshn.js +0 -3
  127. package/dist/chunk-xzb1nshn.js.map +0 -10
@@ -1,3 +1,3 @@
1
- import{a as w}from"../chunk-a0bpx1q3.js";import{b as C}from"../chunk-gjeaw024.js";import{c as p}from"../chunk-4b66tryh.js";import{d as m}from"../chunk-cpdcnp2x.js";import{e as x}from"../chunk-fr86y3rx.js";import{f}from"../chunk-hdcdd2cf.js";import{g as l}from"../chunk-5m49s8z8.js";import{h as L}from"../chunk-xm5jkehh.js";import{i as e}from"../chunk-a0fxkkfh.js";import{j as V}from"../chunk-vzptz52h.js";import{k as t}from"../chunk-9b6y7r75.js";import{l as a}from"../chunk-v4dvhh90.js";import{m as i}from"../chunk-1gwdyyeh.js";import{n as o}from"../chunk-2bhvezjh.js";import{p as T}from"../chunk-3wnfcm30.js";var s={};T(s,{UniswapV3List:()=>C,UniswapV2List:()=>w,TraderjoeV2List:()=>V,ThorchainList:()=>e,SushiswapList:()=>L,PangolinList:()=>l,PancakeswapList:()=>f,OpenOceanV2List:()=>x,OneInchList:()=>m,MayaList:()=>p,JupiterList:()=>o,ChainflipList:()=>i,CaviarV1List:()=>a,CamelotV3List:()=>t});function B(O){for(let c of Object.values(s)){let r=c.tokens.find((P)=>P.identifier===O);if(r?.logoURI)return r.logoURI}return}export{s as tokenLists,B as getTokenIcon};
1
+ import{a as w}from"../chunk-ahpfxkx0.js";import{b as C}from"../chunk-xyczdrny.js";import{c as p}from"../chunk-q8xy3739.js";import{d as m}from"../chunk-z8emzpyc.js";import{e as x}from"../chunk-fr86y3rx.js";import{f}from"../chunk-tq87xn7m.js";import{g as l}from"../chunk-wmxwvv8c.js";import{h as L}from"../chunk-wrjh857m.js";import{i as e}from"../chunk-kdcsgh3q.js";import{j as V}from"../chunk-ekd1k975.js";import{k as t}from"../chunk-mmwvr2y8.js";import{l as a}from"../chunk-dbsrwnw2.js";import{m as i}from"../chunk-kr69v1tm.js";import{n as o}from"../chunk-6vvdbb6s.js";import{p as T}from"../chunk-3wnfcm30.js";var s={};T(s,{UniswapV3List:()=>C,UniswapV2List:()=>w,TraderjoeV2List:()=>V,ThorchainList:()=>e,SushiswapList:()=>L,PangolinList:()=>l,PancakeswapList:()=>f,OpenOceanV2List:()=>x,OneInchList:()=>m,MayaList:()=>p,JupiterList:()=>o,ChainflipList:()=>i,CaviarV1List:()=>a,CamelotV3List:()=>t});function B(O){for(let c of Object.values(s)){let r=c.tokens.find((P)=>P.identifier===O);if(r?.logoURI)return r.logoURI}return}export{s as tokenLists,B as getTokenIcon};
2
2
 
3
3
  //# debugId=4914D9B24FD3F03364756E2164756E21
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "author": "swapkit-oss",
3
3
  "dependencies": {
4
- "ts-pattern": "5.7.0",
5
- "zod": "3.24.3",
6
- "zustand": "5.0.3"
4
+ "ethers": "6.14.3",
5
+ "ts-pattern": "5.7.1",
6
+ "zod": "3.25.57",
7
+ "zustand": "5.0.5"
7
8
  },
8
9
  "description": "SwapKit - Helpers",
9
10
  "devDependencies": {
10
- "@swapkit/toolboxes": "1.0.0-beta.1"
11
+ "@swapkit/toolboxes": "1.0.0-beta.16"
11
12
  },
12
13
  "exports": {
13
14
  ".": {
@@ -54,5 +55,5 @@
54
55
  "type-check:go": "tsgo"
55
56
  },
56
57
  "type": "module",
57
- "version": "3.0.0-beta.1"
58
+ "version": "3.0.0-beta.11"
58
59
  }
@@ -34,8 +34,8 @@ function getNameServiceBaseUrl(type?: THORNodeType) {
34
34
  return `${baseUrl(type)}/${nsType}`;
35
35
  }
36
36
 
37
- export function getLastBlock(type?: THORNodeType) {
38
- return RequestClient.get<LastBlockItem[]>(`${baseUrl(type)}/lastblock`);
37
+ export function getLastBlock<T extends THORNodeType = "thorchain">(type: T = "thorchain" as T) {
38
+ return RequestClient.get<LastBlockItem<T>[]>(`${baseUrl(type)}/lastblock`);
39
39
  }
40
40
 
41
41
  export function getThorchainQueue(type?: THORNodeType) {
@@ -54,8 +54,26 @@ export function getInboundAddresses(type?: THORNodeType) {
54
54
  return RequestClient.get<InboundAddressesItem[]>(`${baseUrl(type)}/inbound_addresses`);
55
55
  }
56
56
 
57
- export function getTHORNodeTNSDetails({ type, name }: { type?: THORNodeType; name: string }) {
58
- return RequestClient.get<THORNodeTNSDetails>(`${getNameServiceBaseUrl(type)}/${name}`);
57
+ export async function getTHORNodeTNSDetails({
58
+ type,
59
+ name,
60
+ }: { type?: THORNodeType; name: string }): Promise<THORNodeTNSDetails> {
61
+ try {
62
+ const result = await RequestClient.get<THORNodeTNSDetails>(
63
+ `${getNameServiceBaseUrl(type)}/${name}`,
64
+ );
65
+ return result;
66
+ } catch (_error) {
67
+ // If we get an error, the name doesn't exist and is available for registration
68
+ return {
69
+ name,
70
+ expire_block_height: 0,
71
+ owner: "",
72
+ preferred_asset: "",
73
+ affiliate_collector_rune: "",
74
+ aliases: [],
75
+ };
76
+ }
59
77
  }
60
78
 
61
79
  export async function getTNSPreferredAsset({ type, tns }: { type?: THORNodeType; tns: string }) {
@@ -21,11 +21,12 @@ export type InboundAddressesItem = {
21
21
  router?: string;
22
22
  };
23
23
 
24
- export type LastBlockItem = {
24
+ export type LastBlockItem<T extends THORNodeType = "thorchain"> = {
25
25
  chain: string;
26
26
  last_observed_in: number;
27
27
  last_signed_out: number;
28
- thorchain: number;
28
+ } & {
29
+ [K in T]: number;
29
30
  };
30
31
 
31
32
  export type NodeItem = {
@@ -13,7 +13,7 @@ describe("AssetValue", () => {
13
13
  symbol: "USDC-0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
14
14
  });
15
15
  expect(fakeAvaxUSDCAsset.toString()).toBe(
16
- "AVAX.USDC-0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
16
+ "AVAX.USDC-0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
17
17
  );
18
18
 
19
19
  const ethSynth = new AssetValue({
@@ -115,20 +115,20 @@ describe("AssetValue", () => {
115
115
  const arbWeth = AssetValue.from({
116
116
  asset: "ARB.WETH-0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
117
117
  });
118
- expect(arbWeth.toString()).toBe("ARB.WETH-0x82af49447d8a07e3bd95bd0d56f35241523fbab1");
118
+ expect(arbWeth.toString()).toBe("ARB.WETH-0x82aF49447D8a07e3bd95BD0d56f35241523fBab1");
119
119
 
120
120
  const baseAssetFromString = AssetValue.from({
121
121
  asset: "BASE.USDC-0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
122
122
  });
123
123
  expect(baseAssetFromString.toString()).toBe(
124
- "BASE.USDC-0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
124
+ "BASE.USDC-0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
125
125
  );
126
126
 
127
127
  const avaxSolanaAsset = AssetValue.from({
128
128
  asset: "AVAX.SOL-0XFE6B19286885A4F7F55ADAD09C3CD1F906D2478F",
129
129
  });
130
130
  expect(avaxSolanaAsset.toString()).toBe(
131
- "AVAX.SOL-0xfe6b19286885a4f7f55adad09c3cd1f906d2478f",
131
+ "AVAX.SOL-0xFE6B19286885a4F7F55AdAD09C3Cd1f906D2478F",
132
132
  );
133
133
  });
134
134
  });
@@ -190,11 +190,11 @@ describe("AssetValue", () => {
190
190
  symbol: "USDC-0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
191
191
  });
192
192
  expect(fakeAvaxUSDCAsset.toUrl()).toBe(
193
- "AVAX.USDC-0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
193
+ "AVAX.USDC-0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
194
194
  );
195
195
 
196
196
  const thor = AssetValue.from({ asset: "ETH.THOR" });
197
- expect(thor.toUrl()).toBe("ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044");
197
+ expect(thor.toUrl()).toBe("ETH.THOR-0xa5f2211B9b8170F694421f2046281775E8468044");
198
198
 
199
199
  const ethSynth = new AssetValue({
200
200
  chain: Chain.THORChain,
@@ -299,10 +299,10 @@ describe("AssetValue", () => {
299
299
  chain: Chain.Avalanche,
300
300
  symbol: "USDC-0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
301
301
  });
302
- expect(avaxUSDCAsset.toString()).toBe("AVAX.USDC-0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e");
302
+ expect(avaxUSDCAsset.toString()).toBe("AVAX.USDC-0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E");
303
303
 
304
304
  const thor = AssetValue.from({ asset: "ETH.THOR" });
305
- expect(thor.toString()).toBe("ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044");
305
+ expect(thor.toString()).toBe("ETH.THOR-0xa5f2211B9b8170F694421f2046281775E8468044");
306
306
 
307
307
  const ethSynth = await AssetValue.from({
308
308
  asset: "ETH/ETH",
@@ -331,12 +331,12 @@ describe("AssetValue", () => {
331
331
 
332
332
  expect(avaxUSDCAsset).toEqual(
333
333
  expect.objectContaining({
334
- address: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
334
+ address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
335
335
  chain: Chain.Avalanche,
336
336
  decimal: 6,
337
337
  isGasAsset: false,
338
338
  isSynthetic: false,
339
- symbol: "USDC-0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
339
+ symbol: "USDC-0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
340
340
  ticker: "USDC",
341
341
  }),
342
342
  );
@@ -465,7 +465,7 @@ describe("AssetValue", () => {
465
465
 
466
466
  expect(synthETH.toString()).toBe("ETH/ETH");
467
467
  expect(eth.toString()).toBe("ETH.ETH");
468
- expect(thor.toString()).toBe("ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044");
468
+ expect(thor.toString()).toBe("ETH.THOR-0xa5f2211B9b8170F694421f2046281775E8468044");
469
469
  expect(synthThor.toString()).toBe("ETH/THOR-0xa5f2211b9b8170f694421f2046281775e8468044");
470
470
  expect(synthDashes.toString()).toBe("ETH/PENDLE-LPT-0x1234");
471
471
  });
@@ -481,12 +481,12 @@ describe("AssetValue", () => {
481
481
  expect(thor).toBeDefined();
482
482
  expect(thor).toEqual(
483
483
  expect.objectContaining({
484
- address: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",
484
+ address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
485
485
  chain: Chain.Arbitrum,
486
486
  decimal: 6,
487
487
  isGasAsset: false,
488
488
  isSynthetic: false,
489
- symbol: "USDT-0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",
489
+ symbol: "USDT-0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
490
490
  ticker: "USDT",
491
491
  }),
492
492
  );
@@ -503,12 +503,12 @@ describe("AssetValue", () => {
503
503
  expect(thor).toBeDefined();
504
504
  expect(thor).toEqual(
505
505
  expect.objectContaining({
506
- address: "0xa5f2211b9b8170f694421f2046281775e8468044",
506
+ address: "0xa5f2211B9b8170F694421f2046281775E8468044",
507
507
  chain: Chain.Ethereum,
508
508
  decimal: 18,
509
509
  isGasAsset: false,
510
510
  isSynthetic: false,
511
- symbol: "THOR-0xa5f2211b9b8170f694421f2046281775e8468044",
511
+ symbol: "THOR-0xa5f2211B9b8170F694421f2046281775E8468044",
512
512
  ticker: "THOR",
513
513
  }),
514
514
  );
@@ -519,12 +519,12 @@ describe("AssetValue", () => {
519
519
  expect(usdc).toBeDefined();
520
520
  expect(usdc).toEqual(
521
521
  expect.objectContaining({
522
- address: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
522
+ address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
523
523
  chain: Chain.Ethereum,
524
524
  decimal: 6,
525
525
  isGasAsset: false,
526
526
  isSynthetic: false,
527
- symbol: "USDC-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
527
+ symbol: "USDC-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
528
528
  ticker: "USDC",
529
529
  }),
530
530
  );
@@ -580,12 +580,12 @@ describe("AssetValue", () => {
580
580
  expect(AvaxBTCb).toBeDefined();
581
581
  expect(AvaxBTCb).toEqual(
582
582
  expect.objectContaining({
583
- address: "0x152b9d0fdc40c096757f570a51e494bd4b943e50",
583
+ address: "0x152b9d0FdC40C096757F570A51E494bd4b943E50",
584
584
  chain: Chain.Avalanche,
585
585
  decimal: 8,
586
586
  isGasAsset: false,
587
587
  isSynthetic: false,
588
- symbol: "BTC.B-0x152b9d0fdc40c096757f570a51e494bd4b943e50",
588
+ symbol: "BTC.B-0x152b9d0FdC40C096757F570A51E494bd4b943E50",
589
589
  ticker: "BTC.B",
590
590
  }),
591
591
  );
@@ -655,12 +655,12 @@ describe("AssetValue", () => {
655
655
  expect(AvaxUSDC).toBeDefined();
656
656
  expect(AvaxUSDC).toEqual(
657
657
  expect.objectContaining({
658
- address: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
658
+ address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
659
659
  chain: Chain.Avalanche,
660
660
  decimal: 6,
661
661
  isGasAsset: false,
662
662
  isSynthetic: false,
663
- symbol: "USDC-0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
663
+ symbol: "USDC-0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
664
664
  ticker: "USDC",
665
665
  }),
666
666
  );
@@ -731,12 +731,12 @@ describe("AssetValue", () => {
731
731
  const thor = AssetValue.from({ asset: "ETH.THOR" });
732
732
  expect(thor).toEqual(
733
733
  expect.objectContaining({
734
- address: "0xa5f2211b9b8170f694421f2046281775e8468044",
734
+ address: "0xa5f2211B9b8170F694421f2046281775E8468044",
735
735
  chain: Chain.Ethereum,
736
736
  decimal: 18,
737
737
  isGasAsset: false,
738
738
  isSynthetic: false,
739
- symbol: "THOR-0xa5f2211b9b8170f694421f2046281775e8468044",
739
+ symbol: "THOR-0xa5f2211B9b8170F694421f2046281775E8468044",
740
740
  ticker: "THOR",
741
741
  }),
742
742
  );
@@ -1,4 +1,11 @@
1
- import { BaseDecimal, Chain, type ChainId, ChainToChainId } from "../types/chains";
1
+ import {
2
+ BaseDecimal,
3
+ Chain,
4
+ type ChainId,
5
+ ChainToChainId,
6
+ type EVMChain,
7
+ EVMChains,
8
+ } from "../types/chains";
2
9
  import type { TokenNames, TokenTax } from "../types/tokens";
3
10
  import {
4
11
  type CommonAssetString,
@@ -12,13 +19,14 @@ import { warnOnce } from "../utils/others";
12
19
  import { type TokenListName, loadTokenLists } from "../utils/tokens";
13
20
  import { validateIdentifier } from "../utils/validators";
14
21
 
22
+ import { getAddress } from "ethers";
15
23
  import type { NumberPrimitives } from "./bigIntArithmetics";
16
24
  import { BigIntArithmetics, formatBigIntToSafeValue } from "./bigIntArithmetics";
17
25
  import { SwapKitError } from "./swapKitError";
18
26
  import type { SwapKitValueType } from "./swapKitNumber";
19
27
 
20
28
  const staticTokensMap = new Map<
21
- TokenNames,
29
+ TokenNames | string,
22
30
  { tax?: TokenTax; decimal: number; identifier: string }
23
31
  >();
24
32
 
@@ -169,7 +177,9 @@ or by passing asyncTokenLookup: true to the from() function, which will make it
169
177
 
170
178
  for (const { tokens } of Object.values(lists)) {
171
179
  for (const { identifier, chain, ...rest } of tokens) {
172
- const tokenKey = (chain === "SOL" ? identifier : identifier.toUpperCase()) as TokenNames;
180
+ const tokenKey = (
181
+ chain === Chain.Solana ? identifier : identifier.toUpperCase()
182
+ ) as TokenNames;
173
183
  const tokenDecimal = "decimals" in rest ? rest.decimals : BaseDecimal[chain as Chain];
174
184
 
175
185
  staticTokensMap.set(tokenKey, { identifier, decimal: tokenDecimal });
@@ -178,6 +188,26 @@ or by passing asyncTokenLookup: true to the from() function, which will make it
178
188
 
179
189
  return true;
180
190
  }
191
+
192
+ static setStaticAssets(
193
+ tokenMap: Map<
194
+ string,
195
+ { tax?: TokenTax; identifier: string; chain: Chain } & (
196
+ | { decimal: number }
197
+ | { decimals: number }
198
+ )
199
+ >,
200
+ ) {
201
+ staticTokensMap.clear();
202
+ for (const [key, value] of tokenMap.entries()) {
203
+ const tokenKey = (
204
+ value.chain === Chain.Solana ? value.identifier : value.identifier.toUpperCase()
205
+ ) as TokenNames;
206
+ const tokenDecimal = "decimals" in value ? value.decimals : value.decimal;
207
+ staticTokensMap.set(key, { ...value, decimal: tokenDecimal, identifier: tokenKey });
208
+ }
209
+ return true;
210
+ }
181
211
  }
182
212
 
183
213
  export function getMinAmountByChain(chain: Chain) {
@@ -266,7 +296,26 @@ function safeValue(value: NumberPrimitives, decimal: number) {
266
296
  : value;
267
297
  }
268
298
 
299
+ function validateAssetChain(assetOrChain: AssetIdentifier) {
300
+ const chain =
301
+ "chain" in assetOrChain
302
+ ? assetOrChain.chain
303
+ : assetFromString(assetOrChain.asset).synth
304
+ ? Chain.THORChain
305
+ : assetFromString(assetOrChain.asset).chain;
306
+
307
+ // TODO: move to SKConfig chains once we support it throughout sdk
308
+ if (!Object.values(Chain).includes(chain.toUpperCase() as Chain)) {
309
+ throw new SwapKitError({
310
+ errorKey: "helpers_invalid_asset_identifier",
311
+ info: { message: "Please use the AssetValue constructor for unsupported chains" },
312
+ });
313
+ }
314
+ }
315
+
269
316
  function getAssetString(assetOrChain: AssetIdentifier) {
317
+ validateAssetChain(assetOrChain);
318
+
270
319
  if ("chain" in assetOrChain) return assetOrChain.chain;
271
320
 
272
321
  const { chain, symbol } = assetFromString(assetOrChain.asset);
@@ -304,12 +353,23 @@ function getAssetInfo(identifier: string) {
304
353
  const assetSymbol = isSynthOrTrade ? synthSymbol : rest.join(".");
305
354
 
306
355
  const { address, ticker } = getAssetBaseInfo({ symbol: assetSymbol, chain });
356
+
357
+ let formattedAddress: string | undefined;
358
+ try {
359
+ formattedAddress =
360
+ address && EVMChains.includes(chain as EVMChain) && getAddress(address)
361
+ ? getAddress(address)
362
+ : address;
363
+ } catch (_error) {
364
+ formattedAddress = address;
365
+ }
366
+
307
367
  const symbol =
308
368
  (isSynthOrTrade ? `${synthChain}${assetSeparator}` : "") +
309
- (address ? `${ticker}-${address ?? ""}` : assetSymbol);
369
+ (formattedAddress ? `${ticker}-${formattedAddress ?? ""}` : assetSymbol);
310
370
 
311
371
  return {
312
- address,
372
+ address: formattedAddress,
313
373
  chain,
314
374
  isSynthOrTrade,
315
375
  isSynthetic,
@@ -36,7 +36,6 @@ const initialState = {
36
36
 
37
37
  apiKeys: {
38
38
  blockchair: "",
39
- kado: "",
40
39
  keepKey: "",
41
40
  swapKit: "",
42
41
  walletConnectProjectId: "",
@@ -2,8 +2,8 @@ export const list = {
2
2
  provider: "CAMELOT_V3",
3
3
  chainId: "42161",
4
4
  name: "Camelot V3",
5
- timestamp: "1739867485937",
6
- count: 1596,
5
+ timestamp: "1741956312848",
6
+ count: 1602,
7
7
  tokens: [
8
8
  {
9
9
  address: "0xda39A32c9c5Bb2C9E99d4e2a24bc55A418599F90",
@@ -2075,6 +2075,16 @@ export const list = {
2075
2075
  "https://storage.googleapis.com/token-list-swapkit/images/arb.anima-0xccd05a0fcfc1380e9da27862adb2198e58e0d66f.png",
2076
2076
  ticker: "ANIMA",
2077
2077
  },
2078
+ {
2079
+ address: "0x37a645648dF29205C6261289983FB04ECD70b4B3",
2080
+ chain: "ARB",
2081
+ chainId: "42161",
2082
+ decimals: 18,
2083
+ identifier: "ARB.ANIME-0x37a645648dF29205C6261289983FB04ECD70b4B3",
2084
+ logoURI:
2085
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.anime-0x37a645648df29205c6261289983fb04ecd70b4b3.png",
2086
+ ticker: "ANIME",
2087
+ },
2078
2088
  {
2079
2089
  address: "0xBb97CCB699dfC1aF2e05ea68b547505A9D5450C3",
2080
2090
  chain: "ARB",
@@ -2755,6 +2765,16 @@ export const list = {
2755
2765
  "https://storage.googleapis.com/token-list-swapkit/images/arb.arbb-0x0e19f5a0e335e9b335d05cd765cdcb625f73f487.png",
2756
2766
  ticker: "ARBB",
2757
2767
  },
2768
+ {
2769
+ address: "0x25b3d618A1EdaD28239C3D18C1ea33dd740fca08",
2770
+ chain: "ARB",
2771
+ chainId: "42161",
2772
+ decimals: 18,
2773
+ identifier: "ARB.arbBTC-0x25b3d618A1EdaD28239C3D18C1ea33dd740fca08",
2774
+ logoURI:
2775
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.arbbtc-0x25b3d618a1edad28239c3d18c1ea33dd740fca08.png",
2776
+ ticker: "arbBTC",
2777
+ },
2758
2778
  {
2759
2779
  address: "0x95aBBf4576C8147B9BaceDdb8E4C2e9363A0bfD8",
2760
2780
  chain: "ARB",
@@ -4755,6 +4775,26 @@ export const list = {
4755
4775
  "https://storage.googleapis.com/token-list-swapkit/images/arb.clips-0xfdaa8468388c3a24d3af234d147c3904b98f795c.png",
4756
4776
  ticker: "CLIPS",
4757
4777
  },
4778
+ {
4779
+ address: "0xF4AcDE4D938844751f34659C67056f7e69dBE85a",
4780
+ chain: "ARB",
4781
+ chainId: "42161",
4782
+ decimals: 18,
4783
+ identifier: "ARB.CLUTCH-0xF4AcDE4D938844751f34659C67056f7e69dBE85a",
4784
+ logoURI:
4785
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.clutch-0xf4acde4d938844751f34659c67056f7e69dbe85a.png",
4786
+ ticker: "CLUTCH",
4787
+ },
4788
+ {
4789
+ address: "0xfD5c7F32b623A4d554ef79F7f744B75d4819dfaf",
4790
+ chain: "ARB",
4791
+ chainId: "42161",
4792
+ decimals: 18,
4793
+ identifier: "ARB.CLUTCH-0xfD5c7F32b623A4d554ef79F7f744B75d4819dfaf",
4794
+ logoURI:
4795
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.clutch-0xfd5c7f32b623a4d554ef79f7f744b75d4819dfaf.png",
4796
+ ticker: "CLUTCH",
4797
+ },
4758
4798
  {
4759
4799
  address: "0x1922C36F3bc762Ca300b4a46bB2102F84B1684aB",
4760
4800
  chain: "ARB",
@@ -6745,6 +6785,16 @@ export const list = {
6745
6785
  "https://storage.googleapis.com/token-list-swapkit/images/arb.g-0x8ddae0eb166628e04c34fb95d42003d55da3e441.png",
6746
6786
  ticker: "g",
6747
6787
  },
6788
+ {
6789
+ address: "0xF18e4466F26B4cA55bbAb890b314a54976E45B17",
6790
+ chain: "ARB",
6791
+ chainId: "42161",
6792
+ decimals: 18,
6793
+ identifier: "ARB.G7-0xF18e4466F26B4cA55bbAb890b314a54976E45B17",
6794
+ logoURI:
6795
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.g7-0xf18e4466f26b4ca55bbab890b314a54976e45b17.png",
6796
+ ticker: "G7",
6797
+ },
6748
6798
  {
6749
6799
  address: "0xB560121c897d77AD41D6037D2A87241407cDBdc1",
6750
6800
  chain: "ARB",
@@ -7175,6 +7225,16 @@ export const list = {
7175
7225
  "https://storage.googleapis.com/token-list-swapkit/images/arb.green apple-0x20e6f741a2974e82f5eebef522af34d1e9de74ef.png",
7176
7226
  ticker: "GREEN APPLE",
7177
7227
  },
7228
+ {
7229
+ address: "0x812F2D5Ff6088ed7A655567dBcDf0d42cf07ca38",
7230
+ chain: "ARB",
7231
+ chainId: "42161",
7232
+ decimals: 18,
7233
+ identifier: "ARB.GRIX-0x812F2D5Ff6088ed7A655567dBcDf0d42cf07ca38",
7234
+ logoURI:
7235
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.grix-0x812f2d5ff6088ed7a655567dbcdf0d42cf07ca38.png",
7236
+ ticker: "GRIX",
7237
+ },
7178
7238
  {
7179
7239
  address: "0x3b58a4C865B568a2F6a957C264F6b50CbA35D8CE",
7180
7240
  chain: "ARB",
@@ -11425,6 +11485,16 @@ export const list = {
11425
11485
  "https://storage.googleapis.com/token-list-swapkit/images/arb.plsdpx-0xf236ea74b515ef96a9898f5a4ed4aa591f253ce1.png",
11426
11486
  ticker: "plsDPX",
11427
11487
  },
11488
+ {
11489
+ address: "0x9e6B748d25Ed2600Aa0ce7Cbb42267adCF21Fd9B",
11490
+ chain: "ARB",
11491
+ chainId: "42161",
11492
+ decimals: 18,
11493
+ identifier: "ARB.plsGRAIL-0x9e6B748d25Ed2600Aa0ce7Cbb42267adCF21Fd9B",
11494
+ logoURI:
11495
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.plsgrail-0x9e6b748d25ed2600aa0ce7cbb42267adcf21fd9b.png",
11496
+ ticker: "plsGRAIL",
11497
+ },
11428
11498
  {
11429
11499
  address: "0xe7f6C3c1F0018E4C08aCC52965e5cbfF99e34A44",
11430
11500
  chain: "ARB",
@@ -13587,11 +13657,11 @@ export const list = {
13587
13657
  ticker: "SUPR",
13588
13658
  },
13589
13659
  {
13590
- address: "0x7788a3538c5fc7f9c7c8a74eac4c898fc8d87d92",
13660
+ address: "0x7788A3538C5fc7F9c7C8A74EAC4c898fC8d87d92",
13591
13661
  chain: "ARB",
13592
13662
  chainId: "42161",
13593
13663
  decimals: 18,
13594
- identifier: "ARB.sUSDX-0x7788a3538c5fc7f9c7c8a74eac4c898fc8d87d92",
13664
+ identifier: "ARB.sUSDX-0x7788A3538C5fc7F9c7C8A74EAC4c898fC8d87d92",
13595
13665
  logoURI:
13596
13666
  "https://storage.googleapis.com/token-list-swapkit/images/arb.susdx-0x7788a3538c5fc7f9c7c8a74eac4c898fc8d87d92.png",
13597
13667
  ticker: "sUSDX",
@@ -14566,6 +14636,16 @@ export const list = {
14566
14636
  "https://storage.googleapis.com/token-list-swapkit/images/arb.usdf-0xae48b7c8e096896e32d53f10d0bf89f82ec7b987.png",
14567
14637
  ticker: "USDF",
14568
14638
  },
14639
+ {
14640
+ address: "0x6491c05A82219b8D1479057361ff1654749b876b",
14641
+ chain: "ARB",
14642
+ chainId: "42161",
14643
+ decimals: 18,
14644
+ identifier: "ARB.USDS-0x6491c05A82219b8D1479057361ff1654749b876b",
14645
+ logoURI:
14646
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.usds-0x6491c05a82219b8d1479057361ff1654749b876b.png",
14647
+ ticker: "USDS",
14648
+ },
14569
14649
  {
14570
14650
  address: "0xD74f5255D557944cf7Dd0E45FF521520002D5748",
14571
14651
  chain: "ARB",
@@ -14636,6 +14716,16 @@ export const list = {
14636
14716
  "https://storage.googleapis.com/token-list-swapkit/images/arb.ush-0x51a80238b5738725128d3a3e06ab41c1d4c05c74.png",
14637
14717
  ticker: "USH",
14638
14718
  },
14719
+ {
14720
+ address: "0x33C88D4caC6aC34F77020915a2a88cd0417dC069",
14721
+ chain: "ARB",
14722
+ chainId: "42161",
14723
+ decimals: 6,
14724
+ identifier: "ARB.USSD-0x33C88D4caC6aC34F77020915a2a88cd0417dC069",
14725
+ logoURI:
14726
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.ussd-0x33c88d4cac6ac34f77020915a2a88cd0417dc069.png",
14727
+ ticker: "USSD",
14728
+ },
14639
14729
  {
14640
14730
  address: "0x641441c631e2F909700d2f41FD87F0aA6A6b4EDb",
14641
14731
  chain: "ARB",
@@ -15026,6 +15116,16 @@ export const list = {
15026
15116
  "https://storage.googleapis.com/token-list-swapkit/images/arb.wheat-0xb8387311cfcaf8715ec7a1e6adad8561189b1843.png",
15027
15117
  ticker: "WHEAT",
15028
15118
  },
15119
+ {
15120
+ address: "0xaC75f0c46723432a2303f2a7c7769535A179Ed56",
15121
+ chain: "ARB",
15122
+ chainId: "42161",
15123
+ decimals: 6,
15124
+ identifier: "ARB.wHYPE-0xaC75f0c46723432a2303f2a7c7769535A179Ed56",
15125
+ logoURI:
15126
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.whype-0xac75f0c46723432a2303f2a7c7769535a179ed56.png",
15127
+ ticker: "wHYPE",
15128
+ },
15029
15129
  {
15030
15130
  address: "0x0b4d0F471996E894f79c8118Cf532192A09d7940",
15031
15131
  chain: "ARB",
@@ -15436,6 +15536,16 @@ export const list = {
15436
15536
  "https://storage.googleapis.com/token-list-swapkit/images/arb.xpro-0x6814a8cb25bd8da57bdfe84d7205ada8cbad85e0.png",
15437
15537
  ticker: "XPRO",
15438
15538
  },
15539
+ {
15540
+ address: "0x9aF3AA01A7E8d2E298e186ee3A7Ac29Ef49303A9",
15541
+ chain: "ARB",
15542
+ chainId: "42161",
15543
+ decimals: 18,
15544
+ identifier: "ARB.xRunes-0x9aF3AA01A7E8d2E298e186ee3A7Ac29Ef49303A9",
15545
+ logoURI:
15546
+ "https://storage.googleapis.com/token-list-swapkit/images/arb.xrunes-0x9af3aa01a7e8d2e298e186ee3a7ac29ef49303a9.png",
15547
+ ticker: "xRunes",
15548
+ },
15439
15549
  {
15440
15550
  address: "0xEb04f3f2CC6CB01f70759d1841Ee5599BE32812d",
15441
15551
  chain: "ARB",
@@ -2,7 +2,7 @@ export const list = {
2
2
  provider: "CAVIAR_V1",
3
3
  chainId: "radix-mainnet",
4
4
  name: "CAVIAR_V1",
5
- timestamp: "2025-01-22T13:31:45.456Z",
5
+ timestamp: "2025-03-14T12:45:44.756Z",
6
6
  version: {
7
7
  major: 1,
8
8
  minor: 0,
@@ -1,7 +1,7 @@
1
1
  export const list = {
2
2
  provider: "CHAINFLIP",
3
3
  name: "CHAINFLIP",
4
- timestamp: "2025-01-22T13:30:48.543Z",
4
+ timestamp: "2025-05-01T16:02:24.552Z",
5
5
  version: {
6
6
  major: 1,
7
7
  minor: 0,