@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.
- package/dist/api/index.cjs +2 -2
- package/dist/api/index.cjs.map +3 -3
- package/dist/api/index.js +2 -2
- package/dist/api/index.js.map +3 -3
- package/dist/chunk-509k5s4y.js +3 -0
- package/dist/chunk-509k5s4y.js.map +10 -0
- package/dist/chunk-6vvdbb6s.js +4 -0
- package/dist/chunk-6vvdbb6s.js.map +10 -0
- package/dist/{chunk-x2fe9scs.js → chunk-8pft100q.js} +2 -2
- package/dist/{chunk-x2fe9scs.js.map → chunk-8pft100q.js.map} +2 -2
- package/dist/chunk-abwjsvdg.js +3 -0
- package/dist/chunk-abwjsvdg.js.map +10 -0
- package/dist/chunk-ahpfxkx0.js +4 -0
- package/dist/chunk-ahpfxkx0.js.map +10 -0
- package/dist/chunk-bz1hfk9z.js +3 -0
- package/dist/chunk-bz1hfk9z.js.map +10 -0
- package/dist/chunk-cs1sv94g.js +3 -0
- package/dist/chunk-cs1sv94g.js.map +10 -0
- package/dist/{chunk-v4dvhh90.js → chunk-dbsrwnw2.js} +2 -2
- package/dist/{chunk-v4dvhh90.js.map → chunk-dbsrwnw2.js.map} +2 -2
- package/dist/chunk-ekd1k975.js +4 -0
- package/dist/chunk-ekd1k975.js.map +10 -0
- package/dist/chunk-hqs6577q.js +3 -0
- package/dist/chunk-hqs6577q.js.map +10 -0
- package/dist/chunk-j2emm8jm.js +3 -0
- package/dist/chunk-j2emm8jm.js.map +10 -0
- package/dist/chunk-kdcsgh3q.js +4 -0
- package/dist/chunk-kdcsgh3q.js.map +10 -0
- package/dist/{chunk-1gwdyyeh.js → chunk-kr69v1tm.js} +2 -2
- package/dist/{chunk-1gwdyyeh.js.map → chunk-kr69v1tm.js.map} +2 -2
- package/dist/chunk-mjavf655.js +3 -0
- package/dist/chunk-mjavf655.js.map +10 -0
- package/dist/chunk-mmwvr2y8.js +4 -0
- package/dist/chunk-mmwvr2y8.js.map +10 -0
- package/dist/chunk-q8xy3739.js +4 -0
- package/dist/chunk-q8xy3739.js.map +10 -0
- package/dist/{chunk-3ptwhtpd.js → chunk-qr6hqr2f.js} +2 -2
- package/dist/{chunk-3ptwhtpd.js.map → chunk-qr6hqr2f.js.map} +2 -2
- package/dist/chunk-rqj9janq.js +3 -0
- package/dist/chunk-rqj9janq.js.map +10 -0
- package/dist/chunk-s3f27t8q.js +3 -0
- package/dist/chunk-s3f27t8q.js.map +10 -0
- package/dist/chunk-tq87xn7m.js +4 -0
- package/dist/chunk-tq87xn7m.js.map +10 -0
- package/dist/chunk-wmxwvv8c.js +4 -0
- package/dist/chunk-wmxwvv8c.js.map +10 -0
- package/dist/chunk-wrjh857m.js +4 -0
- package/dist/chunk-wrjh857m.js.map +10 -0
- package/dist/chunk-xyczdrny.js +4 -0
- package/dist/chunk-xyczdrny.js.map +10 -0
- package/dist/chunk-z80467hm.js +3 -0
- package/dist/chunk-z80467hm.js.map +10 -0
- package/dist/chunk-z8emzpyc.js +4 -0
- package/dist/chunk-z8emzpyc.js.map +10 -0
- package/dist/{chunk-a0fxkkfh.js → chunk-zsakm9d3.js} +2 -3
- package/dist/chunk-zsakm9d3.js.map +10 -0
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +9 -9
- package/dist/index.js +3 -3
- package/dist/index.js.map +9 -9
- package/dist/tokens/index.js +1 -1
- package/package.json +6 -5
- package/src/api/thornode/endpoints.ts +22 -4
- package/src/api/thornode/types.ts +3 -2
- package/src/modules/__tests__/assetValue.test.ts +23 -23
- package/src/modules/assetValue.ts +65 -5
- package/src/modules/swapKitConfig.ts +0 -1
- package/src/tokens/lists/camelot_v3.ts +114 -4
- package/src/tokens/lists/caviar_v1.ts +1 -1
- package/src/tokens/lists/chainflip.ts +1 -1
- package/src/tokens/lists/jupiter.ts +13685 -11126
- package/src/tokens/lists/mayachain.ts +2 -48
- package/src/tokens/lists/oneinch.ts +439 -3939
- package/src/tokens/lists/pancakeswap.ts +907 -17
- package/src/tokens/lists/pangolin_v1.ts +2 -82
- package/src/tokens/lists/sushiswap_v2.ts +2 -392
- package/src/tokens/lists/thorchain.ts +18 -8
- package/src/tokens/lists/traderjoe_v2.ts +182 -922
- package/src/tokens/lists/uniswap_v2.ts +6300 -1502
- package/src/tokens/lists/uniswap_v3.ts +14517 -1748
- package/src/types/quotes.ts +1 -0
- package/src/types/wallet.ts +1 -0
- package/src/utils/asset.ts +14 -25
- package/src/utils/wallets.ts +1 -1
- package/dist/chunk-2bhvezjh.js +0 -4
- package/dist/chunk-2bhvezjh.js.map +0 -10
- package/dist/chunk-40epvqbm.js +0 -3
- package/dist/chunk-40epvqbm.js.map +0 -10
- package/dist/chunk-49nsjaay.js +0 -3
- package/dist/chunk-49nsjaay.js.map +0 -10
- package/dist/chunk-4b66tryh.js +0 -4
- package/dist/chunk-4b66tryh.js.map +0 -10
- package/dist/chunk-4kzjrrjv.js +0 -3
- package/dist/chunk-4kzjrrjv.js.map +0 -10
- package/dist/chunk-5m49s8z8.js +0 -4
- package/dist/chunk-5m49s8z8.js.map +0 -10
- package/dist/chunk-9b6y7r75.js +0 -4
- package/dist/chunk-9b6y7r75.js.map +0 -10
- package/dist/chunk-9zcbvqq2.js +0 -3
- package/dist/chunk-9zcbvqq2.js.map +0 -10
- package/dist/chunk-a0bpx1q3.js +0 -4
- package/dist/chunk-a0bpx1q3.js.map +0 -10
- package/dist/chunk-a0fxkkfh.js.map +0 -10
- package/dist/chunk-bg6pz5qh.js +0 -3
- package/dist/chunk-bg6pz5qh.js.map +0 -10
- package/dist/chunk-cpdcnp2x.js +0 -4
- package/dist/chunk-cpdcnp2x.js.map +0 -10
- package/dist/chunk-ftdtdkhk.js +0 -3
- package/dist/chunk-ftdtdkhk.js.map +0 -10
- package/dist/chunk-gjeaw024.js +0 -4
- package/dist/chunk-gjeaw024.js.map +0 -10
- package/dist/chunk-hdcdd2cf.js +0 -4
- package/dist/chunk-hdcdd2cf.js.map +0 -10
- package/dist/chunk-q2pb6ggs.js +0 -3
- package/dist/chunk-q2pb6ggs.js.map +0 -10
- package/dist/chunk-t9s9811k.js +0 -3
- package/dist/chunk-t9s9811k.js.map +0 -10
- package/dist/chunk-vzptz52h.js +0 -4
- package/dist/chunk-vzptz52h.js.map +0 -10
- package/dist/chunk-wyr5d8ad.js +0 -3
- package/dist/chunk-wyr5d8ad.js.map +0 -10
- package/dist/chunk-x0jsq6ag.js +0 -3
- package/dist/chunk-x0jsq6ag.js.map +0 -10
- package/dist/chunk-xm5jkehh.js +0 -4
- package/dist/chunk-xm5jkehh.js.map +0 -10
- package/dist/chunk-xzb1nshn.js +0 -3
- package/dist/chunk-xzb1nshn.js.map +0 -10
package/dist/tokens/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as w}from"../chunk-
|
|
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
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
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.
|
|
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.
|
|
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
|
|
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({
|
|
58
|
-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
193
|
+
"AVAX.USDC-0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
|
|
194
194
|
);
|
|
195
195
|
|
|
196
196
|
const thor = AssetValue.from({ asset: "ETH.THOR" });
|
|
197
|
-
expect(thor.toUrl()).toBe("ETH.THOR-
|
|
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-
|
|
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-
|
|
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: "
|
|
334
|
+
address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
|
|
335
335
|
chain: Chain.Avalanche,
|
|
336
336
|
decimal: 6,
|
|
337
337
|
isGasAsset: false,
|
|
338
338
|
isSynthetic: false,
|
|
339
|
-
symbol: "USDC-
|
|
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-
|
|
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: "
|
|
484
|
+
address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
|
|
485
485
|
chain: Chain.Arbitrum,
|
|
486
486
|
decimal: 6,
|
|
487
487
|
isGasAsset: false,
|
|
488
488
|
isSynthetic: false,
|
|
489
|
-
symbol: "USDT-
|
|
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: "
|
|
506
|
+
address: "0xa5f2211B9b8170F694421f2046281775E8468044",
|
|
507
507
|
chain: Chain.Ethereum,
|
|
508
508
|
decimal: 18,
|
|
509
509
|
isGasAsset: false,
|
|
510
510
|
isSynthetic: false,
|
|
511
|
-
symbol: "THOR-
|
|
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: "
|
|
522
|
+
address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
523
523
|
chain: Chain.Ethereum,
|
|
524
524
|
decimal: 6,
|
|
525
525
|
isGasAsset: false,
|
|
526
526
|
isSynthetic: false,
|
|
527
|
-
symbol: "USDC-
|
|
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: "
|
|
583
|
+
address: "0x152b9d0FdC40C096757F570A51E494bd4b943E50",
|
|
584
584
|
chain: Chain.Avalanche,
|
|
585
585
|
decimal: 8,
|
|
586
586
|
isGasAsset: false,
|
|
587
587
|
isSynthetic: false,
|
|
588
|
-
symbol: "BTC.B-
|
|
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: "
|
|
658
|
+
address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
|
|
659
659
|
chain: Chain.Avalanche,
|
|
660
660
|
decimal: 6,
|
|
661
661
|
isGasAsset: false,
|
|
662
662
|
isSynthetic: false,
|
|
663
|
-
symbol: "USDC-
|
|
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: "
|
|
734
|
+
address: "0xa5f2211B9b8170F694421f2046281775E8468044",
|
|
735
735
|
chain: Chain.Ethereum,
|
|
736
736
|
decimal: 18,
|
|
737
737
|
isGasAsset: false,
|
|
738
738
|
isSynthetic: false,
|
|
739
|
-
symbol: "THOR-
|
|
739
|
+
symbol: "THOR-0xa5f2211B9b8170F694421f2046281775E8468044",
|
|
740
740
|
ticker: "THOR",
|
|
741
741
|
}),
|
|
742
742
|
);
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
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 = (
|
|
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
|
-
(
|
|
369
|
+
(formattedAddress ? `${ticker}-${formattedAddress ?? ""}` : assetSymbol);
|
|
310
370
|
|
|
311
371
|
return {
|
|
312
|
-
address,
|
|
372
|
+
address: formattedAddress,
|
|
313
373
|
chain,
|
|
314
374
|
isSynthOrTrade,
|
|
315
375
|
isSynthetic,
|
|
@@ -2,8 +2,8 @@ export const list = {
|
|
|
2
2
|
provider: "CAMELOT_V3",
|
|
3
3
|
chainId: "42161",
|
|
4
4
|
name: "Camelot V3",
|
|
5
|
-
timestamp: "
|
|
6
|
-
count:
|
|
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: "
|
|
13660
|
+
address: "0x7788A3538C5fc7F9c7C8A74EAC4c898fC8d87d92",
|
|
13591
13661
|
chain: "ARB",
|
|
13592
13662
|
chainId: "42161",
|
|
13593
13663
|
decimals: 18,
|
|
13594
|
-
identifier: "ARB.sUSDX-
|
|
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",
|