@gearbox-protocol/sdk 1.5.8 → 1.5.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/lib/contracts/contracts.d.ts +1 -0
- package/lib/contracts/contracts.js +5 -1
- package/lib/core/adapter.d.ts +4 -9
- package/lib/core/adapter.js +2 -19
- package/lib/core/trade.d.ts +20 -22
- package/lib/core/trade.js +108 -36
- package/lib/parsers/txParser.d.ts +9 -1
- package/lib/parsers/txParser.js +11 -3
- package/lib/tokens/token.d.ts +1 -0
- package/lib/tokens/token.js +13 -1
- package/lib/types/factories/contracts/support/MultiCall.sol/Multicall2__factory.d.ts +1 -1
- package/lib/types/factories/contracts/support/MultiCall.sol/Multicall2__factory.js +1 -1
- package/lib/utils/multicall.d.ts +2 -2
- package/package.json +1 -1
|
@@ -71,4 +71,5 @@ export declare type UniversalParams = {
|
|
|
71
71
|
export declare type ContractParams = UniswapV2Params | UniswapV3Params | CurveParams | CurveSteCRVPoolParams | YearnParams | ConvexParams | ConvexPoolParams | LidoParams | UniversalParams;
|
|
72
72
|
export declare const contractParams: Record<SupportedContract, ContractParams>;
|
|
73
73
|
export declare const contractsByAddress: Record<string, SupportedContract>;
|
|
74
|
+
export declare const isSupportedContract: (t: unknown) => t is SupportedContract;
|
|
74
75
|
export {};
|
|
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.contractsByAddress = exports.contractParams = exports.UNISWAP_V3_QUOTER = exports.contractsByNetwork = void 0;
|
|
14
|
+
exports.isSupportedContract = exports.contractsByAddress = exports.contractParams = exports.UNISWAP_V3_QUOTER = exports.contractsByNetwork = void 0;
|
|
15
15
|
var token_1 = require("../tokens/token");
|
|
16
16
|
var mappers_1 = require("../utils/mappers");
|
|
17
17
|
var adapters_1 = require("./adapters");
|
|
@@ -299,3 +299,7 @@ exports.contractsByAddress = (0, mappers_1.objectEntries)(exports.contractsByNet
|
|
|
299
299
|
var contracts = _a[1];
|
|
300
300
|
return (__assign(__assign({}, acc), (0, mappers_1.filterEmptyKeys)((0, mappers_1.keyToLowercase)((0, mappers_1.swapKeyValue)(contracts)))));
|
|
301
301
|
}, {});
|
|
302
|
+
var isSupportedContract = function (t) {
|
|
303
|
+
return typeof t === "string" && !!exports.contractParams[t];
|
|
304
|
+
};
|
|
305
|
+
exports.isSupportedContract = isSupportedContract;
|
package/lib/core/adapter.d.ts
CHANGED
|
@@ -1,34 +1,29 @@
|
|
|
1
1
|
import { Signer } from "ethers";
|
|
2
2
|
import { AdapterInterface } from "../contracts/adapters";
|
|
3
3
|
import { SupportedContract } from "../contracts/contracts";
|
|
4
|
-
import { PathFinderResultStructOutput } from "../types/contracts/pathfinder/interfaces/IPathFinder";
|
|
5
4
|
import { EVMTx } from "./eventOrTx";
|
|
6
|
-
|
|
7
|
-
Swap = 1,
|
|
8
|
-
LP = 2
|
|
9
|
-
}
|
|
5
|
+
import { TradePath } from "./trade";
|
|
10
6
|
interface BaseAdapterProps {
|
|
11
7
|
name: string;
|
|
12
|
-
type: AdapterType;
|
|
13
8
|
adapterInterface: AdapterInterface;
|
|
14
9
|
contractAddress: string;
|
|
15
10
|
adapterAddress: string;
|
|
16
11
|
contractSymbol: SupportedContract;
|
|
12
|
+
creditManager: string;
|
|
17
13
|
}
|
|
18
14
|
interface ExecuteProps {
|
|
19
|
-
tradePath:
|
|
15
|
+
tradePath: TradePath;
|
|
20
16
|
slippage: number;
|
|
21
17
|
signer: Signer;
|
|
22
18
|
}
|
|
23
19
|
export declare class BaseAdapter {
|
|
24
20
|
readonly name: string;
|
|
25
|
-
readonly type: AdapterType;
|
|
26
21
|
readonly adapterInterface: AdapterInterface;
|
|
27
22
|
readonly contractAddress: string;
|
|
28
23
|
readonly adapterAddress: string;
|
|
29
24
|
readonly contractSymbol: SupportedContract;
|
|
25
|
+
readonly creditManager: string;
|
|
30
26
|
constructor(props: BaseAdapterProps);
|
|
31
27
|
execute(props: ExecuteProps): Promise<EVMTx>;
|
|
32
|
-
static connect(tradePath: PathFinderResultStructOutput): BaseAdapter;
|
|
33
28
|
}
|
|
34
29
|
export {};
|
package/lib/core/adapter.js
CHANGED
|
@@ -36,21 +36,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.BaseAdapter =
|
|
40
|
-
var adapters_1 = require("../contracts/adapters");
|
|
41
|
-
var AdapterType;
|
|
42
|
-
(function (AdapterType) {
|
|
43
|
-
AdapterType[AdapterType["Swap"] = 1] = "Swap";
|
|
44
|
-
AdapterType[AdapterType["LP"] = 2] = "LP";
|
|
45
|
-
})(AdapterType = exports.AdapterType || (exports.AdapterType = {}));
|
|
39
|
+
exports.BaseAdapter = void 0;
|
|
46
40
|
var BaseAdapter = /** @class */ (function () {
|
|
47
41
|
function BaseAdapter(props) {
|
|
48
42
|
this.name = props.name;
|
|
49
|
-
this.type = props.type;
|
|
50
43
|
this.adapterInterface = props.adapterInterface;
|
|
51
44
|
this.adapterAddress = props.adapterAddress;
|
|
52
45
|
this.contractAddress = props.contractAddress;
|
|
53
46
|
this.contractSymbol = props.contractSymbol;
|
|
47
|
+
this.creditManager = props.creditManager;
|
|
54
48
|
}
|
|
55
49
|
BaseAdapter.prototype.execute = function (props) {
|
|
56
50
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -60,17 +54,6 @@ var BaseAdapter = /** @class */ (function () {
|
|
|
60
54
|
});
|
|
61
55
|
});
|
|
62
56
|
};
|
|
63
|
-
BaseAdapter.connect = function (tradePath) {
|
|
64
|
-
console.debug(tradePath);
|
|
65
|
-
return new BaseAdapter({
|
|
66
|
-
name: "",
|
|
67
|
-
type: AdapterType.Swap,
|
|
68
|
-
adapterInterface: adapters_1.AdapterInterface.NO_SWAP,
|
|
69
|
-
adapterAddress: "",
|
|
70
|
-
contractAddress: "",
|
|
71
|
-
contractSymbol: "CONVEX_3CRV_POOL",
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
57
|
return BaseAdapter;
|
|
75
58
|
}());
|
|
76
59
|
exports.BaseAdapter = BaseAdapter;
|
package/lib/core/trade.d.ts
CHANGED
|
@@ -1,49 +1,47 @@
|
|
|
1
|
-
import { BigNumber
|
|
1
|
+
import { BigNumber } from "ethers";
|
|
2
2
|
import { AdapterInterface } from "../contracts/adapters";
|
|
3
3
|
import { SwapType } from "../pathfinder/tradeTypes";
|
|
4
|
-
import {
|
|
5
|
-
import { PathFinderResultStructOutput } from "../types/contracts/pathfinder/interfaces/IPathFinder";
|
|
4
|
+
import { ICreditFacade } from "../types";
|
|
5
|
+
import { PathFinderResultStruct, PathFinderResultStructOutput } from "../types/contracts/pathfinder/interfaces/IPathFinder";
|
|
6
6
|
import { BaseAdapter } from "./adapter";
|
|
7
7
|
import { EVMTx } from "./eventOrTx";
|
|
8
|
+
import { TXSwap } from "./transactions";
|
|
9
|
+
export declare type TradePath = Pick<PathFinderResultStructOutput, keyof PathFinderResultStruct>;
|
|
8
10
|
export interface BaseTradeInterface {
|
|
9
11
|
swapType: SwapType;
|
|
12
|
+
sourceAmount: BigNumber;
|
|
10
13
|
expectedAmount: BigNumber;
|
|
11
14
|
rate: BigNumber;
|
|
12
15
|
tokenFrom: string;
|
|
13
16
|
tokenTo: string;
|
|
14
|
-
operationName:
|
|
17
|
+
operationName: TradeOperations;
|
|
15
18
|
}
|
|
16
|
-
export interface TradeProps {
|
|
19
|
+
export interface TradeProps extends BaseTradeInterface {
|
|
17
20
|
adapter: BaseAdapter;
|
|
18
|
-
tradePath:
|
|
19
|
-
|
|
20
|
-
expectedAmount: BigNumber;
|
|
21
|
-
rate: BigNumber;
|
|
22
|
-
tokenFrom: string;
|
|
23
|
-
tokenTo: string;
|
|
24
|
-
operationName: string;
|
|
25
|
-
}
|
|
26
|
-
export interface ConnectTradeProps {
|
|
27
|
-
adapter: BaseAdapter;
|
|
28
|
-
tradePath: PathFinderResultStructOutput;
|
|
21
|
+
tradePath: TradePath;
|
|
22
|
+
creditFacade: ICreditFacade;
|
|
29
23
|
}
|
|
24
|
+
export declare type TradeOperations = "farmWithdraw" | "farmDeposit" | "swap" | "unknownOperation";
|
|
30
25
|
export declare class Trade implements BaseTradeInterface {
|
|
31
26
|
protected helper: BaseAdapter;
|
|
32
|
-
protected tradePath:
|
|
27
|
+
protected tradePath: TradePath;
|
|
28
|
+
protected creditFacade: ICreditFacade;
|
|
33
29
|
readonly swapType: SwapType;
|
|
30
|
+
readonly sourceAmount: BigNumber;
|
|
34
31
|
readonly expectedAmount: BigNumber;
|
|
35
32
|
readonly rate: BigNumber;
|
|
36
33
|
readonly tokenFrom: string;
|
|
37
34
|
readonly tokenTo: string;
|
|
38
|
-
readonly operationName:
|
|
39
|
-
constructor(
|
|
40
|
-
static connect({ tradePath, adapter }: ConnectTradeProps): Trade;
|
|
35
|
+
readonly operationName: TradeOperations;
|
|
36
|
+
constructor(props: TradeProps);
|
|
41
37
|
getName(): string;
|
|
42
38
|
getAdapterInterface(): AdapterInterface;
|
|
43
39
|
getContractAddress(): string;
|
|
44
40
|
getAdapterAddress(): string;
|
|
45
|
-
execute(
|
|
46
|
-
|
|
41
|
+
execute(): Promise<EVMTx>;
|
|
42
|
+
protected _execute(): Promise<TXSwap>;
|
|
43
|
+
toString(): string;
|
|
47
44
|
getFromAmount(slippage: number): BigNumber;
|
|
48
45
|
getToAmount(slippage: number): BigNumber;
|
|
46
|
+
static getOperationName(tokenInAddress: string, tokenOutAddress: string): TradeOperations;
|
|
49
47
|
}
|
package/lib/core/trade.js
CHANGED
|
@@ -1,36 +1,66 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
2
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
39
|
exports.Trade = void 0;
|
|
4
|
-
var
|
|
5
|
-
var
|
|
40
|
+
var decimals_1 = require("../tokens/decimals");
|
|
41
|
+
var token_1 = require("../tokens/token");
|
|
6
42
|
var formatter_1 = require("../utils/formatter");
|
|
7
|
-
var adapter_1 = require("./adapter");
|
|
8
43
|
var constants_1 = require("./constants");
|
|
44
|
+
var transactions_1 = require("./transactions");
|
|
45
|
+
var OPERATION_NAMES = {
|
|
46
|
+
farmWithdraw: "Farm withdraw",
|
|
47
|
+
farmDeposit: "Farm deposit",
|
|
48
|
+
swap: "Swap",
|
|
49
|
+
unknownOperation: "Unknown operation",
|
|
50
|
+
};
|
|
9
51
|
var Trade = /** @class */ (function () {
|
|
10
|
-
function Trade(
|
|
11
|
-
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
14
|
-
this.swapType =
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
52
|
+
function Trade(props) {
|
|
53
|
+
this.helper = props.adapter;
|
|
54
|
+
this.tradePath = props.tradePath;
|
|
55
|
+
this.creditFacade = props.creditFacade;
|
|
56
|
+
this.swapType = props.swapType;
|
|
57
|
+
this.sourceAmount = props.sourceAmount;
|
|
58
|
+
this.expectedAmount = props.expectedAmount;
|
|
59
|
+
this.rate = props.rate;
|
|
60
|
+
this.tokenFrom = props.tokenFrom;
|
|
61
|
+
this.tokenTo = props.tokenTo;
|
|
62
|
+
this.operationName = props.operationName;
|
|
20
63
|
}
|
|
21
|
-
Trade.connect = function (_a) {
|
|
22
|
-
var tradePath = _a.tradePath, adapter = _a.adapter;
|
|
23
|
-
return new Trade({
|
|
24
|
-
tradePath: tradePath,
|
|
25
|
-
adapter: adapter,
|
|
26
|
-
swapType: tradeTypes_1.SwapType.ExactInput,
|
|
27
|
-
expectedAmount: ethers_1.BigNumber.from(0),
|
|
28
|
-
rate: ethers_1.BigNumber.from(0),
|
|
29
|
-
tokenFrom: "",
|
|
30
|
-
tokenTo: "",
|
|
31
|
-
operationName: "",
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
64
|
Trade.prototype.getName = function () {
|
|
35
65
|
return this.helper.name;
|
|
36
66
|
};
|
|
@@ -43,17 +73,42 @@ var Trade = /** @class */ (function () {
|
|
|
43
73
|
Trade.prototype.getAdapterAddress = function () {
|
|
44
74
|
return this.helper.adapterAddress;
|
|
45
75
|
};
|
|
46
|
-
Trade.prototype.execute = function (
|
|
47
|
-
return this.
|
|
76
|
+
Trade.prototype.execute = function () {
|
|
77
|
+
return this._execute();
|
|
48
78
|
};
|
|
49
|
-
Trade.prototype.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
79
|
+
Trade.prototype._execute = function () {
|
|
80
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
81
|
+
var receipt;
|
|
82
|
+
return __generator(this, function (_a) {
|
|
83
|
+
switch (_a.label) {
|
|
84
|
+
case 0: return [4 /*yield*/, this.creditFacade.multicall(this.tradePath.calls)];
|
|
85
|
+
case 1:
|
|
86
|
+
receipt = _a.sent();
|
|
87
|
+
return [2 /*return*/, new transactions_1.TXSwap({
|
|
88
|
+
txHash: receipt.hash,
|
|
89
|
+
protocol: this.helper.contractAddress,
|
|
90
|
+
operation: OPERATION_NAMES[this.operationName],
|
|
91
|
+
amountFrom: this.sourceAmount,
|
|
92
|
+
amountTo: this.expectedAmount,
|
|
93
|
+
tokenFrom: this.tokenFrom,
|
|
94
|
+
tokenTo: this.tokenTo,
|
|
95
|
+
creditManager: this.helper.creditManager,
|
|
96
|
+
timestamp: 0,
|
|
97
|
+
})];
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
Trade.prototype.toString = function () {
|
|
103
|
+
var symbolFrom = token_1.tokenSymbolByAddress[this.tokenFrom.toLowerCase()];
|
|
104
|
+
var symbolTo = token_1.tokenSymbolByAddress[this.tokenTo.toLowerCase()];
|
|
105
|
+
if (!symbolFrom)
|
|
106
|
+
throw new Error("Unknown token: ".concat(this.tokenFrom));
|
|
107
|
+
if (!symbolTo)
|
|
108
|
+
throw new Error("Unknown token: ".concat(this.tokenTo));
|
|
109
|
+
var decimalsFrom = decimals_1.decimals[symbolFrom];
|
|
110
|
+
var decimalsTo = decimals_1.decimals[symbolTo];
|
|
111
|
+
return "".concat(this.operationName, " ").concat((0, formatter_1.formatBN)(this.sourceAmount, decimalsFrom), " ").concat(symbolFrom, " \u21D2 ").concat((0, formatter_1.formatBN)(this.expectedAmount, decimalsTo), " ").concat(symbolTo, " on ").concat(this.helper.name);
|
|
57
112
|
};
|
|
58
113
|
Trade.prototype.getFromAmount = function (slippage) {
|
|
59
114
|
return this.expectedAmount
|
|
@@ -65,6 +120,23 @@ var Trade = /** @class */ (function () {
|
|
|
65
120
|
.mul(constants_1.PERCENTAGE_FACTOR + slippage)
|
|
66
121
|
.div(constants_1.PERCENTAGE_FACTOR);
|
|
67
122
|
};
|
|
123
|
+
Trade.getOperationName = function (tokenInAddress, tokenOutAddress) {
|
|
124
|
+
var tokenInSymbol = token_1.tokenSymbolByAddress[tokenInAddress];
|
|
125
|
+
var tokenOutSymbol = token_1.tokenSymbolByAddress[tokenOutAddress];
|
|
126
|
+
var tokenInIsLp = (0, token_1.isLPToken)(tokenInSymbol);
|
|
127
|
+
var tokenOutIsLp = (0, token_1.isLPToken)(tokenOutSymbol);
|
|
128
|
+
if (!tokenInSymbol)
|
|
129
|
+
throw new Error("Unknown token: ".concat(tokenInAddress));
|
|
130
|
+
if (!tokenOutSymbol)
|
|
131
|
+
throw new Error("Unknown token: ".concat(tokenOutAddress));
|
|
132
|
+
if (tokenInIsLp && !tokenOutIsLp)
|
|
133
|
+
return "farmWithdraw";
|
|
134
|
+
if (!tokenInIsLp && tokenOutIsLp)
|
|
135
|
+
return "farmDeposit";
|
|
136
|
+
if (!tokenInIsLp && !tokenOutIsLp)
|
|
137
|
+
return "swap";
|
|
138
|
+
return "unknownOperation";
|
|
139
|
+
};
|
|
68
140
|
return Trade;
|
|
69
141
|
}());
|
|
70
142
|
exports.Trade = Trade;
|
|
@@ -2,17 +2,25 @@ import { SupportedContract } from "../contracts/contracts";
|
|
|
2
2
|
import { NetworkType } from "../core/constants";
|
|
3
3
|
import { SupportedToken } from "../tokens/token";
|
|
4
4
|
import { MultiCallStruct } from "../types/contracts/interfaces/ICreditFacade.sol/ICreditFacade";
|
|
5
|
+
import { AbstractParser } from "./abstractParser";
|
|
5
6
|
import { IParser } from "./iParser";
|
|
6
7
|
export interface AdapterForParser {
|
|
7
8
|
adapter: string;
|
|
8
9
|
contract: string;
|
|
9
10
|
}
|
|
11
|
+
interface ParseData {
|
|
12
|
+
contract: string;
|
|
13
|
+
adapterName: string;
|
|
14
|
+
}
|
|
10
15
|
export declare class TxParser {
|
|
11
|
-
protected static parsers: Record<string, IParser>;
|
|
16
|
+
protected static parsers: Record<string, IParser & AbstractParser>;
|
|
12
17
|
static parse(address: string, calldata: string): string;
|
|
18
|
+
static getParseData(address: string): ParseData;
|
|
13
19
|
static parseMultiCall(calls: Array<MultiCallStruct>): Array<string>;
|
|
14
20
|
static addAdapters(adapters: Array<AdapterForParser>): void;
|
|
15
21
|
static addContracts(network: NetworkType): void;
|
|
16
22
|
static addCreditFacade(creditFacade: string, underlying: SupportedToken): void;
|
|
23
|
+
static getParser(address: string): IParser & AbstractParser;
|
|
17
24
|
protected static addParser(address: string, contract: SupportedContract, adapterType: number, isContract: boolean): void;
|
|
18
25
|
}
|
|
26
|
+
export {};
|
package/lib/parsers/txParser.js
CHANGED
|
@@ -15,11 +15,13 @@ var TxParser = /** @class */ (function () {
|
|
|
15
15
|
function TxParser() {
|
|
16
16
|
}
|
|
17
17
|
TxParser.parse = function (address, calldata) {
|
|
18
|
-
var parser = this.
|
|
19
|
-
if (!parser)
|
|
20
|
-
throw new Error("Can find parser for ".concat(address));
|
|
18
|
+
var parser = this.getParser(address);
|
|
21
19
|
return parser.parse(calldata);
|
|
22
20
|
};
|
|
21
|
+
TxParser.getParseData = function (address) {
|
|
22
|
+
var parser = this.getParser(address);
|
|
23
|
+
return { contract: parser.contract, adapterName: parser.adapterName };
|
|
24
|
+
};
|
|
23
25
|
TxParser.parseMultiCall = function (calls) {
|
|
24
26
|
return calls.map(function (call) {
|
|
25
27
|
return TxParser.parse(call.target, call.callData.toString());
|
|
@@ -42,6 +44,12 @@ var TxParser = /** @class */ (function () {
|
|
|
42
44
|
TxParser.addCreditFacade = function (creditFacade, underlying) {
|
|
43
45
|
this.parsers[creditFacade.toLowerCase()] = new creditFacadeParser_1.CreditFacadeParser(underlying);
|
|
44
46
|
};
|
|
47
|
+
TxParser.getParser = function (address) {
|
|
48
|
+
var parser = this.parsers[address.toLowerCase()];
|
|
49
|
+
if (!parser)
|
|
50
|
+
throw new Error("Can find parser for ".concat(address));
|
|
51
|
+
return parser;
|
|
52
|
+
};
|
|
45
53
|
TxParser.addParser = function (address, contract, adapterType, isContract) {
|
|
46
54
|
var addressLC = address.toLowerCase();
|
|
47
55
|
switch (adapters_1.AdapterInterface[adapterType]) {
|
package/lib/tokens/token.d.ts
CHANGED
|
@@ -19,3 +19,4 @@ export declare const tokenDataByNetwork: Record<NetworkType, Record<SupportedTok
|
|
|
19
19
|
export declare const tokenSymbolByAddress: Record<string, SupportedToken>;
|
|
20
20
|
export declare const isSupportedToken: (t: unknown) => t is SupportedToken;
|
|
21
21
|
export declare const isLPToken: (t: unknown) => t is LPTokens;
|
|
22
|
+
export declare function getDecimals(token: SupportedToken | string): number;
|
package/lib/tokens/token.js
CHANGED
|
@@ -11,10 +11,11 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.isLPToken = exports.isSupportedToken = exports.tokenSymbolByAddress = exports.tokenDataByNetwork = exports.supportedTokens = exports.lpTokens = void 0;
|
|
14
|
+
exports.getDecimals = exports.isLPToken = exports.isSupportedToken = exports.tokenSymbolByAddress = exports.tokenDataByNetwork = exports.supportedTokens = exports.lpTokens = void 0;
|
|
15
15
|
var mappers_1 = require("../utils/mappers");
|
|
16
16
|
var convex_1 = require("./convex");
|
|
17
17
|
var curveLP_1 = require("./curveLP");
|
|
18
|
+
var decimals_1 = require("./decimals");
|
|
18
19
|
var gear_1 = require("./gear");
|
|
19
20
|
var normal_1 = require("./normal");
|
|
20
21
|
var yearn_1 = require("./yearn");
|
|
@@ -171,3 +172,14 @@ var isLPToken = function (t) {
|
|
|
171
172
|
return typeof t === "string" && !!exports.lpTokens[t];
|
|
172
173
|
};
|
|
173
174
|
exports.isLPToken = isLPToken;
|
|
175
|
+
function getDecimals(token) {
|
|
176
|
+
var dec = decimals_1.decimals[token];
|
|
177
|
+
if (dec)
|
|
178
|
+
return dec;
|
|
179
|
+
dec = decimals_1.decimals[exports.tokenSymbolByAddress[token.toLowerCase()]];
|
|
180
|
+
if (!dec) {
|
|
181
|
+
throw new Error("Decimals for ".concat(token, " not found"));
|
|
182
|
+
}
|
|
183
|
+
return dec;
|
|
184
|
+
}
|
|
185
|
+
exports.getDecimals = getDecimals;
|
|
@@ -12,7 +12,7 @@ export declare class Multicall2__factory extends ContractFactory {
|
|
|
12
12
|
}): TransactionRequest;
|
|
13
13
|
attach(address: string): Multicall2;
|
|
14
14
|
connect(signer: Signer): Multicall2__factory;
|
|
15
|
-
static readonly bytecode = "
|
|
15
|
+
static readonly bytecode = "0x608060405234801561001057600080fd5b50610b51806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806372425d9d11610081578063bce38bd71161005b578063bce38bd714610181578063c3077fa9146101a1578063ee82ac5e146101b457600080fd5b806372425d9d1461016757806386d516e81461016d578063a8b0574e1461017357600080fd5b8063399542e9116100b2578063399542e91461011757806342cbb15c146101395780634d2301cc1461013f57600080fd5b80630f28c97d146100d9578063252dba42146100ee57806327e86d6e1461010f575b600080fd5b425b6040519081526020015b60405180910390f35b6101016100fc3660046107df565b6101c6565b6040516100e5929190610896565b6100db610373565b61012a61012536600461091e565b610386565b6040516100e5939291906109db565b436100db565b6100db61014d366004610a03565b73ffffffffffffffffffffffffffffffffffffffff163190565b446100db565b456100db565b6040514181526020016100e5565b61019461018f36600461091e565b61039e565b6040516100e59190610a25565b61012a6101af3660046107df565b610599565b6100db6101c2366004610a38565b4090565b8051439060609067ffffffffffffffff8111156101e5576101e56105b6565b60405190808252806020026020018201604052801561021857816020015b60608152602001906001900390816102035790505b50905060005b835181101561036d5760008085838151811061023c5761023c610a51565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1686848151811061027057610270610a51565b6020026020010151602001516040516102899190610a80565b6000604051808303816000865af19150503d80600081146102c6576040519150601f19603f3d011682016040523d82523d6000602084013e6102cb565b606091505b50915091508161033c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c656460448201526064015b60405180910390fd5b8084848151811061034f5761034f610a51565b602002602001018190525050508061036690610acb565b905061021e565b50915091565b6000610380600143610b04565b40905090565b4380406060610395858561039e565b90509250925092565b6060815167ffffffffffffffff8111156103ba576103ba6105b6565b60405190808252806020026020018201604052801561040057816020015b6040805180820190915260008152606060208201528152602001906001900390816103d85790505b50905060005b82518110156105925760008084838151811061042457610424610a51565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1685848151811061045857610458610a51565b6020026020010151602001516040516104719190610a80565b6000604051808303816000865af19150503d80600081146104ae576040519150601f19603f3d011682016040523d82523d6000602084013e6104b3565b606091505b5091509150851561054b578161054b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610333565b604051806040016040528083151581526020018281525084848151811061057457610574610a51565b602002602001018190525050508061058b90610acb565b9050610406565b5092915050565b60008060606105a9600185610386565b9196909550909350915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610608576106086105b6565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610655576106556105b6565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461068157600080fd5b919050565b6000601f838184011261069857600080fd5b8235602067ffffffffffffffff808311156106b5576106b56105b6565b8260051b6106c483820161060e565b93845286810183019383810190898611156106de57600080fd5b84890192505b858310156107d2578235848111156106fc5760008081fd5b890160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828d0381018213156107335760008081fd5b61073b6105e5565b61074689850161065d565b8152828401358881111561075a5760008081fd5b8085019450508d603f8501126107705760008081fd5b8884013588811115610784576107846105b6565b6107938a848e8401160161060e565b92508083528e848287010111156107aa5760008081fd5b808486018b85013760009083018a0152808901919091528452505091840191908401906106e4565b9998505050505050505050565b6000602082840312156107f157600080fd5b813567ffffffffffffffff81111561080857600080fd5b61081484828501610686565b949350505050565b60005b8381101561083757818101518382015260200161081f565b83811115610846576000848401525b50505050565b6000815180845261086481602086016020860161081c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610910577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184526108fe86835161084c565b955092840192908401906001016108c4565b509398975050505050505050565b6000806040838503121561093157600080fd5b8235801515811461094157600080fd5b9150602083013567ffffffffffffffff81111561095d57600080fd5b61096985828601610686565b9150509250929050565b6000815180845260208085019450848260051b860182860160005b858110156109ce578383038952815180511515845285015160408685018190526109ba8186018361084c565b9a87019a945050509084019060010161098e565b5090979650505050505050565b8381528260208201526060604082015260006109fa6060830184610973565b95945050505050565b600060208284031215610a1557600080fd5b610a1e8261065d565b9392505050565b602081526000610a1e6020830184610973565b600060208284031215610a4a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251610a9281846020870161081c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610afd57610afd610a9c565b5060010190565b600082821015610b1657610b16610a9c565b50039056fea26469706673582212202c69e970f479545d7be246c48610ba0d642f18252c98dea6e14ebbeeb819c8f864736f6c634300080a0033";
|
|
16
16
|
static readonly abi: {
|
|
17
17
|
inputs: ({
|
|
18
18
|
internalType: string;
|
|
@@ -333,7 +333,7 @@ var _abi = [
|
|
|
333
333
|
type: "function",
|
|
334
334
|
},
|
|
335
335
|
];
|
|
336
|
-
var _bytecode = "
|
|
336
|
+
var _bytecode = "0x608060405234801561001057600080fd5b50610b51806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806372425d9d11610081578063bce38bd71161005b578063bce38bd714610181578063c3077fa9146101a1578063ee82ac5e146101b457600080fd5b806372425d9d1461016757806386d516e81461016d578063a8b0574e1461017357600080fd5b8063399542e9116100b2578063399542e91461011757806342cbb15c146101395780634d2301cc1461013f57600080fd5b80630f28c97d146100d9578063252dba42146100ee57806327e86d6e1461010f575b600080fd5b425b6040519081526020015b60405180910390f35b6101016100fc3660046107df565b6101c6565b6040516100e5929190610896565b6100db610373565b61012a61012536600461091e565b610386565b6040516100e5939291906109db565b436100db565b6100db61014d366004610a03565b73ffffffffffffffffffffffffffffffffffffffff163190565b446100db565b456100db565b6040514181526020016100e5565b61019461018f36600461091e565b61039e565b6040516100e59190610a25565b61012a6101af3660046107df565b610599565b6100db6101c2366004610a38565b4090565b8051439060609067ffffffffffffffff8111156101e5576101e56105b6565b60405190808252806020026020018201604052801561021857816020015b60608152602001906001900390816102035790505b50905060005b835181101561036d5760008085838151811061023c5761023c610a51565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1686848151811061027057610270610a51565b6020026020010151602001516040516102899190610a80565b6000604051808303816000865af19150503d80600081146102c6576040519150601f19603f3d011682016040523d82523d6000602084013e6102cb565b606091505b50915091508161033c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c656460448201526064015b60405180910390fd5b8084848151811061034f5761034f610a51565b602002602001018190525050508061036690610acb565b905061021e565b50915091565b6000610380600143610b04565b40905090565b4380406060610395858561039e565b90509250925092565b6060815167ffffffffffffffff8111156103ba576103ba6105b6565b60405190808252806020026020018201604052801561040057816020015b6040805180820190915260008152606060208201528152602001906001900390816103d85790505b50905060005b82518110156105925760008084838151811061042457610424610a51565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1685848151811061045857610458610a51565b6020026020010151602001516040516104719190610a80565b6000604051808303816000865af19150503d80600081146104ae576040519150601f19603f3d011682016040523d82523d6000602084013e6104b3565b606091505b5091509150851561054b578161054b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610333565b604051806040016040528083151581526020018281525084848151811061057457610574610a51565b602002602001018190525050508061058b90610acb565b9050610406565b5092915050565b60008060606105a9600185610386565b9196909550909350915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610608576106086105b6565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610655576106556105b6565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461068157600080fd5b919050565b6000601f838184011261069857600080fd5b8235602067ffffffffffffffff808311156106b5576106b56105b6565b8260051b6106c483820161060e565b93845286810183019383810190898611156106de57600080fd5b84890192505b858310156107d2578235848111156106fc5760008081fd5b890160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828d0381018213156107335760008081fd5b61073b6105e5565b61074689850161065d565b8152828401358881111561075a5760008081fd5b8085019450508d603f8501126107705760008081fd5b8884013588811115610784576107846105b6565b6107938a848e8401160161060e565b92508083528e848287010111156107aa5760008081fd5b808486018b85013760009083018a0152808901919091528452505091840191908401906106e4565b9998505050505050505050565b6000602082840312156107f157600080fd5b813567ffffffffffffffff81111561080857600080fd5b61081484828501610686565b949350505050565b60005b8381101561083757818101518382015260200161081f565b83811115610846576000848401525b50505050565b6000815180845261086481602086016020860161081c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610910577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184526108fe86835161084c565b955092840192908401906001016108c4565b509398975050505050505050565b6000806040838503121561093157600080fd5b8235801515811461094157600080fd5b9150602083013567ffffffffffffffff81111561095d57600080fd5b61096985828601610686565b9150509250929050565b6000815180845260208085019450848260051b860182860160005b858110156109ce578383038952815180511515845285015160408685018190526109ba8186018361084c565b9a87019a945050509084019060010161098e565b5090979650505050505050565b8381528260208201526060604082015260006109fa6060830184610973565b95945050505050565b600060208284031215610a1557600080fd5b610a1e8261065d565b9392505050565b602081526000610a1e6020830184610973565b600060208284031215610a4a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251610a9281846020870161081c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610afd57610afd610a9c565b5060010190565b600082821015610b1657610b16610a9c565b50039056fea26469706673582212202c69e970f479545d7be246c48610ba0d642f18252c98dea6e14ebbeeb819c8f864736f6c634300080a0033";
|
|
337
337
|
var isSuperArgs = function (xs) { return xs.length > 1; };
|
|
338
338
|
var Multicall2__factory = /** @class */ (function (_super) {
|
|
339
339
|
__extends(Multicall2__factory, _super);
|
package/lib/utils/multicall.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ethers } from "ethers";
|
|
1
|
+
import { ethers, Signer } from "ethers";
|
|
2
2
|
import { Multicall2 } from "../types";
|
|
3
3
|
export interface CallData<T extends ethers.utils.Interface> {
|
|
4
4
|
method: keyof T["functions"];
|
|
@@ -15,7 +15,7 @@ export declare class MultiCallContract<T extends ethers.utils.Interface> {
|
|
|
15
15
|
private readonly _address;
|
|
16
16
|
private readonly _interface;
|
|
17
17
|
protected _multiCall: Multicall2;
|
|
18
|
-
constructor(address: string, intrerface: T, provider: ethers.providers.Provider);
|
|
18
|
+
constructor(address: string, intrerface: T, provider: ethers.providers.Provider | Signer);
|
|
19
19
|
call<R extends Array<any>>(data: Array<CallData<T>>): Promise<R>;
|
|
20
20
|
get address(): string;
|
|
21
21
|
get interface(): T;
|