@rabby-wallet/rabby-swap 0.0.79 → 0.0.80-alpha.0

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/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, };
@@ -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
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rabby-wallet/rabby-swap",
3
- "version": "0.0.79",
3
+ "version": "0.0.80-alpha.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {