@rabby-wallet/rabby-swap 0.0.19 → 0.0.21
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/abi.d.ts +144 -0
- package/dist/abi.js +766 -0
- package/dist/consts.d.ts +96 -0
- package/dist/consts.js +127 -0
- package/dist/dexs/0xapi.d.ts +5 -0
- package/dist/dexs/0xapi.js +124 -0
- package/dist/dexs/1inch.d.ts +5 -0
- package/dist/dexs/1inch.js +112 -0
- package/dist/dexs/openocean.d.ts +5 -0
- package/dist/dexs/openocean.js +165 -0
- package/dist/dexs/paraswap.d.ts +5 -0
- package/dist/dexs/paraswap.js +180 -0
- package/dist/dexs/wrapToken.d.ts +4 -0
- package/dist/dexs/wrapToken.js +71 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/quote.d.ts +45 -0
- package/dist/quote.js +44 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +5 -0
- package/package.json +47 -44
- package/__tests__/decodeCalldata.ts +0 -338
- package/babel.config.json +0 -3
- package/jest.config.ts +0 -10
- package/src/abi.ts +0 -769
- package/src/consts.ts +0 -132
- package/src/dexs/0xapi.ts +0 -158
- package/src/dexs/1inch.ts +0 -165
- package/src/dexs/openocean.ts +0 -217
- package/src/dexs/paraswap.ts +0 -280
- package/src/dexs/wrapToken.ts +0 -74
- package/src/index.ts +0 -17
- package/src/quote.ts +0 -85
- package/src/utils.ts +0 -4
- package/svgTransform.js +0 -11
- package/tsconfig.json +0 -14
package/dist/consts.d.ts
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { CHAINS_ENUM } from "@debank/common";
|
|
2
|
+
export declare enum DEX_ENUM {
|
|
3
|
+
PARASWAP = "ParaSwap",
|
|
4
|
+
ZEROXAPI = "0xAPI",
|
|
5
|
+
WRAPTOKEN = "WrapToken",
|
|
6
|
+
OPENOCEAN = "OpenOcean"
|
|
7
|
+
}
|
|
8
|
+
export declare const WrapTokenAddressMap: {
|
|
9
|
+
ETH: string;
|
|
10
|
+
BSC: string;
|
|
11
|
+
POLYGON: string;
|
|
12
|
+
OP: string;
|
|
13
|
+
FTM: string;
|
|
14
|
+
AVAX: string;
|
|
15
|
+
ARBITRUM: string;
|
|
16
|
+
KLAY: string;
|
|
17
|
+
GNOSIS: string;
|
|
18
|
+
};
|
|
19
|
+
export declare const DEX_SUPPORT_CHAINS: {
|
|
20
|
+
WrapToken: CHAINS_ENUM[];
|
|
21
|
+
ParaSwap: CHAINS_ENUM[];
|
|
22
|
+
"0xAPI": CHAINS_ENUM[];
|
|
23
|
+
OpenOcean: CHAINS_ENUM[];
|
|
24
|
+
};
|
|
25
|
+
export declare const DEX_ROUTER_WHITELIST: {
|
|
26
|
+
ParaSwap: {
|
|
27
|
+
ETH: string;
|
|
28
|
+
POLYGON: string;
|
|
29
|
+
BSC: string;
|
|
30
|
+
AVAX: string;
|
|
31
|
+
FTM: string;
|
|
32
|
+
ARBITRUM: string;
|
|
33
|
+
OP: string;
|
|
34
|
+
};
|
|
35
|
+
"0xAPI": {
|
|
36
|
+
ETH: string;
|
|
37
|
+
POLYGON: string;
|
|
38
|
+
BSC: string;
|
|
39
|
+
OP: string;
|
|
40
|
+
FTM: string;
|
|
41
|
+
CELO: string;
|
|
42
|
+
AVAX: string;
|
|
43
|
+
ARBITRUM: string;
|
|
44
|
+
};
|
|
45
|
+
OpenOcean: {
|
|
46
|
+
ETH: string;
|
|
47
|
+
POLYGON: string;
|
|
48
|
+
BSC: string;
|
|
49
|
+
OP: string;
|
|
50
|
+
FTM: string;
|
|
51
|
+
AVAX: string;
|
|
52
|
+
ARBITRUM: string;
|
|
53
|
+
CRO: string;
|
|
54
|
+
GNOSIS: string;
|
|
55
|
+
AURORA: string;
|
|
56
|
+
BOBA: string;
|
|
57
|
+
KAVA: string;
|
|
58
|
+
METIS: string;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
export declare const DEX_SPENDER_WHITELIST: {
|
|
62
|
+
ParaSwap: {
|
|
63
|
+
ETH: string;
|
|
64
|
+
POLYGON: string;
|
|
65
|
+
BSC: string;
|
|
66
|
+
AVAX: string;
|
|
67
|
+
FTM: string;
|
|
68
|
+
OP: string;
|
|
69
|
+
ARBITRUM: string;
|
|
70
|
+
};
|
|
71
|
+
"0xAPI": {
|
|
72
|
+
ETH: string;
|
|
73
|
+
POLYGON: string;
|
|
74
|
+
BSC: string;
|
|
75
|
+
OP: string;
|
|
76
|
+
FTM: string;
|
|
77
|
+
CELO: string;
|
|
78
|
+
AVAX: string;
|
|
79
|
+
ARBITRUM: string;
|
|
80
|
+
};
|
|
81
|
+
OpenOcean: {
|
|
82
|
+
ETH: string;
|
|
83
|
+
POLYGON: string;
|
|
84
|
+
BSC: string;
|
|
85
|
+
OP: string;
|
|
86
|
+
FTM: string;
|
|
87
|
+
AVAX: string;
|
|
88
|
+
ARBITRUM: string;
|
|
89
|
+
CRO: string;
|
|
90
|
+
GNOSIS: string;
|
|
91
|
+
AURORA: string;
|
|
92
|
+
BOBA: string;
|
|
93
|
+
KAVA: string;
|
|
94
|
+
METIS: string;
|
|
95
|
+
};
|
|
96
|
+
};
|
package/dist/consts.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { CHAINS_ENUM } from "@debank/common";
|
|
2
|
+
import { SUPPORT_CHAINS as wrapTokenSupportChains } from "./dexs/wrapToken";
|
|
3
|
+
import { SUPPORT_CHAINS as zeroXSupportChains } from "./dexs/0xapi";
|
|
4
|
+
import { SUPPORT_CHAINS as paraswapSupportChains } from "./dexs/paraswap";
|
|
5
|
+
import { SUPPORT_CHAINS as openOceanSupportChains } from "./dexs/openocean";
|
|
6
|
+
export var DEX_ENUM;
|
|
7
|
+
(function (DEX_ENUM) {
|
|
8
|
+
// ONEINCH = "1inch",
|
|
9
|
+
DEX_ENUM["PARASWAP"] = "ParaSwap";
|
|
10
|
+
DEX_ENUM["ZEROXAPI"] = "0xAPI";
|
|
11
|
+
DEX_ENUM["WRAPTOKEN"] = "WrapToken";
|
|
12
|
+
DEX_ENUM["OPENOCEAN"] = "OpenOcean";
|
|
13
|
+
})(DEX_ENUM || (DEX_ENUM = {}));
|
|
14
|
+
export const WrapTokenAddressMap = {
|
|
15
|
+
[CHAINS_ENUM.ETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
|
|
16
|
+
[CHAINS_ENUM.BSC]: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
|
|
17
|
+
[CHAINS_ENUM.POLYGON]: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",
|
|
18
|
+
[CHAINS_ENUM.OP]: "0x4200000000000000000000000000000000000006",
|
|
19
|
+
[CHAINS_ENUM.FTM]: "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83",
|
|
20
|
+
[CHAINS_ENUM.AVAX]: "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7",
|
|
21
|
+
[CHAINS_ENUM.ARBITRUM]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
|
|
22
|
+
[CHAINS_ENUM.KLAY]: "0xe4f05a66ec68b54a58b17c22107b02e0232cc817",
|
|
23
|
+
[CHAINS_ENUM.GNOSIS]: "0xe91d153e0b41518a2ce8dd3d7944fa863463a97d",
|
|
24
|
+
};
|
|
25
|
+
export const DEX_SUPPORT_CHAINS = {
|
|
26
|
+
[DEX_ENUM.WRAPTOKEN]: wrapTokenSupportChains,
|
|
27
|
+
// [DEX_ENUM.ONEINCH]: oneInchSupportChains,
|
|
28
|
+
[DEX_ENUM.PARASWAP]: paraswapSupportChains,
|
|
29
|
+
[DEX_ENUM.ZEROXAPI]: zeroXSupportChains,
|
|
30
|
+
[DEX_ENUM.OPENOCEAN]: openOceanSupportChains,
|
|
31
|
+
};
|
|
32
|
+
export const DEX_ROUTER_WHITELIST = {
|
|
33
|
+
// [DEX_ENUM.ONEINCH]: {
|
|
34
|
+
// [CHAINS_ENUM.ETH]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
35
|
+
// [CHAINS_ENUM.POLYGON]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
36
|
+
// [CHAINS_ENUM.BSC]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
37
|
+
// [CHAINS_ENUM.OP]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
38
|
+
// [CHAINS_ENUM.FTM]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
39
|
+
// [CHAINS_ENUM.AVAX]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
40
|
+
// [CHAINS_ENUM.ARBITRUM]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
41
|
+
// [CHAINS_ENUM.KLAY]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
42
|
+
// [CHAINS_ENUM.GNOSIS]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
43
|
+
// [CHAINS_ENUM.CELO]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
44
|
+
// },
|
|
45
|
+
[DEX_ENUM.PARASWAP]: {
|
|
46
|
+
[CHAINS_ENUM.ETH]: "0xdef171fe48cf0115b1d80b88dc8eab59176fee57",
|
|
47
|
+
[CHAINS_ENUM.POLYGON]: "0xdef171fe48cf0115b1d80b88dc8eab59176fee57",
|
|
48
|
+
[CHAINS_ENUM.BSC]: "0xdef171fe48cf0115b1d80b88dc8eab59176fee57",
|
|
49
|
+
[CHAINS_ENUM.AVAX]: "0xdef171fe48cf0115b1d80b88dc8eab59176fee57",
|
|
50
|
+
[CHAINS_ENUM.FTM]: "0xdef171fe48cf0115b1d80b88dc8eab59176fee57",
|
|
51
|
+
[CHAINS_ENUM.ARBITRUM]: "0xdef171fe48cf0115b1d80b88dc8eab59176fee57",
|
|
52
|
+
[CHAINS_ENUM.OP]: "0xdef171fe48cf0115b1d80b88dc8eab59176fee57",
|
|
53
|
+
},
|
|
54
|
+
[DEX_ENUM.ZEROXAPI]: {
|
|
55
|
+
[CHAINS_ENUM.ETH]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
56
|
+
[CHAINS_ENUM.POLYGON]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
57
|
+
[CHAINS_ENUM.BSC]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
58
|
+
[CHAINS_ENUM.OP]: "0xdef1abe32c034e558cdd535791643c58a13acc10",
|
|
59
|
+
[CHAINS_ENUM.FTM]: "0xdef189deaef76e379df891899eb5a00a94cbc250",
|
|
60
|
+
[CHAINS_ENUM.CELO]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
61
|
+
[CHAINS_ENUM.AVAX]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
62
|
+
[CHAINS_ENUM.ARBITRUM]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
63
|
+
},
|
|
64
|
+
[DEX_ENUM.OPENOCEAN]: {
|
|
65
|
+
[CHAINS_ENUM.ETH]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
66
|
+
[CHAINS_ENUM.POLYGON]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
67
|
+
[CHAINS_ENUM.BSC]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
68
|
+
[CHAINS_ENUM.OP]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
69
|
+
[CHAINS_ENUM.FTM]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
70
|
+
[CHAINS_ENUM.AVAX]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
71
|
+
[CHAINS_ENUM.ARBITRUM]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
72
|
+
[CHAINS_ENUM.CRO]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
73
|
+
[CHAINS_ENUM.GNOSIS]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
74
|
+
[CHAINS_ENUM.AURORA]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
75
|
+
[CHAINS_ENUM.BOBA]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
76
|
+
[CHAINS_ENUM.KAVA]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
77
|
+
[CHAINS_ENUM.METIS]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
export const DEX_SPENDER_WHITELIST = {
|
|
81
|
+
// [DEX_ENUM.ONEINCH]: {
|
|
82
|
+
// [CHAINS_ENUM.ETH]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
83
|
+
// [CHAINS_ENUM.POLYGON]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
84
|
+
// [CHAINS_ENUM.BSC]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
85
|
+
// [CHAINS_ENUM.OP]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
86
|
+
// [CHAINS_ENUM.FTM]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
87
|
+
// [CHAINS_ENUM.AVAX]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
88
|
+
// [CHAINS_ENUM.ARBITRUM]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
89
|
+
// [CHAINS_ENUM.KLAY]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
90
|
+
// [CHAINS_ENUM.GNOSIS]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
91
|
+
// [CHAINS_ENUM.CELO]: "0x1111111254eeb25477b68fb85ed929f73a960582",
|
|
92
|
+
// },
|
|
93
|
+
[DEX_ENUM.PARASWAP]: {
|
|
94
|
+
[CHAINS_ENUM.ETH]: "0x216b4b4ba9f3e719726886d34a177484278bfcae",
|
|
95
|
+
[CHAINS_ENUM.POLYGON]: "0x216b4b4ba9f3e719726886d34a177484278bfcae",
|
|
96
|
+
[CHAINS_ENUM.BSC]: "0x216b4b4ba9f3e719726886d34a177484278bfcae",
|
|
97
|
+
[CHAINS_ENUM.AVAX]: "0x216b4b4ba9f3e719726886d34a177484278bfcae",
|
|
98
|
+
[CHAINS_ENUM.FTM]: "0x216b4b4ba9f3e719726886d34a177484278bfcae",
|
|
99
|
+
[CHAINS_ENUM.OP]: "0x216b4b4ba9f3e719726886d34a177484278bfcae",
|
|
100
|
+
[CHAINS_ENUM.ARBITRUM]: "0x216b4b4ba9f3e719726886d34a177484278bfcae",
|
|
101
|
+
},
|
|
102
|
+
[DEX_ENUM.ZEROXAPI]: {
|
|
103
|
+
[CHAINS_ENUM.ETH]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
104
|
+
[CHAINS_ENUM.POLYGON]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
105
|
+
[CHAINS_ENUM.BSC]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
106
|
+
[CHAINS_ENUM.OP]: "0xdef1abe32c034e558cdd535791643c58a13acc10",
|
|
107
|
+
[CHAINS_ENUM.FTM]: "0xdef189deaef76e379df891899eb5a00a94cbc250",
|
|
108
|
+
[CHAINS_ENUM.CELO]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
109
|
+
[CHAINS_ENUM.AVAX]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
110
|
+
[CHAINS_ENUM.ARBITRUM]: "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
|
|
111
|
+
},
|
|
112
|
+
[DEX_ENUM.OPENOCEAN]: {
|
|
113
|
+
[CHAINS_ENUM.ETH]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
114
|
+
[CHAINS_ENUM.POLYGON]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
115
|
+
[CHAINS_ENUM.BSC]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
116
|
+
[CHAINS_ENUM.OP]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
117
|
+
[CHAINS_ENUM.FTM]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
118
|
+
[CHAINS_ENUM.AVAX]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
119
|
+
[CHAINS_ENUM.ARBITRUM]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
120
|
+
[CHAINS_ENUM.CRO]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
121
|
+
[CHAINS_ENUM.GNOSIS]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
122
|
+
[CHAINS_ENUM.AURORA]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
123
|
+
[CHAINS_ENUM.BOBA]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
124
|
+
[CHAINS_ENUM.KAVA]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
125
|
+
[CHAINS_ENUM.METIS]: "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64",
|
|
126
|
+
},
|
|
127
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CHAINS_ENUM } from "@debank/common";
|
|
2
|
+
import { QuoteParams, QuoteResult, TxWithChainId, DecodeCalldataResult } from "../quote";
|
|
3
|
+
export declare const SUPPORT_CHAINS: CHAINS_ENUM[];
|
|
4
|
+
export declare const getQuote: (options: QuoteParams) => Promise<QuoteResult>;
|
|
5
|
+
export declare const decodeCalldata: (tx: TxWithChainId) => DecodeCalldataResult | null;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import axios from "axios";
|
|
11
|
+
import { Interface } from "@ethersproject/abi";
|
|
12
|
+
import { CHAINS_ENUM, CHAINS } from "@debank/common";
|
|
13
|
+
import { isSameAddress } from "../utils";
|
|
14
|
+
import { ZeroXABI } from "../abi";
|
|
15
|
+
const NATIVE_TOKEN = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
16
|
+
const API_DOMAINS = {
|
|
17
|
+
[CHAINS_ENUM.ETH]: "https://api.0x.org",
|
|
18
|
+
[CHAINS_ENUM.POLYGON]: "https://polygon.api.0x.org",
|
|
19
|
+
[CHAINS_ENUM.BSC]: "https://bsc.api.0x.org",
|
|
20
|
+
[CHAINS_ENUM.OP]: "https://optimism.api.0x.org",
|
|
21
|
+
[CHAINS_ENUM.FTM]: "https://fantom.api.0x.org",
|
|
22
|
+
[CHAINS_ENUM.CELO]: "https://celo.api.0x.org",
|
|
23
|
+
[CHAINS_ENUM.AVAX]: "https://avalanche.api.0x.org",
|
|
24
|
+
[CHAINS_ENUM.ARBITRUM]: "https://arbitrum.api.0x.org",
|
|
25
|
+
};
|
|
26
|
+
export const SUPPORT_CHAINS = [
|
|
27
|
+
CHAINS_ENUM.ETH,
|
|
28
|
+
CHAINS_ENUM.POLYGON,
|
|
29
|
+
CHAINS_ENUM.BSC,
|
|
30
|
+
CHAINS_ENUM.OP,
|
|
31
|
+
CHAINS_ENUM.FTM,
|
|
32
|
+
CHAINS_ENUM.AVAX,
|
|
33
|
+
CHAINS_ENUM.ARBITRUM,
|
|
34
|
+
CHAINS_ENUM.CELO,
|
|
35
|
+
];
|
|
36
|
+
export const getQuote = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
if (!SUPPORT_CHAINS.includes(options.chain)) {
|
|
38
|
+
throw new Error(`${CHAINS[options.chain]} is not support on 1inch`);
|
|
39
|
+
}
|
|
40
|
+
const baseURL = API_DOMAINS[options.chain];
|
|
41
|
+
const request = axios.create({
|
|
42
|
+
baseURL,
|
|
43
|
+
});
|
|
44
|
+
request.interceptors.response.use((response) => {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
const code = (_a = response.data) === null || _a === void 0 ? void 0 : _a.code;
|
|
47
|
+
const msg = (_b = response.data) === null || _b === void 0 ? void 0 : _b.reason;
|
|
48
|
+
if (code && code !== 200) {
|
|
49
|
+
if (msg) {
|
|
50
|
+
let err;
|
|
51
|
+
try {
|
|
52
|
+
err = new Error(JSON.parse(msg));
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
err = new Error(msg);
|
|
56
|
+
}
|
|
57
|
+
throw err;
|
|
58
|
+
}
|
|
59
|
+
throw new Error(response.data);
|
|
60
|
+
}
|
|
61
|
+
return response;
|
|
62
|
+
});
|
|
63
|
+
const params = {
|
|
64
|
+
sellToken: options.fromToken === CHAINS[options.chain].nativeTokenAddress
|
|
65
|
+
? NATIVE_TOKEN
|
|
66
|
+
: options.fromToken,
|
|
67
|
+
buyToken: options.toToken === CHAINS[options.chain].nativeTokenAddress
|
|
68
|
+
? NATIVE_TOKEN
|
|
69
|
+
: options.toToken,
|
|
70
|
+
sellAmount: options.amount,
|
|
71
|
+
takerAddress: options.userAddress,
|
|
72
|
+
slippagePercentage: options.slippage / 100,
|
|
73
|
+
skipValidation: true,
|
|
74
|
+
};
|
|
75
|
+
if (options.feeRate !== null && options.feeRate !== undefined) {
|
|
76
|
+
params.buyTokenPercentageFee = options.feeRate / 100;
|
|
77
|
+
params.feeRecipient = options.feeAddress;
|
|
78
|
+
params.affiliateAddress = options.feeAddress;
|
|
79
|
+
}
|
|
80
|
+
const { data } = yield request.get("/swap/v1/quote", {
|
|
81
|
+
params,
|
|
82
|
+
});
|
|
83
|
+
return {
|
|
84
|
+
tx: {
|
|
85
|
+
data: data.data,
|
|
86
|
+
to: data.to,
|
|
87
|
+
value: data.value,
|
|
88
|
+
from: data.from,
|
|
89
|
+
},
|
|
90
|
+
fromToken: isSameAddress(data.sellTokenAddress, NATIVE_TOKEN)
|
|
91
|
+
? CHAINS[options.chain].nativeTokenAddress
|
|
92
|
+
: data.sellTokenAddress,
|
|
93
|
+
spender: data.allowanceTarget,
|
|
94
|
+
fromTokenAmount: data.sellAmount,
|
|
95
|
+
toToken: isSameAddress(data.buyTokenAddress, NATIVE_TOKEN)
|
|
96
|
+
? CHAINS[options.chain].nativeTokenAddress
|
|
97
|
+
: data.buyTokenAddress,
|
|
98
|
+
toTokenAmount: data.buyAmount,
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
export const decodeCalldata = (tx) => {
|
|
102
|
+
const chain = Object.values(CHAINS).find((item) => item.id === tx.chainId);
|
|
103
|
+
if (!chain)
|
|
104
|
+
return null;
|
|
105
|
+
const contractInterface = new Interface(ZeroXABI);
|
|
106
|
+
const result = contractInterface.parseTransaction({ data: tx.data });
|
|
107
|
+
if (result.name !== "transformERC20") {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
const [inputToken, outputToken, inputTokenAmount, minOutputTokenAmount] = result.args;
|
|
111
|
+
if (!inputToken || !outputToken || !inputTokenAmount || !minOutputTokenAmount)
|
|
112
|
+
return null;
|
|
113
|
+
return {
|
|
114
|
+
fromToken: isSameAddress(inputToken, NATIVE_TOKEN)
|
|
115
|
+
? chain.nativeTokenAddress
|
|
116
|
+
: inputToken,
|
|
117
|
+
fromTokenAmount: inputTokenAmount.toString(),
|
|
118
|
+
toToken: isSameAddress(outputToken, NATIVE_TOKEN)
|
|
119
|
+
? chain.nativeTokenAddress
|
|
120
|
+
: outputToken,
|
|
121
|
+
minReceiveToTokenAmount: minOutputTokenAmount.toString(),
|
|
122
|
+
toTokenReceiver: tx.from,
|
|
123
|
+
};
|
|
124
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CHAINS_ENUM } from "@debank/common";
|
|
2
|
+
import { QuoteParams, QuoteResult, TxWithChainId, DecodeCalldataResult } from "../quote";
|
|
3
|
+
export declare const SUPPORT_CHAINS: CHAINS_ENUM[];
|
|
4
|
+
export declare const getQuote: (options: QuoteParams) => Promise<QuoteResult>;
|
|
5
|
+
export declare const decodeCalldata: (tx: TxWithChainId) => DecodeCalldataResult | null;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import axios from "axios";
|
|
11
|
+
import { CHAINS_ENUM, CHAINS } from "@debank/common";
|
|
12
|
+
import { Interface } from "@ethersproject/abi";
|
|
13
|
+
import { isSameAddress } from "../utils";
|
|
14
|
+
import { OneInchABI } from "../abi";
|
|
15
|
+
const NATIVE_TOKEN = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
|
|
16
|
+
const request = axios.create({
|
|
17
|
+
baseURL: "https://api.1inch.io/v5.0",
|
|
18
|
+
});
|
|
19
|
+
request.interceptors.response.use((response) => {
|
|
20
|
+
var _a, _b, _c;
|
|
21
|
+
const code = (_a = response.data) === null || _a === void 0 ? void 0 : _a.statusCode;
|
|
22
|
+
const msg = ((_b = response.data) === null || _b === void 0 ? void 0 : _b.description) || ((_c = response.data) === null || _c === void 0 ? void 0 : _c.error);
|
|
23
|
+
if (code && code !== 200) {
|
|
24
|
+
if (msg) {
|
|
25
|
+
let err;
|
|
26
|
+
try {
|
|
27
|
+
err = new Error(JSON.parse(msg));
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
err = new Error(msg);
|
|
31
|
+
}
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
34
|
+
throw new Error(response.data);
|
|
35
|
+
}
|
|
36
|
+
return response;
|
|
37
|
+
});
|
|
38
|
+
export const SUPPORT_CHAINS = [
|
|
39
|
+
CHAINS_ENUM.ETH,
|
|
40
|
+
CHAINS_ENUM.POLYGON,
|
|
41
|
+
CHAINS_ENUM.BSC,
|
|
42
|
+
CHAINS_ENUM.OP,
|
|
43
|
+
CHAINS_ENUM.FTM,
|
|
44
|
+
CHAINS_ENUM.AVAX,
|
|
45
|
+
CHAINS_ENUM.ARBITRUM,
|
|
46
|
+
CHAINS_ENUM.KLAY,
|
|
47
|
+
CHAINS_ENUM.GNOSIS,
|
|
48
|
+
];
|
|
49
|
+
export const getQuote = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
+
const chainId = CHAINS[options.chain].id;
|
|
51
|
+
if (!SUPPORT_CHAINS.includes(options.chain)) {
|
|
52
|
+
throw new Error(`${CHAINS[options.chain]} is not support on 1inch`);
|
|
53
|
+
}
|
|
54
|
+
const params = {
|
|
55
|
+
fromTokenAddress: options.fromToken === CHAINS[options.chain].nativeTokenAddress
|
|
56
|
+
? NATIVE_TOKEN
|
|
57
|
+
: options.fromToken,
|
|
58
|
+
toTokenAddress: options.toToken === CHAINS[options.chain].nativeTokenAddress
|
|
59
|
+
? NATIVE_TOKEN
|
|
60
|
+
: options.toToken,
|
|
61
|
+
amount: options.amount,
|
|
62
|
+
fromAddress: options.userAddress,
|
|
63
|
+
slippage: options.slippage,
|
|
64
|
+
disableEstimate: true,
|
|
65
|
+
};
|
|
66
|
+
if (options.feeRate !== null && options.feeRate !== undefined) {
|
|
67
|
+
params.fee = options.feeRate;
|
|
68
|
+
params.referrerAddress = options.feeAddress;
|
|
69
|
+
}
|
|
70
|
+
const { data } = yield request.get(`/${chainId}/swap`, {
|
|
71
|
+
params,
|
|
72
|
+
});
|
|
73
|
+
return {
|
|
74
|
+
tx: data.tx,
|
|
75
|
+
fromToken: data.fromToken.address === NATIVE_TOKEN
|
|
76
|
+
? CHAINS[options.chain].nativeTokenAddress
|
|
77
|
+
: data.fromToken.address,
|
|
78
|
+
fromTokenAmount: data.fromTokenAmount,
|
|
79
|
+
fromTokenDecimals: data.fromToken.decimals,
|
|
80
|
+
toToken: data.toToken.address === NATIVE_TOKEN
|
|
81
|
+
? CHAINS[options.chain].nativeTokenAddress
|
|
82
|
+
: data.toToken.address,
|
|
83
|
+
toTokenAmount: data.toTokenAmount,
|
|
84
|
+
toTokenDecimals: data.toToken.decimals,
|
|
85
|
+
spender: data.tx.to,
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
export const decodeCalldata = (tx) => {
|
|
89
|
+
const chain = Object.values(CHAINS).find((item) => item.id === tx.chainId);
|
|
90
|
+
if (!chain)
|
|
91
|
+
return null;
|
|
92
|
+
const contractInterface = new Interface(OneInchABI);
|
|
93
|
+
const result = contractInterface.parseTransaction({ data: tx.data });
|
|
94
|
+
if (result.name !== "swap") {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const [executor, desc] = result.args;
|
|
98
|
+
const [srcToken, dstToken, srcReceiver, dstReceiver, amount, minReturnAmount,] = desc;
|
|
99
|
+
if (!srcToken || !dstToken || !dstReceiver || !amount || !minReturnAmount)
|
|
100
|
+
return null;
|
|
101
|
+
return {
|
|
102
|
+
fromToken: isSameAddress(srcToken, NATIVE_TOKEN)
|
|
103
|
+
? chain.nativeTokenAddress
|
|
104
|
+
: srcToken,
|
|
105
|
+
fromTokenAmount: amount.toString(),
|
|
106
|
+
toToken: isSameAddress(dstToken, NATIVE_TOKEN)
|
|
107
|
+
? chain.nativeTokenAddress
|
|
108
|
+
: dstToken,
|
|
109
|
+
minReceiveToTokenAmount: minReturnAmount.toString(),
|
|
110
|
+
toTokenReceiver: dstReceiver,
|
|
111
|
+
};
|
|
112
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CHAINS_ENUM } from "@debank/common";
|
|
2
|
+
import { QuoteParams, QuoteResult, TxWithChainId, DecodeCalldataResult } from "../quote";
|
|
3
|
+
export declare const SUPPORT_CHAINS: CHAINS_ENUM[];
|
|
4
|
+
export declare const getQuote: (options: QuoteParams) => Promise<QuoteResult>;
|
|
5
|
+
export declare const decodeCalldata: (tx: TxWithChainId) => DecodeCalldataResult | null;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import axios from "axios";
|
|
11
|
+
import { Interface } from "@ethersproject/abi";
|
|
12
|
+
import { CHAINS_ENUM, CHAINS } from "@debank/common";
|
|
13
|
+
import BigNumber from "bignumber.js";
|
|
14
|
+
import { isSameAddress } from "../utils";
|
|
15
|
+
import { OpenOceanABI } from "../abi";
|
|
16
|
+
const NATIVE_TOKENS = {
|
|
17
|
+
[CHAINS_ENUM.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
18
|
+
[CHAINS_ENUM.POLYGON]: "0x0000000000000000000000000000000000001010",
|
|
19
|
+
[CHAINS_ENUM.BSC]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
20
|
+
[CHAINS_ENUM.OP]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
21
|
+
[CHAINS_ENUM.FTM]: "0x0000000000000000000000000000000000000000",
|
|
22
|
+
[CHAINS_ENUM.AVAX]: "0x0000000000000000000000000000000000000000",
|
|
23
|
+
[CHAINS_ENUM.ARBITRUM]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
24
|
+
[CHAINS_ENUM.CRO]: "0x0000000000000000000000000000000000000000",
|
|
25
|
+
[CHAINS_ENUM.GNOSIS]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
26
|
+
[CHAINS_ENUM.AURORA]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
27
|
+
[CHAINS_ENUM.BOBA]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
|
28
|
+
[CHAINS_ENUM.KAVA]: "0x0000000000000000000000000000000000000000",
|
|
29
|
+
[CHAINS_ENUM.METIS]: "0x0000000000000000000000000000000000000000",
|
|
30
|
+
};
|
|
31
|
+
const chainCode = {
|
|
32
|
+
[CHAINS_ENUM.ETH]: "eth",
|
|
33
|
+
[CHAINS_ENUM.POLYGON]: "polygon",
|
|
34
|
+
[CHAINS_ENUM.BSC]: "bsc",
|
|
35
|
+
[CHAINS_ENUM.OP]: "optimism",
|
|
36
|
+
[CHAINS_ENUM.FTM]: "fantom",
|
|
37
|
+
[CHAINS_ENUM.AVAX]: "avax",
|
|
38
|
+
[CHAINS_ENUM.ARBITRUM]: "arbitrum",
|
|
39
|
+
[CHAINS_ENUM.CRO]: "cronos",
|
|
40
|
+
[CHAINS_ENUM.GNOSIS]: "xdai",
|
|
41
|
+
[CHAINS_ENUM.AURORA]: "aurora",
|
|
42
|
+
[CHAINS_ENUM.BOBA]: "boba",
|
|
43
|
+
[CHAINS_ENUM.KAVA]: "kava",
|
|
44
|
+
[CHAINS_ENUM.METIS]: "metis",
|
|
45
|
+
};
|
|
46
|
+
export const SUPPORT_CHAINS = [
|
|
47
|
+
CHAINS_ENUM.ETH,
|
|
48
|
+
CHAINS_ENUM.POLYGON,
|
|
49
|
+
CHAINS_ENUM.BSC,
|
|
50
|
+
CHAINS_ENUM.OP,
|
|
51
|
+
CHAINS_ENUM.FTM,
|
|
52
|
+
CHAINS_ENUM.AVAX,
|
|
53
|
+
CHAINS_ENUM.ARBITRUM,
|
|
54
|
+
CHAINS_ENUM.CRO,
|
|
55
|
+
/**
|
|
56
|
+
* 接口返回 swap error
|
|
57
|
+
*/
|
|
58
|
+
// CHAINS_ENUM.METIS,
|
|
59
|
+
/**
|
|
60
|
+
* pre api v1
|
|
61
|
+
*/
|
|
62
|
+
// CHAINS_ENUM.AURORA,
|
|
63
|
+
/**
|
|
64
|
+
* 未开源
|
|
65
|
+
*/
|
|
66
|
+
// CHAINS_ENUM.GNOSIS,
|
|
67
|
+
// CHAINS_ENUM.BOBA,
|
|
68
|
+
// CHAINS_ENUM.KAVA, //pre api v1
|
|
69
|
+
];
|
|
70
|
+
export const getQuote = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
71
|
+
if (!SUPPORT_CHAINS.includes(options.chain)) {
|
|
72
|
+
throw new Error(`${CHAINS[options.chain]} is not support on OpenOcean`);
|
|
73
|
+
}
|
|
74
|
+
const swapChainCode = chainCode[options.chain];
|
|
75
|
+
const baseURL = `https://open-api.openocean.finance/v3/${swapChainCode}`;
|
|
76
|
+
const request = axios.create({
|
|
77
|
+
baseURL,
|
|
78
|
+
});
|
|
79
|
+
request.interceptors.response.use((response) => {
|
|
80
|
+
var _a, _b;
|
|
81
|
+
const code = (_a = response.data) === null || _a === void 0 ? void 0 : _a.code;
|
|
82
|
+
const msg = (_b = response.data) === null || _b === void 0 ? void 0 : _b.reason;
|
|
83
|
+
if (code === 200)
|
|
84
|
+
return response.data;
|
|
85
|
+
if (code && code !== 200) {
|
|
86
|
+
if (msg) {
|
|
87
|
+
let err;
|
|
88
|
+
try {
|
|
89
|
+
err = new Error(JSON.parse(msg));
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
err = new Error(msg);
|
|
93
|
+
}
|
|
94
|
+
throw err;
|
|
95
|
+
}
|
|
96
|
+
throw new Error(response.data);
|
|
97
|
+
}
|
|
98
|
+
return response;
|
|
99
|
+
});
|
|
100
|
+
const NATIVE_TOKEN = NATIVE_TOKENS[options.chain];
|
|
101
|
+
const params = {
|
|
102
|
+
inTokenAddress: options.fromToken === CHAINS[options.chain].nativeTokenAddress
|
|
103
|
+
? NATIVE_TOKEN
|
|
104
|
+
: options.fromToken,
|
|
105
|
+
outTokenAddress: options.toToken === CHAINS[options.chain].nativeTokenAddress
|
|
106
|
+
? NATIVE_TOKEN
|
|
107
|
+
: options.toToken,
|
|
108
|
+
amount: new BigNumber(options.amount)
|
|
109
|
+
.div(10 ** options.fromTokenDecimals)
|
|
110
|
+
.toFixed(),
|
|
111
|
+
slippage: options.slippage,
|
|
112
|
+
gasPrice: options.gasPrice || 1,
|
|
113
|
+
account: options.userAddress,
|
|
114
|
+
};
|
|
115
|
+
if (options.feeRate !== null && options.feeRate !== undefined) {
|
|
116
|
+
params.referrerFee = options.feeRate;
|
|
117
|
+
params.referrer = options.feeAddress;
|
|
118
|
+
}
|
|
119
|
+
const { data } = yield request.get("/swap_quote", {
|
|
120
|
+
params,
|
|
121
|
+
});
|
|
122
|
+
return {
|
|
123
|
+
tx: {
|
|
124
|
+
data: data.data,
|
|
125
|
+
to: data.to,
|
|
126
|
+
value: data.value,
|
|
127
|
+
from: data.from,
|
|
128
|
+
},
|
|
129
|
+
fromToken: isSameAddress(data.inToken.address, NATIVE_TOKEN)
|
|
130
|
+
? CHAINS[options.chain].nativeTokenAddress
|
|
131
|
+
: data.inToken.address,
|
|
132
|
+
spender: data.to,
|
|
133
|
+
fromTokenAmount: data.inAmount,
|
|
134
|
+
toToken: isSameAddress(data.outToken.address, NATIVE_TOKEN)
|
|
135
|
+
? CHAINS[options.chain].nativeTokenAddress
|
|
136
|
+
: data.outToken.address,
|
|
137
|
+
toTokenAmount: data.outAmount,
|
|
138
|
+
};
|
|
139
|
+
});
|
|
140
|
+
export const decodeCalldata = (tx) => {
|
|
141
|
+
const chain = Object.values(CHAINS).find((item) => item.id === tx.chainId);
|
|
142
|
+
if (!chain)
|
|
143
|
+
return null;
|
|
144
|
+
const contractInterface = new Interface(OpenOceanABI);
|
|
145
|
+
const result = contractInterface.parseTransaction({ data: tx.data });
|
|
146
|
+
if (result.name !== "swap") {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
const [caller, data] = result.args;
|
|
150
|
+
const [srcToken, dstToken, srcReceiver, dstReceiver, amount, minReturnAmount,] = data;
|
|
151
|
+
if (!srcToken || !dstToken || !dstReceiver || !amount || !minReturnAmount)
|
|
152
|
+
return null;
|
|
153
|
+
const NATIVE_TOKEN = NATIVE_TOKENS[chain.enum];
|
|
154
|
+
return {
|
|
155
|
+
fromToken: isSameAddress(srcToken, NATIVE_TOKEN)
|
|
156
|
+
? chain.nativeTokenAddress
|
|
157
|
+
: srcToken,
|
|
158
|
+
fromTokenAmount: amount.toString(),
|
|
159
|
+
toToken: isSameAddress(dstToken, NATIVE_TOKEN)
|
|
160
|
+
? chain.nativeTokenAddress
|
|
161
|
+
: dstToken,
|
|
162
|
+
minReceiveToTokenAmount: minReturnAmount.toString(),
|
|
163
|
+
toTokenReceiver: tx.from,
|
|
164
|
+
};
|
|
165
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CHAINS_ENUM } from "@debank/common";
|
|
2
|
+
import { QuoteParams, QuoteResult, TxWithChainId, DecodeCalldataResult } from "../quote";
|
|
3
|
+
export declare const SUPPORT_CHAINS: CHAINS_ENUM[];
|
|
4
|
+
export declare const getQuote: (options: QuoteParams) => Promise<QuoteResult>;
|
|
5
|
+
export declare const decodeCalldata: (tx: TxWithChainId) => DecodeCalldataResult | null;
|