@rabby-wallet/rabby-swap 0.0.79 → 0.0.80-alpha.1
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/dexs/kyberswap.js +1 -0
- package/dist/dexs/openocean.js +1 -0
- package/dist/dexs/uni.js +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/list.js +6 -0
- package/dist/tokenPools.d.ts +22 -0
- package/dist/tokenPools.js +180 -0
- package/package.json +1 -1
package/dist/dexs/kyberswap.js
CHANGED
package/dist/dexs/openocean.js
CHANGED
package/dist/dexs/uni.js
CHANGED
|
@@ -15,6 +15,7 @@ export const SUPPORT_CHAINS = [
|
|
|
15
15
|
"UNI",
|
|
16
16
|
"TEMPO",
|
|
17
17
|
"MONAD",
|
|
18
|
+
"HOOD",
|
|
18
19
|
];
|
|
19
20
|
export const UNI_NATIVE_TO_ADDRESSES = {
|
|
20
21
|
[CHAINS_ENUM.ETH]: "0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af",
|
|
@@ -30,6 +31,7 @@ export const UNI_NATIVE_TO_ADDRESSES = {
|
|
|
30
31
|
["UNI"]: "0xEf740bf23aCaE26f6492B10de645D6B98dC8Eaf3",
|
|
31
32
|
["TEMPO"]: "0x1FEbB76Be10aAf3A1402F04e8E835f2c382F7914",
|
|
32
33
|
["MONAD"]: "0x0d97dc33264bfc1c226207428a79b26757fb9dc3",
|
|
34
|
+
["HOOD"]: "0x8876789976decbfcbbbe364623c63652db8c0904",
|
|
33
35
|
};
|
|
34
36
|
export const getQuote = generateGetQuote({
|
|
35
37
|
SUPPORT_CHAINS,
|
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ import { WrapTokenAddressMap, DEX_SUPPORT_CHAINS, DEX_ROUTER_WHITELIST, DEX_SPEN
|
|
|
2
2
|
import { getQuote } from "./quote";
|
|
3
3
|
import { DEX_ENUM } from "./consts";
|
|
4
4
|
import { UNI_NATIVE_TO_ADDRESSES } from "./dexs/uni";
|
|
5
|
+
export * from "./tokenPools";
|
|
5
6
|
export { WrapTokenAddressMap, DEX_ENUM, DEX_SUPPORT_CHAINS, getQuote, DEX_ROUTER_WHITELIST, DEX_SPENDER_WHITELIST, UNI_NATIVE_TO_ADDRESSES, };
|
package/dist/index.js
CHANGED
|
@@ -2,4 +2,5 @@ import { WrapTokenAddressMap, DEX_SUPPORT_CHAINS, DEX_ROUTER_WHITELIST, DEX_SPEN
|
|
|
2
2
|
import { getQuote } from "./quote";
|
|
3
3
|
import { DEX_ENUM } from "./consts";
|
|
4
4
|
import { UNI_NATIVE_TO_ADDRESSES } from "./dexs/uni";
|
|
5
|
+
export * from "./tokenPools";
|
|
5
6
|
export { WrapTokenAddressMap, DEX_ENUM, DEX_SUPPORT_CHAINS, getQuote, DEX_ROUTER_WHITELIST, DEX_SPENDER_WHITELIST, UNI_NATIVE_TO_ADDRESSES, };
|
package/dist/list.js
CHANGED
|
@@ -176,6 +176,7 @@ export const DEX_ROUTER_WHITELIST = {
|
|
|
176
176
|
["PLASMA"]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
177
177
|
["MONAD"]: "0x6352a56caadc4f1e25cd6c75970fa768a3304e64",
|
|
178
178
|
[CHAINS_ENUM.RSK]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
179
|
+
["HOOD"]: "0x6352a56caadc4f1e25cd6c75970fa768a3304e64",
|
|
179
180
|
},
|
|
180
181
|
[DEX_ENUM.KYBERSWAP]: {
|
|
181
182
|
[CHAINS_ENUM.ETH]: "0x6131B5fae19EA4f9D964eAc0408E4408b66337b5",
|
|
@@ -200,6 +201,7 @@ export const DEX_ROUTER_WHITELIST = {
|
|
|
200
201
|
["HYPER"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
|
|
201
202
|
["UNI"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
|
|
202
203
|
["PLASMA"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
|
|
204
|
+
["HOOD"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
|
|
203
205
|
},
|
|
204
206
|
[DEX_ENUM.PARASWAPV6]: {
|
|
205
207
|
[CHAINS_ENUM.ETH]: "0x6A000F20005980200259B80c5102003040001068",
|
|
@@ -294,6 +296,7 @@ export const DEX_ROUTER_WHITELIST = {
|
|
|
294
296
|
["UNI"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
|
|
295
297
|
["TEMPO"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
|
|
296
298
|
["MONAD"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
|
|
299
|
+
["HOOD"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
|
|
297
300
|
},
|
|
298
301
|
};
|
|
299
302
|
export const DEX_SPENDER_WHITELIST = {
|
|
@@ -402,6 +405,7 @@ export const DEX_SPENDER_WHITELIST = {
|
|
|
402
405
|
["PLASMA"]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
403
406
|
["MONAD"]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
404
407
|
[CHAINS_ENUM.RSK]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
408
|
+
["HOOD"]: "0x6352a56caadc4f1e25cd6c75970fa768a3304e64",
|
|
405
409
|
},
|
|
406
410
|
[DEX_ENUM.KYBERSWAP]: {
|
|
407
411
|
[CHAINS_ENUM.ETH]: "0x6131B5fae19EA4f9D964eAc0408E4408b66337b5",
|
|
@@ -426,6 +430,7 @@ export const DEX_SPENDER_WHITELIST = {
|
|
|
426
430
|
["HYPER"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
|
|
427
431
|
["UNI"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
|
|
428
432
|
["PLASMA"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
|
|
433
|
+
["HOOD"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
|
|
429
434
|
},
|
|
430
435
|
[DEX_ENUM.PARASWAPV6]: {
|
|
431
436
|
[CHAINS_ENUM.ETH]: "0x6A000F20005980200259B80c5102003040001068",
|
|
@@ -520,5 +525,6 @@ export const DEX_SPENDER_WHITELIST = {
|
|
|
520
525
|
["UNI"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
|
|
521
526
|
["TEMPO"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
|
|
522
527
|
["MONAD"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
|
|
528
|
+
["HOOD"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
|
|
523
529
|
},
|
|
524
530
|
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface TokenPoolLookupToken {
|
|
2
|
+
chain: string;
|
|
3
|
+
id: string;
|
|
4
|
+
}
|
|
5
|
+
export type TokenPoolToken = TokenPoolLookupToken;
|
|
6
|
+
/**
|
|
7
|
+
* Well-known stablecoins on supported swap chains.
|
|
8
|
+
*
|
|
9
|
+
* Token ids use the same representation as Rabby TokenItem.id, and chain values
|
|
10
|
+
* use DeBank server ids (for example: eth, arb, matic).
|
|
11
|
+
*/
|
|
12
|
+
export declare const STABLE_TOKEN_POOL: readonly TokenPoolToken[];
|
|
13
|
+
export declare const NATIVE_AND_DERIVATIVE_TOKEN_POOL: readonly TokenPoolToken[];
|
|
14
|
+
/**
|
|
15
|
+
* Returns true when both tokens form a same-type pair in the same pool:
|
|
16
|
+
* either two stablecoins, or a native-equivalent/native-equivalent or
|
|
17
|
+
* native-equivalent/derivative pair.
|
|
18
|
+
*
|
|
19
|
+
* Lookup is O(1) after module initialization. Tokens from different pools and
|
|
20
|
+
* two derivatives do not match.
|
|
21
|
+
*/
|
|
22
|
+
export declare const isSameTypeTokenPair: (tokenA: TokenPoolLookupToken | null | undefined, tokenB: TokenPoolLookupToken | null | undefined) => boolean;
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Well-known stablecoins on supported swap chains.
|
|
3
|
+
*
|
|
4
|
+
* Token ids use the same representation as Rabby TokenItem.id, and chain values
|
|
5
|
+
* use DeBank server ids (for example: eth, arb, matic).
|
|
6
|
+
*/
|
|
7
|
+
export const STABLE_TOKEN_POOL = [
|
|
8
|
+
{ chain: "abs", id: "0x84A71ccD554Cc1b02749b35d22F684CC8ec987e1" },
|
|
9
|
+
{ chain: "abs", id: "0x0709F39376dEEe2A2dfC94A58EdEb2Eb9DF012bD" },
|
|
10
|
+
{ chain: "arb", id: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" },
|
|
11
|
+
{ chain: "arb", id: "0x46850aD61C2B7d64d08c9C754F45254596696984" },
|
|
12
|
+
{ chain: "arb", id: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" },
|
|
13
|
+
{ chain: "arb", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
14
|
+
{ chain: "arb", id: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9" },
|
|
15
|
+
{ chain: "aurora", id: "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802" },
|
|
16
|
+
{ chain: "aurora", id: "0x4988a896b1227218e4A686fdE5EabdcAbd91571f" },
|
|
17
|
+
{ chain: "avax", id: "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70" },
|
|
18
|
+
{ chain: "avax", id: "0xC891EB4cbdEFf6e073e859e987815Ed1505c2ACD" },
|
|
19
|
+
{ chain: "avax", id: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E" },
|
|
20
|
+
{ chain: "avax", id: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7" },
|
|
21
|
+
{ chain: "base", id: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb" },
|
|
22
|
+
{ chain: "base", id: "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42" },
|
|
23
|
+
{ chain: "base", id: "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA" },
|
|
24
|
+
{ chain: "base", id: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" },
|
|
25
|
+
{ chain: "base", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
26
|
+
{ chain: "base", id: "0x820C137fa70C8691f0e44Dc420a5e53c168921Dc" },
|
|
27
|
+
{ chain: "base", id: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2" },
|
|
28
|
+
{ chain: "bera", id: "0x549943e04f40284185054145c6E4e9568C1D3241" },
|
|
29
|
+
{ chain: "bera", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
30
|
+
{ chain: "blast", id: "0x4300000000000000000000000000000000000003" },
|
|
31
|
+
{ chain: "blast", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
32
|
+
{ chain: "bsc", id: "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3" },
|
|
33
|
+
{ chain: "bsc", id: "0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409" },
|
|
34
|
+
{ chain: "bsc", id: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" },
|
|
35
|
+
{ chain: "bsc", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
36
|
+
{ chain: "bsc", id: "0x55d398326f99059fF775485246999027B3197955" },
|
|
37
|
+
{ chain: "celo", id: "0xcebA9300f2b948710d2653dD7B07f33A8B32118C" },
|
|
38
|
+
{ chain: "celo", id: "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e" },
|
|
39
|
+
{ chain: "core", id: "0xa4151B2B3e269645181dCcF2D426cE75fcbDeca9" },
|
|
40
|
+
{ chain: "core", id: "0x900101d06a7426441ae63e9ab3b9b0f63be145f1" },
|
|
41
|
+
{ chain: "cro", id: "0x3D7F2C478aAfdB65542BCB44bCeeC05849999d2D" },
|
|
42
|
+
{ chain: "cro", id: "0x66e428c3f67a68878562e79A0234c1F83c208770" },
|
|
43
|
+
{ chain: "era", id: "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656" },
|
|
44
|
+
{ chain: "era", id: "0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4" },
|
|
45
|
+
{ chain: "era", id: "0x39Fe7a0DACcE31Bd90418e3e659fb0b5f0B3Db0d" },
|
|
46
|
+
{ chain: "era", id: "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C" },
|
|
47
|
+
{ chain: "eth", id: "0x6B175474E89094C44Da98b954EedeAC495271d0F" },
|
|
48
|
+
{ chain: "eth", id: "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c" },
|
|
49
|
+
{ chain: "eth", id: "0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409" },
|
|
50
|
+
{ chain: "eth", id: "0x6c3ea9036406852006290770BEdFcAbA0e23A0e8" },
|
|
51
|
+
{ chain: "eth", id: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" },
|
|
52
|
+
{ chain: "eth", id: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3" },
|
|
53
|
+
{ chain: "eth", id: "0xdC035D45d973E3EC169d2276DDab16f1e407384F" },
|
|
54
|
+
{ chain: "eth", id: "0xdAC17F958D2ee523a2206206994597C13D831ec7" },
|
|
55
|
+
{ chain: "gravity", id: "0xFbDa5F676cB37624f28265A144A48B0d6e87d3b6" },
|
|
56
|
+
{ chain: "gravity", id: "0x816E810f9F787d669FB71932DeabF6c83781Cd48" },
|
|
57
|
+
{ chain: "hood", id: "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168" },
|
|
58
|
+
{ chain: "hyper", id: "0xb88339CB7199b77E23DB6E890353E22632Ba630f" },
|
|
59
|
+
{ chain: "hyper", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
60
|
+
{ chain: "ink", id: "0x2D270e6886d130D724215A266106e6832161EAEd" },
|
|
61
|
+
{ chain: "ink", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
62
|
+
{ chain: "ink", id: "0x0200C29006150606B650577BBE7B6248F58470c1" },
|
|
63
|
+
{ chain: "kava", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
64
|
+
{ chain: "kava", id: "0x919C1c267BC06a7039e03fcc2eF738525769109c" },
|
|
65
|
+
{ chain: "klay", id: "0xd077A400968890Eacc75cdc901F0356c943e4fDb" },
|
|
66
|
+
{ chain: "linea", id: "0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5" },
|
|
67
|
+
{ chain: "linea", id: "0x176211869cA2b568f2A7D4EE941E073a821EE1ff" },
|
|
68
|
+
{ chain: "linea", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
69
|
+
{ chain: "linea", id: "0xA219439258ca9da29E9Cc4cE5596924745e12B93" },
|
|
70
|
+
{ chain: "manta", id: "0xb73603C5d87fA094B7314C74ACE2e64D165016fb" },
|
|
71
|
+
{ chain: "manta", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
72
|
+
{ chain: "manta", id: "0xf417F5A458eC102B90352F697D6e2Ac3A3d2851f" },
|
|
73
|
+
{ chain: "matic", id: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063" },
|
|
74
|
+
{ chain: "matic", id: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" },
|
|
75
|
+
{ chain: "matic", id: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F" },
|
|
76
|
+
{ chain: "megaeth", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
77
|
+
{ chain: "megaeth", id: "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" },
|
|
78
|
+
{ chain: "metis", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
79
|
+
{ chain: "mnt", id: "0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9" },
|
|
80
|
+
{ chain: "mnt", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
81
|
+
{ chain: "mnt", id: "0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE" },
|
|
82
|
+
{ chain: "mnt", id: "0x779Ded0c9e1022225f8E0630b35a9b54bE713736" },
|
|
83
|
+
{ chain: "mode", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
84
|
+
{ chain: "monad", id: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603" },
|
|
85
|
+
{ chain: "monad", id: "0xe7cd86e13AC4309349F30B3435a9d337750fC82D" },
|
|
86
|
+
{ chain: "op", id: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" },
|
|
87
|
+
{ chain: "op", id: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85" },
|
|
88
|
+
{ chain: "op", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
89
|
+
{ chain: "op", id: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58" },
|
|
90
|
+
{ chain: "op", id: "0x01bFF41798a0BcF287b996046Ca68b395DbC1071" },
|
|
91
|
+
{ chain: "plasma", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
92
|
+
{ chain: "plasma", id: "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" },
|
|
93
|
+
{ chain: "pze", id: "0xC5015b9d9161Dca7e18e32f6f25C4aD850731Fd4" },
|
|
94
|
+
{ chain: "pze", id: "0xA8CE8aee21bc2A48a5EF670Afcc9274C7bbBc035" },
|
|
95
|
+
{ chain: "pze", id: "0x1E4a5963aBfD975d8c9021ce480b42188849D41d" },
|
|
96
|
+
{ chain: "ron", id: "0x0B7007c13325C48911F73A2daD5FA5dCBf808aDc" },
|
|
97
|
+
{ chain: "rsk", id: "0x74c9f2b00581F1B11AA7ff05aa9F608B7389De67" },
|
|
98
|
+
{ chain: "rsk", id: "0xAf368c91793CB22739386DFCbBb2F1A9e4bCBeBf" },
|
|
99
|
+
{ chain: "scrl", id: "0xcA77eB3fEFe3725Dc33bccB54eDEFc3D9f764f97" },
|
|
100
|
+
{ chain: "scrl", id: "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4" },
|
|
101
|
+
{ chain: "scrl", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" },
|
|
102
|
+
{ chain: "scrl", id: "0xf55BEC9cafDbE8730f096Aa55dad6D22d44099Df" },
|
|
103
|
+
{ chain: "sei", id: "0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392" },
|
|
104
|
+
{ chain: "sonic", id: "0x29219dd400f2Bf60E5a23d13Be72B486D4038894" },
|
|
105
|
+
{ chain: "sonic", id: "0x6047828dc181963ba44974801FF68e538dA5eaF9" },
|
|
106
|
+
{ chain: "stable", id: "0x779Ded0c9e1022225f8E0630b35a9b54bE713736" },
|
|
107
|
+
{ chain: "tempo", id: "0x20c0000000000000000000003554d28269e0f3c2" },
|
|
108
|
+
{ chain: "tempo", id: "0x20c0000000000000000000000000000000000000" },
|
|
109
|
+
{ chain: "tempo", id: "0x20c000000000000000000000b9537d11c60e8b50" },
|
|
110
|
+
{ chain: "tempo", id: "0x20c00000000000000000000014f22ca97301eb73" },
|
|
111
|
+
{ chain: "uni", id: "0x078D782b760474a361dDA0AF3839290b0EF57AD6" },
|
|
112
|
+
{ chain: "xdai", id: "0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83" },
|
|
113
|
+
{ chain: "xdai", id: "0x4ECaBa5870353805a9F068101A40E0f32ed605C6" },
|
|
114
|
+
{ chain: "xlayer", id: "0x74b7F16337b8972027F6196A17a631aC6dE26d22" },
|
|
115
|
+
{ chain: "xlayer", id: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34" }, // USDe
|
|
116
|
+
];
|
|
117
|
+
/**
|
|
118
|
+
* Native-equivalent and derivative token groups.
|
|
119
|
+
*
|
|
120
|
+
* A valid pair contains at least one native-equivalent token. This preserves
|
|
121
|
+
* ETH <-> stETH and WETH <-> stETH while rejecting stETH <-> cbETH.
|
|
122
|
+
*/
|
|
123
|
+
const ETH_NATIVE_TOKEN = { chain: "eth", id: "eth" }; // ETH
|
|
124
|
+
const ETH_WRAPPED_NATIVE_TOKEN = {
|
|
125
|
+
chain: "eth",
|
|
126
|
+
id: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
127
|
+
}; // WETH
|
|
128
|
+
export const NATIVE_AND_DERIVATIVE_TOKEN_POOL = [
|
|
129
|
+
ETH_NATIVE_TOKEN,
|
|
130
|
+
ETH_WRAPPED_NATIVE_TOKEN,
|
|
131
|
+
{ chain: "eth", id: "0xE95A203B1a91a908F9B9CE46459d101078c2c3cb" },
|
|
132
|
+
{ chain: "eth", id: "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704" },
|
|
133
|
+
{ chain: "eth", id: "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110" },
|
|
134
|
+
{ chain: "eth", id: "0x5E8422345238F34275888049021821E8E08CAa1f" },
|
|
135
|
+
{ chain: "eth", id: "0xD9A442856C234a39a81a089C06451EBAa4306a72" },
|
|
136
|
+
{ chain: "eth", id: "0xae78736Cd615f374D3085123A210448E74Fc6393" },
|
|
137
|
+
{ chain: "eth", id: "0xac3E018457B222d93114458476f3E3416Abbe38F" },
|
|
138
|
+
{ chain: "eth", id: "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84" },
|
|
139
|
+
{ chain: "eth", id: "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee" },
|
|
140
|
+
{ chain: "eth", id: "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0" }, // wstETH
|
|
141
|
+
];
|
|
142
|
+
const TOKEN_KEY_SEPARATOR = ":";
|
|
143
|
+
const isTokenPoolLookupToken = (token) => !!token &&
|
|
144
|
+
typeof token.chain === "string" &&
|
|
145
|
+
token.chain.length > 0 &&
|
|
146
|
+
typeof token.id === "string" &&
|
|
147
|
+
token.id.length > 0;
|
|
148
|
+
const getTokenKey = (token) => `${token.chain.toLowerCase()}${TOKEN_KEY_SEPARATOR}${token.id.toLowerCase()}`;
|
|
149
|
+
const stableTokenKeySet = new Set(STABLE_TOKEN_POOL.map(getTokenKey));
|
|
150
|
+
const nativeAndDerivativeTokenKeySet = new Set(NATIVE_AND_DERIVATIVE_TOKEN_POOL.map(getTokenKey));
|
|
151
|
+
const nativeEquivalentTokenKeySet = new Set([ETH_NATIVE_TOKEN, ETH_WRAPPED_NATIVE_TOKEN].map(getTokenKey));
|
|
152
|
+
/**
|
|
153
|
+
* Returns true when both tokens form a same-type pair in the same pool:
|
|
154
|
+
* either two stablecoins, or a native-equivalent/native-equivalent or
|
|
155
|
+
* native-equivalent/derivative pair.
|
|
156
|
+
*
|
|
157
|
+
* Lookup is O(1) after module initialization. Tokens from different pools and
|
|
158
|
+
* two derivatives do not match.
|
|
159
|
+
*/
|
|
160
|
+
export const isSameTypeTokenPair = (tokenA, tokenB) => {
|
|
161
|
+
if (!isTokenPoolLookupToken(tokenA) || !isTokenPoolLookupToken(tokenB)) {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
if (tokenA.chain.toLowerCase() !== tokenB.chain.toLowerCase()) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
const tokenAKey = getTokenKey(tokenA);
|
|
168
|
+
const tokenBKey = getTokenKey(tokenB);
|
|
169
|
+
if (stableTokenKeySet.has(tokenAKey) &&
|
|
170
|
+
stableTokenKeySet.has(tokenBKey)) {
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
if (tokenAKey === tokenBKey) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
return (nativeAndDerivativeTokenKeySet.has(tokenAKey) &&
|
|
177
|
+
nativeAndDerivativeTokenKeySet.has(tokenBKey) &&
|
|
178
|
+
(nativeEquivalentTokenKeySet.has(tokenAKey) ||
|
|
179
|
+
nativeEquivalentTokenKeySet.has(tokenBKey)));
|
|
180
|
+
};
|