@rabby-wallet/rabby-swap 0.0.86 → 0.0.87-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/consts.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ /** Arc ERC-20 USDC (6 decimals); dual view of native gas USDC (18 decimals). */
2
+ export declare const ARC_ERC20_USDC = "0x3600000000000000000000000000000000000000";
1
3
  export declare enum DEX_ENUM {
2
4
  ONEINCH = "1inch",
3
5
  PARASWAP = "ParaSwap",
package/dist/consts.js CHANGED
@@ -1,3 +1,5 @@
1
+ /** Arc ERC-20 USDC (6 decimals); dual view of native gas USDC (18 decimals). */
2
+ export const ARC_ERC20_USDC = "0x3600000000000000000000000000000000000000";
1
3
  export var DEX_ENUM;
2
4
  (function (DEX_ENUM) {
3
5
  DEX_ENUM["ONEINCH"] = "1inch";
@@ -17,6 +17,7 @@ export const SUPPORT_CHAINS = [
17
17
  "MONAD",
18
18
  "HYPER",
19
19
  "HOOD",
20
+ "ARC",
20
21
  ];
21
22
  export const getQuote = generateGetQuote({
22
23
  SUPPORT_CHAINS,
@@ -27,6 +27,7 @@ export const SUPPORT_CHAINS = [
27
27
  "UNI",
28
28
  "PLASMA",
29
29
  "HOOD",
30
+ "ARC",
30
31
  // No prev2 support
31
32
  // CHAINS_ENUM.ROSE,
32
33
  ];
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { WrapTokenAddressMap, DEX_SUPPORT_CHAINS, DEX_ROUTER_WHITELIST, DEX_SPENDER_WHITELIST } from "./list";
2
2
  import { getQuote } from "./quote";
3
- import { DEX_ENUM } from "./consts";
3
+ import { ARC_ERC20_USDC, DEX_ENUM } from "./consts";
4
4
  import { UNI_NATIVE_TO_ADDRESSES } from "./dexs/uni";
5
5
  export * from "./tokenPools";
6
6
  export * from "./verify";
7
- export { WrapTokenAddressMap, DEX_ENUM, DEX_SUPPORT_CHAINS, getQuote, DEX_ROUTER_WHITELIST, DEX_SPENDER_WHITELIST, UNI_NATIVE_TO_ADDRESSES, };
7
+ export { WrapTokenAddressMap, ARC_ERC20_USDC, DEX_ENUM, DEX_SUPPORT_CHAINS, getQuote, DEX_ROUTER_WHITELIST, DEX_SPENDER_WHITELIST, UNI_NATIVE_TO_ADDRESSES, };
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { WrapTokenAddressMap, DEX_SUPPORT_CHAINS, DEX_ROUTER_WHITELIST, DEX_SPENDER_WHITELIST, } from "./list";
2
2
  import { getQuote } from "./quote";
3
- import { DEX_ENUM } from "./consts";
3
+ import { ARC_ERC20_USDC, DEX_ENUM } from "./consts";
4
4
  import { UNI_NATIVE_TO_ADDRESSES } from "./dexs/uni";
5
5
  export * from "./tokenPools";
6
6
  export * from "./verify";
7
- export { WrapTokenAddressMap, DEX_ENUM, DEX_SUPPORT_CHAINS, getQuote, DEX_ROUTER_WHITELIST, DEX_SPENDER_WHITELIST, UNI_NATIVE_TO_ADDRESSES, };
7
+ export { WrapTokenAddressMap, ARC_ERC20_USDC, DEX_ENUM, DEX_SUPPORT_CHAINS, getQuote, DEX_ROUTER_WHITELIST, DEX_SPENDER_WHITELIST, UNI_NATIVE_TO_ADDRESSES, };
package/dist/list.js CHANGED
@@ -211,6 +211,7 @@ export const DEX_ROUTER_WHITELIST = {
211
211
  ["UNI"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
212
212
  ["PLASMA"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
213
213
  ["HOOD"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
214
+ ["ARC"]: "0x6131B5fae19EA4f9D964eAc0408E4408b66337b5",
214
215
  },
215
216
  [DEX_ENUM.PARASWAPV6]: {
216
217
  [CHAINS_ENUM.ETH]: "0x6A000F20005980200259B80c5102003040001068",
@@ -256,6 +257,7 @@ export const DEX_ROUTER_WHITELIST = {
256
257
  ["MONAD"]: "0x0000000000001ff3684f28c67538d4d072c22734",
257
258
  ["HYPER"]: "0x0000000000001ff3684f28c67538d4d072c22734",
258
259
  ["HOOD"]: "0x0000000000001fF3684f28c67538d4D072C22734",
260
+ ["ARC"]: "0x0000000000001fF3684f28c67538d4D072C22734",
259
261
  },
260
262
  [DEX_ENUM.MAGPIE]: {
261
263
  [CHAINS_ENUM.ETH]: "0x20f6ee51340adeed01a59b0e65cb3703f3dc860c",
@@ -306,7 +308,7 @@ export const DEX_ROUTER_WHITELIST = {
306
308
  ["TEMPO"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
307
309
  ["MONAD"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
308
310
  ["HOOD"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
309
- ["ARC"]: "0x4fca4a51ab4f23a7447b3284fbd7d73289a89fb1",
311
+ ["ARC"]: "0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9",
310
312
  },
311
313
  };
312
314
  export const DEX_SPENDER_WHITELIST = {
@@ -443,6 +445,7 @@ export const DEX_SPENDER_WHITELIST = {
443
445
  ["UNI"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
444
446
  ["PLASMA"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
445
447
  ["HOOD"]: "0x6131b5fae19ea4f9d964eac0408e4408b66337b5",
448
+ ["ARC"]: "0x6131B5fae19EA4f9D964eAc0408E4408b66337b5",
446
449
  },
447
450
  [DEX_ENUM.PARASWAPV6]: {
448
451
  [CHAINS_ENUM.ETH]: "0x6A000F20005980200259B80c5102003040001068",
@@ -488,6 +491,7 @@ export const DEX_SPENDER_WHITELIST = {
488
491
  ["MONAD"]: "0x0000000000001ff3684f28c67538d4d072c22734",
489
492
  ["HYPER"]: "0x0000000000001ff3684f28c67538d4d072c22734",
490
493
  ["HOOD"]: "0x0000000000001fF3684f28c67538d4D072C22734",
494
+ ["ARC"]: "0x0000000000001fF3684f28c67538d4D072C22734",
491
495
  },
492
496
  [DEX_ENUM.MAGPIE]: {
493
497
  [CHAINS_ENUM.ETH]: "0x20f6ee51340adeed01a59b0e65cb3703f3dc860c",
package/dist/quote.d.ts CHANGED
@@ -12,7 +12,7 @@ export interface QuoteParams {
12
12
  feeAddress?: string;
13
13
  gasPrice?: number;
14
14
  insufficient: boolean;
15
- chain?: CHAINS_ENUM;
15
+ chain: CHAINS_ENUM;
16
16
  fee?: boolean;
17
17
  chainServerId: string;
18
18
  nativeTokenAddress: string;
package/dist/utils.d.ts CHANGED
@@ -5,6 +5,15 @@ import { DEX_ENUM } from "./consts";
5
5
  export declare const isSameAddress: (addr1: string, addr2: string) => boolean;
6
6
  export declare const NULL_ADDRESS = "0x0000000000000000000000000000000000000000";
7
7
  export declare const resolveToTokenReceiver: (encodedReceiver: string, txFrom: string) => string;
8
+ /** Uni quotes 0x3600 USDC as a native path on Arc; attach scaled native value. */
9
+ export declare const resolveSwapTxValue: ({ dex, chain, fromToken, payTokenId, nativeTokenAddress, amount, }: {
10
+ dex: DEX_ENUM;
11
+ chain: CHAINS_ENUM;
12
+ fromToken: string;
13
+ payTokenId: string;
14
+ nativeTokenAddress: string;
15
+ amount: string;
16
+ }) => string;
8
17
  export declare const generateGetQuote: ({ SUPPORT_CHAINS, id, dex, }: {
9
18
  SUPPORT_CHAINS: CHAINS_ENUM[];
10
19
  id: "matcha" | "matcha_v2" | "openocean" | "1inch_v6" | "paraswap" | "kyberswap" | "odos" | "paraswap_v6" | "magpie" | "sushi" | "rabby" | "uni";
package/dist/utils.js CHANGED
@@ -8,7 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { CHAINS_ENUM } from "@debank/common";
11
- import { DEX_ENUM } from "./consts";
11
+ import BigNumber from "bignumber.js";
12
+ import { ARC_ERC20_USDC, DEX_ENUM } from "./consts";
12
13
  import { DEX_SPENDER_WHITELIST } from "./list";
13
14
  export const isSameAddress = (addr1, addr2) => {
14
15
  if (typeof addr1 !== "string" || typeof addr2 !== "string")
@@ -17,6 +18,17 @@ export const isSameAddress = (addr1, addr2) => {
17
18
  };
18
19
  export const NULL_ADDRESS = "0x0000000000000000000000000000000000000000";
19
20
  export const resolveToTokenReceiver = (encodedReceiver, txFrom) => (isSameAddress(encodedReceiver, NULL_ADDRESS) ? txFrom : encodedReceiver);
21
+ const ARC = "ARC";
22
+ const ARC_USDC_TO_NATIVE_SCALE = 1e12;
23
+ /** Uni quotes 0x3600 USDC as a native path on Arc; attach scaled native value. */
24
+ export const resolveSwapTxValue = ({ dex, chain, fromToken, payTokenId, nativeTokenAddress, amount, }) => {
25
+ if (dex === DEX_ENUM.UNI &&
26
+ chain === ARC &&
27
+ isSameAddress(fromToken, ARC_ERC20_USDC)) {
28
+ return new BigNumber(amount).times(ARC_USDC_TO_NATIVE_SCALE).toFixed(0);
29
+ }
30
+ return isSameAddress(payTokenId, nativeTokenAddress) ? amount : "0";
31
+ };
20
32
  export const generateGetQuote = ({ SUPPORT_CHAINS, id, dex, }) => (options, api) => __awaiter(void 0, void 0, void 0, function* () {
21
33
  if (!options.chainServerId || !options.nativeTokenAddress) {
22
34
  throw new Error(`lack chainServerId or nativeTokenAddress is not support}`);
@@ -40,12 +52,18 @@ export const generateGetQuote = ({ SUPPORT_CHAINS, id, dex, }) => (options, api)
40
52
  params.no_pre_exec = true;
41
53
  }
42
54
  const data = yield api.getSwapQuote(params);
43
- const isNativeToken = isSameAddress(data.pay_token.id, options.nativeTokenAddress);
44
55
  return {
45
56
  dexFeeDesc: data.dex_fee_desc,
46
57
  tx: {
47
58
  data: data.dex_swap_calldata,
48
- value: isNativeToken ? options.amount : "0",
59
+ value: resolveSwapTxValue({
60
+ dex,
61
+ chain: options.chain,
62
+ fromToken: options.fromToken,
63
+ payTokenId: data.pay_token.id,
64
+ nativeTokenAddress: options.nativeTokenAddress,
65
+ amount: options.amount,
66
+ }),
49
67
  to: data.dex_swap_to,
50
68
  from: options.userAddress,
51
69
  },
@@ -56,7 +74,7 @@ export const generateGetQuote = ({ SUPPORT_CHAINS, id, dex, }) => (options, api)
56
74
  toTokenAmount: data.receive_token_raw_amount + "",
57
75
  toTokenDecimals: data.receive_token.decimals,
58
76
  spender: dex === DEX_ENUM.PARASWAP ||
59
- (dex === DEX_ENUM.UNI && options.chain === "ARC")
77
+ (dex === DEX_ENUM.UNI && options.chain === ARC)
60
78
  ? DEX_SPENDER_WHITELIST[dex][options.chain]
61
79
  : data.dex_swap_to,
62
80
  gasUsed: data.gas_used,
@@ -1,6 +1,6 @@
1
1
  import { CHAINS_ENUM } from "@debank/common";
2
2
  import { DEX_ENUM } from "../consts";
3
- /** 取该 DEX 在此链上的 router。Uni 用 native 支付时走独立入口地址。 */
3
+ /** Uni 的 native 输入(含 Arc ERC20 USDC)直接走 Universal Router,其余走 proxy。 */
4
4
  export declare const getRouter: (dexId: DEX_ENUM, chain: CHAINS_ENUM, payTokenId: string, nativeTokenAddress: string) => string | undefined;
5
5
  /** wrap 无 spender;其余读白名单。 */
6
6
  export declare const getSpender: (dexId: DEX_ENUM, chain: CHAINS_ENUM) => string | undefined;
@@ -1,12 +1,15 @@
1
- import { DEX_ENUM } from "../consts";
1
+ import { ARC_ERC20_USDC, DEX_ENUM } from "../consts";
2
2
  import { UNI_NATIVE_TO_ADDRESSES } from "../dexs/uni";
3
3
  import { DEX_ROUTER_WHITELIST, DEX_SPENDER_WHITELIST } from "../list";
4
4
  import { isSameAddress } from "../utils";
5
5
  import { isSwapWrapToken } from "./wrap";
6
6
  const isNativeToken = (tokenId, nativeTokenAddress) => isSameAddress(tokenId, nativeTokenAddress);
7
- /** 取该 DEX 在此链上的 router。Uni 用 native 支付时走独立入口地址。 */
7
+ /** Uni 的 native 输入(含 Arc ERC20 USDC)直接走 Universal Router,其余走 proxy。 */
8
8
  export const getRouter = (dexId, chain, payTokenId, nativeTokenAddress) => {
9
- if (dexId === DEX_ENUM.UNI && isNativeToken(payTokenId, nativeTokenAddress)) {
9
+ if (dexId === DEX_ENUM.UNI &&
10
+ (isNativeToken(payTokenId, nativeTokenAddress) ||
11
+ (chain === "ARC" &&
12
+ isSameAddress(payTokenId, ARC_ERC20_USDC)))) {
10
13
  return UNI_NATIVE_TO_ADDRESSES[chain];
11
14
  }
12
15
  const list = DEX_ROUTER_WHITELIST[dexId];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rabby-wallet/rabby-swap",
3
- "version": "0.0.86",
3
+ "version": "0.0.87-alpha.1",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {