@wardenswap/bestrate-sdk-beta 2.3.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 +847 -0
- package/dist/index.es.d.ts +847 -0
- package/dist/index.es.js +1 -0
- package/dist/index.js +1 -0
- package/package.json +89 -0
- package/readme.md +79 -0
package/dist/index.d.ts
ADDED
@@ -0,0 +1,847 @@
|
|
1
|
+
import { Event, EventFilter, BytesLike, BaseContract, Signer, Overrides, ContractTransaction, BigNumberish, CallOverrides, BigNumber, PopulatedTransaction, utils, ethers } from 'ethers';
|
2
|
+
import { FunctionFragment, Result } from '@ethersproject/abi';
|
3
|
+
import { Listener, Provider } from '@ethersproject/providers';
|
4
|
+
|
5
|
+
declare enum BESTRATE_NETWORK {
|
6
|
+
bsc = "bsc",
|
7
|
+
arbitrum = "arbitrum",
|
8
|
+
polygon = "polygon",
|
9
|
+
ethereum = "ethereum",
|
10
|
+
avalanche = "avalanche",
|
11
|
+
optimism = "optimism"
|
12
|
+
}
|
13
|
+
type TokenInfo = {
|
14
|
+
address: string;
|
15
|
+
decimals: number;
|
16
|
+
};
|
17
|
+
|
18
|
+
interface LinearVariableGasUsed {
|
19
|
+
constant: bigint;
|
20
|
+
multiplier: bigint;
|
21
|
+
}
|
22
|
+
interface L2CalldataGasUsed {
|
23
|
+
perRoute: bigint;
|
24
|
+
perPath: bigint;
|
25
|
+
initialSingle: bigint;
|
26
|
+
initialSplit: bigint;
|
27
|
+
ethWeth: bigint;
|
28
|
+
wethEth: bigint;
|
29
|
+
}
|
30
|
+
|
31
|
+
declare const GAS_TOKEN_DECIMALS = 18;
|
32
|
+
interface GasFeeDisplay {
|
33
|
+
usd: string;
|
34
|
+
dest: string;
|
35
|
+
unit: string;
|
36
|
+
}
|
37
|
+
interface GasPriceTokenChains {
|
38
|
+
l1: GasPriceTokens;
|
39
|
+
l2?: GasPriceTokens;
|
40
|
+
}
|
41
|
+
type GasPriceTokens = {
|
42
|
+
dest: {
|
43
|
+
fee: bigint;
|
44
|
+
decimals: number;
|
45
|
+
};
|
46
|
+
usd: bigint;
|
47
|
+
};
|
48
|
+
interface GasPriceTokensArbitrary {
|
49
|
+
[token: string]: {
|
50
|
+
fee: bigint;
|
51
|
+
decimals: number;
|
52
|
+
};
|
53
|
+
}
|
54
|
+
interface GasUsedUnit {
|
55
|
+
variable: LinearVariableGasUsed;
|
56
|
+
pathVariable: bigint;
|
57
|
+
initial: bigint;
|
58
|
+
}
|
59
|
+
interface GasOptions {
|
60
|
+
price: GasPriceTokenChains;
|
61
|
+
execution: GasUsedUnit;
|
62
|
+
l2Calldata?: L2CalldataGasUsed;
|
63
|
+
}
|
64
|
+
declare function zeroGasOptions(): GasOptions;
|
65
|
+
|
66
|
+
interface TypedEvent<TArgsArray extends Array<any> = any, TArgsObject = any> extends Event {
|
67
|
+
args: TArgsArray & TArgsObject;
|
68
|
+
}
|
69
|
+
interface TypedEventFilter<_TEvent extends TypedEvent> extends EventFilter {
|
70
|
+
}
|
71
|
+
interface TypedListener<TEvent extends TypedEvent> {
|
72
|
+
(...listenerArg: [...__TypechainArgsArray<TEvent>, TEvent]): void;
|
73
|
+
}
|
74
|
+
type __TypechainArgsArray<T> = T extends TypedEvent<infer U> ? U : never;
|
75
|
+
interface OnEvent<TRes> {
|
76
|
+
<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>, listener: TypedListener<TEvent>): TRes;
|
77
|
+
(eventName: string, listener: Listener): TRes;
|
78
|
+
}
|
79
|
+
|
80
|
+
interface Multicall2Interface extends utils.Interface {
|
81
|
+
functions: {
|
82
|
+
"aggregate((address,bytes)[])": FunctionFragment;
|
83
|
+
"blockAndAggregate((address,bytes)[])": FunctionFragment;
|
84
|
+
"getBlockHash(uint256)": FunctionFragment;
|
85
|
+
"getBlockNumber()": FunctionFragment;
|
86
|
+
"getCurrentBlockCoinbase()": FunctionFragment;
|
87
|
+
"getCurrentBlockDifficulty()": FunctionFragment;
|
88
|
+
"getCurrentBlockGasLimit()": FunctionFragment;
|
89
|
+
"getCurrentBlockTimestamp()": FunctionFragment;
|
90
|
+
"getEthBalance(address)": FunctionFragment;
|
91
|
+
"getLastBlockHash()": FunctionFragment;
|
92
|
+
"tryAggregate(bool,(address,bytes)[])": FunctionFragment;
|
93
|
+
"tryBlockAndAggregate(bool,(address,bytes)[])": FunctionFragment;
|
94
|
+
};
|
95
|
+
getFunction(nameOrSignatureOrTopic: "aggregate" | "blockAndAggregate" | "getBlockHash" | "getBlockNumber" | "getCurrentBlockCoinbase" | "getCurrentBlockDifficulty" | "getCurrentBlockGasLimit" | "getCurrentBlockTimestamp" | "getEthBalance" | "getLastBlockHash" | "tryAggregate" | "tryBlockAndAggregate"): FunctionFragment;
|
96
|
+
encodeFunctionData(functionFragment: "aggregate", values: [Multicall2.CallStruct[]]): string;
|
97
|
+
encodeFunctionData(functionFragment: "blockAndAggregate", values: [Multicall2.CallStruct[]]): string;
|
98
|
+
encodeFunctionData(functionFragment: "getBlockHash", values: [BigNumberish]): string;
|
99
|
+
encodeFunctionData(functionFragment: "getBlockNumber", values?: undefined): string;
|
100
|
+
encodeFunctionData(functionFragment: "getCurrentBlockCoinbase", values?: undefined): string;
|
101
|
+
encodeFunctionData(functionFragment: "getCurrentBlockDifficulty", values?: undefined): string;
|
102
|
+
encodeFunctionData(functionFragment: "getCurrentBlockGasLimit", values?: undefined): string;
|
103
|
+
encodeFunctionData(functionFragment: "getCurrentBlockTimestamp", values?: undefined): string;
|
104
|
+
encodeFunctionData(functionFragment: "getEthBalance", values: [string]): string;
|
105
|
+
encodeFunctionData(functionFragment: "getLastBlockHash", values?: undefined): string;
|
106
|
+
encodeFunctionData(functionFragment: "tryAggregate", values: [boolean, Multicall2.CallStruct[]]): string;
|
107
|
+
encodeFunctionData(functionFragment: "tryBlockAndAggregate", values: [boolean, Multicall2.CallStruct[]]): string;
|
108
|
+
decodeFunctionResult(functionFragment: "aggregate", data: BytesLike): Result;
|
109
|
+
decodeFunctionResult(functionFragment: "blockAndAggregate", data: BytesLike): Result;
|
110
|
+
decodeFunctionResult(functionFragment: "getBlockHash", data: BytesLike): Result;
|
111
|
+
decodeFunctionResult(functionFragment: "getBlockNumber", data: BytesLike): Result;
|
112
|
+
decodeFunctionResult(functionFragment: "getCurrentBlockCoinbase", data: BytesLike): Result;
|
113
|
+
decodeFunctionResult(functionFragment: "getCurrentBlockDifficulty", data: BytesLike): Result;
|
114
|
+
decodeFunctionResult(functionFragment: "getCurrentBlockGasLimit", data: BytesLike): Result;
|
115
|
+
decodeFunctionResult(functionFragment: "getCurrentBlockTimestamp", data: BytesLike): Result;
|
116
|
+
decodeFunctionResult(functionFragment: "getEthBalance", data: BytesLike): Result;
|
117
|
+
decodeFunctionResult(functionFragment: "getLastBlockHash", data: BytesLike): Result;
|
118
|
+
decodeFunctionResult(functionFragment: "tryAggregate", data: BytesLike): Result;
|
119
|
+
decodeFunctionResult(functionFragment: "tryBlockAndAggregate", data: BytesLike): Result;
|
120
|
+
events: {};
|
121
|
+
}
|
122
|
+
declare namespace Multicall2 {
|
123
|
+
type CallStruct = {
|
124
|
+
target: string;
|
125
|
+
callData: BytesLike;
|
126
|
+
};
|
127
|
+
type CallStructOutput = [string, string] & {
|
128
|
+
target: string;
|
129
|
+
callData: string;
|
130
|
+
};
|
131
|
+
type ResultStruct = {
|
132
|
+
success: boolean;
|
133
|
+
returnData: BytesLike;
|
134
|
+
};
|
135
|
+
type ResultStructOutput = [boolean, string] & {
|
136
|
+
success: boolean;
|
137
|
+
returnData: string;
|
138
|
+
};
|
139
|
+
}
|
140
|
+
interface Multicall2 extends BaseContract {
|
141
|
+
connect(signerOrProvider: Signer | Provider | string): this;
|
142
|
+
attach(addressOrName: string): this;
|
143
|
+
deployed(): Promise<this>;
|
144
|
+
interface: Multicall2Interface;
|
145
|
+
queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
|
146
|
+
listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
|
147
|
+
listeners(eventName?: string): Array<Listener>;
|
148
|
+
removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
|
149
|
+
removeAllListeners(eventName?: string): this;
|
150
|
+
off: OnEvent<this>;
|
151
|
+
on: OnEvent<this>;
|
152
|
+
once: OnEvent<this>;
|
153
|
+
removeListener: OnEvent<this>;
|
154
|
+
functions: {
|
155
|
+
aggregate(calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
156
|
+
from?: string;
|
157
|
+
}): Promise<ContractTransaction>;
|
158
|
+
blockAndAggregate(calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
159
|
+
from?: string;
|
160
|
+
}): Promise<ContractTransaction>;
|
161
|
+
getBlockHash(blockNumber: BigNumberish, overrides?: CallOverrides): Promise<[string] & {
|
162
|
+
blockHash: string;
|
163
|
+
}>;
|
164
|
+
getBlockNumber(overrides?: CallOverrides): Promise<[BigNumber] & {
|
165
|
+
blockNumber: BigNumber;
|
166
|
+
}>;
|
167
|
+
getCurrentBlockCoinbase(overrides?: CallOverrides): Promise<[string] & {
|
168
|
+
coinbase: string;
|
169
|
+
}>;
|
170
|
+
getCurrentBlockDifficulty(overrides?: CallOverrides): Promise<[BigNumber] & {
|
171
|
+
difficulty: BigNumber;
|
172
|
+
}>;
|
173
|
+
getCurrentBlockGasLimit(overrides?: CallOverrides): Promise<[BigNumber] & {
|
174
|
+
gaslimit: BigNumber;
|
175
|
+
}>;
|
176
|
+
getCurrentBlockTimestamp(overrides?: CallOverrides): Promise<[BigNumber] & {
|
177
|
+
timestamp: BigNumber;
|
178
|
+
}>;
|
179
|
+
getEthBalance(addr: string, overrides?: CallOverrides): Promise<[BigNumber] & {
|
180
|
+
balance: BigNumber;
|
181
|
+
}>;
|
182
|
+
getLastBlockHash(overrides?: CallOverrides): Promise<[string] & {
|
183
|
+
blockHash: string;
|
184
|
+
}>;
|
185
|
+
tryAggregate(requireSuccess: boolean, calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
186
|
+
from?: string;
|
187
|
+
}): Promise<ContractTransaction>;
|
188
|
+
tryBlockAndAggregate(requireSuccess: boolean, calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
189
|
+
from?: string;
|
190
|
+
}): Promise<ContractTransaction>;
|
191
|
+
};
|
192
|
+
aggregate(calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
193
|
+
from?: string;
|
194
|
+
}): Promise<ContractTransaction>;
|
195
|
+
blockAndAggregate(calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
196
|
+
from?: string;
|
197
|
+
}): Promise<ContractTransaction>;
|
198
|
+
getBlockHash(blockNumber: BigNumberish, overrides?: CallOverrides): Promise<string>;
|
199
|
+
getBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;
|
200
|
+
getCurrentBlockCoinbase(overrides?: CallOverrides): Promise<string>;
|
201
|
+
getCurrentBlockDifficulty(overrides?: CallOverrides): Promise<BigNumber>;
|
202
|
+
getCurrentBlockGasLimit(overrides?: CallOverrides): Promise<BigNumber>;
|
203
|
+
getCurrentBlockTimestamp(overrides?: CallOverrides): Promise<BigNumber>;
|
204
|
+
getEthBalance(addr: string, overrides?: CallOverrides): Promise<BigNumber>;
|
205
|
+
getLastBlockHash(overrides?: CallOverrides): Promise<string>;
|
206
|
+
tryAggregate(requireSuccess: boolean, calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
207
|
+
from?: string;
|
208
|
+
}): Promise<ContractTransaction>;
|
209
|
+
tryBlockAndAggregate(requireSuccess: boolean, calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
210
|
+
from?: string;
|
211
|
+
}): Promise<ContractTransaction>;
|
212
|
+
callStatic: {
|
213
|
+
aggregate(calls: Multicall2.CallStruct[], overrides?: CallOverrides): Promise<[
|
214
|
+
BigNumber,
|
215
|
+
string[]
|
216
|
+
] & {
|
217
|
+
blockNumber: BigNumber;
|
218
|
+
returnData: string[];
|
219
|
+
}>;
|
220
|
+
blockAndAggregate(calls: Multicall2.CallStruct[], overrides?: CallOverrides): Promise<[
|
221
|
+
BigNumber,
|
222
|
+
string,
|
223
|
+
Multicall2.ResultStructOutput[]
|
224
|
+
] & {
|
225
|
+
blockNumber: BigNumber;
|
226
|
+
blockHash: string;
|
227
|
+
returnData: Multicall2.ResultStructOutput[];
|
228
|
+
}>;
|
229
|
+
getBlockHash(blockNumber: BigNumberish, overrides?: CallOverrides): Promise<string>;
|
230
|
+
getBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;
|
231
|
+
getCurrentBlockCoinbase(overrides?: CallOverrides): Promise<string>;
|
232
|
+
getCurrentBlockDifficulty(overrides?: CallOverrides): Promise<BigNumber>;
|
233
|
+
getCurrentBlockGasLimit(overrides?: CallOverrides): Promise<BigNumber>;
|
234
|
+
getCurrentBlockTimestamp(overrides?: CallOverrides): Promise<BigNumber>;
|
235
|
+
getEthBalance(addr: string, overrides?: CallOverrides): Promise<BigNumber>;
|
236
|
+
getLastBlockHash(overrides?: CallOverrides): Promise<string>;
|
237
|
+
tryAggregate(requireSuccess: boolean, calls: Multicall2.CallStruct[], overrides?: CallOverrides): Promise<Multicall2.ResultStructOutput[]>;
|
238
|
+
tryBlockAndAggregate(requireSuccess: boolean, calls: Multicall2.CallStruct[], overrides?: CallOverrides): Promise<[
|
239
|
+
BigNumber,
|
240
|
+
string,
|
241
|
+
Multicall2.ResultStructOutput[]
|
242
|
+
] & {
|
243
|
+
blockNumber: BigNumber;
|
244
|
+
blockHash: string;
|
245
|
+
returnData: Multicall2.ResultStructOutput[];
|
246
|
+
}>;
|
247
|
+
};
|
248
|
+
filters: {};
|
249
|
+
estimateGas: {
|
250
|
+
aggregate(calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
251
|
+
from?: string;
|
252
|
+
}): Promise<BigNumber>;
|
253
|
+
blockAndAggregate(calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
254
|
+
from?: string;
|
255
|
+
}): Promise<BigNumber>;
|
256
|
+
getBlockHash(blockNumber: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
|
257
|
+
getBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;
|
258
|
+
getCurrentBlockCoinbase(overrides?: CallOverrides): Promise<BigNumber>;
|
259
|
+
getCurrentBlockDifficulty(overrides?: CallOverrides): Promise<BigNumber>;
|
260
|
+
getCurrentBlockGasLimit(overrides?: CallOverrides): Promise<BigNumber>;
|
261
|
+
getCurrentBlockTimestamp(overrides?: CallOverrides): Promise<BigNumber>;
|
262
|
+
getEthBalance(addr: string, overrides?: CallOverrides): Promise<BigNumber>;
|
263
|
+
getLastBlockHash(overrides?: CallOverrides): Promise<BigNumber>;
|
264
|
+
tryAggregate(requireSuccess: boolean, calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
265
|
+
from?: string;
|
266
|
+
}): Promise<BigNumber>;
|
267
|
+
tryBlockAndAggregate(requireSuccess: boolean, calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
268
|
+
from?: string;
|
269
|
+
}): Promise<BigNumber>;
|
270
|
+
};
|
271
|
+
populateTransaction: {
|
272
|
+
aggregate(calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
273
|
+
from?: string;
|
274
|
+
}): Promise<PopulatedTransaction>;
|
275
|
+
blockAndAggregate(calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
276
|
+
from?: string;
|
277
|
+
}): Promise<PopulatedTransaction>;
|
278
|
+
getBlockHash(blockNumber: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
279
|
+
getBlockNumber(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
280
|
+
getCurrentBlockCoinbase(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
281
|
+
getCurrentBlockDifficulty(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
282
|
+
getCurrentBlockGasLimit(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
283
|
+
getCurrentBlockTimestamp(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
284
|
+
getEthBalance(addr: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
285
|
+
getLastBlockHash(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
286
|
+
tryAggregate(requireSuccess: boolean, calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
287
|
+
from?: string;
|
288
|
+
}): Promise<PopulatedTransaction>;
|
289
|
+
tryBlockAndAggregate(requireSuccess: boolean, calls: Multicall2.CallStruct[], overrides?: Overrides & {
|
290
|
+
from?: string;
|
291
|
+
}): Promise<PopulatedTransaction>;
|
292
|
+
};
|
293
|
+
}
|
294
|
+
|
295
|
+
declare enum DexModel {
|
296
|
+
UniswapV2 = 0,
|
297
|
+
UniswapV3 = 1,
|
298
|
+
DMM = 2,
|
299
|
+
CurvePlain = 3,
|
300
|
+
CurveMeta = 4,
|
301
|
+
CurvePlainSol = 5,
|
302
|
+
Iron = 6,
|
303
|
+
Synapse = 7,
|
304
|
+
CurveMetaSol = 8,
|
305
|
+
CurveCrypto = 9,
|
306
|
+
CurveLendingA = 10,
|
307
|
+
CurveLendingCryptoZap = 11,
|
308
|
+
CurveLendingCryptoTwoZap = 12,
|
309
|
+
PolyDex = 13,
|
310
|
+
FireBirdWeighted = 14,
|
311
|
+
BalancerWeighted = 15,
|
312
|
+
BalancerStable = 16,
|
313
|
+
BalancerMetaStable = 17,
|
314
|
+
BalancerBoostedStable = 18,
|
315
|
+
BalancerLinear = 19,
|
316
|
+
BalancerLiquidityBootstrapping = 20,
|
317
|
+
Biswap = 21,
|
318
|
+
DodoV1 = 22,
|
319
|
+
DodoV2 = 23,
|
320
|
+
Mdex = 24,
|
321
|
+
Mars = 25,
|
322
|
+
Smoothy = 26,
|
323
|
+
Shibaswap = 27,
|
324
|
+
GmxDex = 28,
|
325
|
+
Solidly = 29,
|
326
|
+
Synthetix = 30,
|
327
|
+
Unknown = 31
|
328
|
+
}
|
329
|
+
interface UniswapV2BasedModelInfo {
|
330
|
+
model: DexModel.UniswapV2 | DexModel.Mdex | DexModel.Biswap | DexModel.Mars | DexModel.Shibaswap;
|
331
|
+
pairBytecodeHash: string;
|
332
|
+
factory: string;
|
333
|
+
fee: bigint;
|
334
|
+
feePrecision: bigint;
|
335
|
+
}
|
336
|
+
interface UniswapV3ModelInfo extends Omit<UniswapV2BasedModelInfo, 'model' | 'feePrecision'> {
|
337
|
+
model: DexModel.UniswapV3;
|
338
|
+
maxInitializedTicks: number;
|
339
|
+
tickQuerier: string;
|
340
|
+
depositAddress: string;
|
341
|
+
gasPerInitializedTick: bigint;
|
342
|
+
gasPerTick: bigint;
|
343
|
+
}
|
344
|
+
interface PolyDexModelInfo extends Omit<UniswapV2BasedModelInfo, 'model'> {
|
345
|
+
model: DexModel.PolyDex | DexModel.FireBirdWeighted;
|
346
|
+
weight: number;
|
347
|
+
}
|
348
|
+
interface CurvePlainModelInfo {
|
349
|
+
model: DexModel.CurvePlain | DexModel.CurvePlainSol | DexModel.Iron | DexModel.Synapse;
|
350
|
+
poolContract: string;
|
351
|
+
lpToken: string;
|
352
|
+
tokens: string[];
|
353
|
+
rates: bigint[];
|
354
|
+
lendingPrecision: bigint;
|
355
|
+
precision: bigint;
|
356
|
+
precisionMul: bigint[];
|
357
|
+
feeDenominator: bigint;
|
358
|
+
isUnderlying: boolean;
|
359
|
+
aPrecision?: bigint;
|
360
|
+
balancesArgs?: string;
|
361
|
+
}
|
362
|
+
interface CurveLendingModelInfo {
|
363
|
+
model: DexModel.CurveLendingA;
|
364
|
+
poolContract: string;
|
365
|
+
lpToken: string;
|
366
|
+
tokens: string[];
|
367
|
+
precision: bigint;
|
368
|
+
precisionMul: bigint[];
|
369
|
+
feeDenominator: bigint;
|
370
|
+
aPrecision: bigint;
|
371
|
+
}
|
372
|
+
interface CurveMetaModelInfo extends Omit<CurvePlainModelInfo, 'isUnderlying' | 'lendingPrecision' | 'model'> {
|
373
|
+
model: DexModel.CurveMeta | DexModel.CurveMetaSol;
|
374
|
+
multicall: string;
|
375
|
+
baseCacheExpires: bigint;
|
376
|
+
basePoolRouteId: string;
|
377
|
+
isCacheExists: boolean;
|
378
|
+
}
|
379
|
+
interface CurveCryptoModelInfo {
|
380
|
+
model: DexModel.CurveCrypto;
|
381
|
+
tokens: string[];
|
382
|
+
precision: bigint;
|
383
|
+
precisions: bigint[];
|
384
|
+
feeDenominator: bigint;
|
385
|
+
noiseFee: bigint;
|
386
|
+
minA: bigint;
|
387
|
+
maxA: bigint;
|
388
|
+
isAPrecise: boolean;
|
389
|
+
minGamma: bigint;
|
390
|
+
maxGamma: bigint;
|
391
|
+
aMultiplier: bigint;
|
392
|
+
poolContract: string;
|
393
|
+
lpToken: string;
|
394
|
+
}
|
395
|
+
interface CurveCryptoZapModelInfo {
|
396
|
+
model: DexModel.CurveLendingCryptoZap;
|
397
|
+
basePoolId: string;
|
398
|
+
poolId: string;
|
399
|
+
tokens: string[];
|
400
|
+
nStablecoins: number;
|
401
|
+
poolContract: string;
|
402
|
+
}
|
403
|
+
interface CurveCryptoTwoZapModelInfo extends Omit<CurveCryptoZapModelInfo, 'model'> {
|
404
|
+
model: DexModel.CurveLendingCryptoTwoZap;
|
405
|
+
nCoins: number;
|
406
|
+
}
|
407
|
+
interface DMMModelInfo {
|
408
|
+
model: DexModel.DMM;
|
409
|
+
pools: {
|
410
|
+
[token0: string]: {
|
411
|
+
[token1: string]: string;
|
412
|
+
};
|
413
|
+
};
|
414
|
+
}
|
415
|
+
interface BalancerWeightedModelInfo extends Omit<BalancerStableModelInfo, 'model' | 'aPrecision'> {
|
416
|
+
model: DexModel.BalancerWeighted | DexModel.BalancerLiquidityBootstrapping;
|
417
|
+
weights: bigint[];
|
418
|
+
}
|
419
|
+
interface BalancerStableModelInfo {
|
420
|
+
model: DexModel.BalancerStable;
|
421
|
+
tokens: string[];
|
422
|
+
scalingFactors: bigint[];
|
423
|
+
vaultContract: string;
|
424
|
+
poolId: string;
|
425
|
+
aPrecision: bigint;
|
426
|
+
depositAddress: string;
|
427
|
+
}
|
428
|
+
interface BalancerBoostedStableModelInfo extends Omit<BalancerStableModelInfo, 'model'> {
|
429
|
+
model: DexModel.BalancerBoostedStable;
|
430
|
+
bptIndex: number;
|
431
|
+
linearPoolIds: string[];
|
432
|
+
}
|
433
|
+
interface BalancerLinearModelInfo {
|
434
|
+
model: DexModel.BalancerLinear;
|
435
|
+
tokens: string[];
|
436
|
+
scalingFactors: bigint[];
|
437
|
+
vaultContract: string;
|
438
|
+
poolId: string;
|
439
|
+
mainIndex: number;
|
440
|
+
wrappedIndex: number;
|
441
|
+
wrappedToken: string;
|
442
|
+
bptIndex: number;
|
443
|
+
depositAddress: string;
|
444
|
+
}
|
445
|
+
interface BalancerMetaStableModelInfo extends Omit<BalancerStableModelInfo, 'model'> {
|
446
|
+
model: DexModel.BalancerMetaStable;
|
447
|
+
rateProviders: string[];
|
448
|
+
multicall: string;
|
449
|
+
}
|
450
|
+
interface DodoV2ModelInfo {
|
451
|
+
model: DexModel.DodoV2 | DexModel.DodoV1;
|
452
|
+
factoryContract: string;
|
453
|
+
pools: {
|
454
|
+
[baseToken: string]: {
|
455
|
+
[quoteToken: string]: string;
|
456
|
+
};
|
457
|
+
};
|
458
|
+
}
|
459
|
+
interface SmoothyModelInfo {
|
460
|
+
model: DexModel.Smoothy;
|
461
|
+
poolContract: string;
|
462
|
+
expectedImplAddress: string;
|
463
|
+
expectedTokens: {
|
464
|
+
[addr: string]: number;
|
465
|
+
};
|
466
|
+
}
|
467
|
+
interface GmxDexModelInfo {
|
468
|
+
model: DexModel.GmxDex;
|
469
|
+
vaultContract: string;
|
470
|
+
pricePrecision: bigint;
|
471
|
+
debtTokenContract: string;
|
472
|
+
}
|
473
|
+
interface SolidlyModelInfo {
|
474
|
+
model: DexModel.Solidly;
|
475
|
+
factoryContract: string;
|
476
|
+
isStable: boolean;
|
477
|
+
pairBytecodeHash: string;
|
478
|
+
}
|
479
|
+
interface SynthetixModelInfo {
|
480
|
+
model: DexModel.Synthetix;
|
481
|
+
tokens: {
|
482
|
+
[address: string]: string;
|
483
|
+
};
|
484
|
+
sUsdContract: string;
|
485
|
+
exchangeRatesContract: string;
|
486
|
+
exchangerContract: string;
|
487
|
+
synthetixContract: string;
|
488
|
+
flexibleStorageContract: string;
|
489
|
+
PRECISION_UNIT: bigint;
|
490
|
+
}
|
491
|
+
interface RouteInfo {
|
492
|
+
id: string;
|
493
|
+
address: string;
|
494
|
+
name: string;
|
495
|
+
}
|
496
|
+
type RouteInfoModel = RouteInfo & {
|
497
|
+
gas: bigint;
|
498
|
+
isTradingAllowed: boolean;
|
499
|
+
} & (UniswapV2BasedModelInfo | UniswapV3ModelInfo | CurvePlainModelInfo | CurveMetaModelInfo | CurveCryptoModelInfo | CurveCryptoZapModelInfo | CurveCryptoTwoZapModelInfo | CurveLendingModelInfo | DodoV2ModelInfo | SmoothyModelInfo | DMMModelInfo | BalancerWeightedModelInfo | BalancerStableModelInfo | BalancerMetaStableModelInfo | BalancerBoostedStableModelInfo | BalancerLinearModelInfo | PolyDexModelInfo | GmxDexModelInfo | SolidlyModelInfo | SynthetixModelInfo | {
|
500
|
+
model: DexModel.Unknown;
|
501
|
+
});
|
502
|
+
|
503
|
+
type DexRoute = RouteInfoModel[];
|
504
|
+
|
505
|
+
interface MulticallBatchOption {
|
506
|
+
maxCallsPerBatch: number;
|
507
|
+
}
|
508
|
+
|
509
|
+
interface AmountOut {
|
510
|
+
amount: bigint;
|
511
|
+
gas: bigint;
|
512
|
+
}
|
513
|
+
interface IAmountOutCalculatorModel {
|
514
|
+
/**
|
515
|
+
* get a list of pair that can be traded via the model
|
516
|
+
*/
|
517
|
+
getTradablePairs(): [string, string][];
|
518
|
+
/**
|
519
|
+
* Get Warden's trading route address
|
520
|
+
*/
|
521
|
+
getTradingRouteIndex(): number;
|
522
|
+
/**
|
523
|
+
* Get pool address for the model
|
524
|
+
*/
|
525
|
+
getPoolAddress(): string;
|
526
|
+
/**
|
527
|
+
* TODO: Let model return list of visited path for given token pair
|
528
|
+
* pool
|
529
|
+
*
|
530
|
+
* getVisitedPaths(src: string, dest: string): [poolAddress, Set<string>()][]
|
531
|
+
* For 1 model:
|
532
|
+
* Uniswap: [[0xpool1, new Set<string>([0xtoken1, 0xtoken2])]]
|
533
|
+
* CurveMetaPool: [
|
534
|
+
* [0xmetaPool, new Set<string>([0xmetaToken])]
|
535
|
+
* [0xbasePool, new Set<string>([0xbaseToken])]
|
536
|
+
* ]
|
537
|
+
* GMX: [
|
538
|
+
* [0xgmxVault, new Set<string>([0xtoken1, token2])]
|
539
|
+
* ]
|
540
|
+
*
|
541
|
+
* Or, if swap a token on pool affects other tokens in the same pool, then return only list of pool tokens
|
542
|
+
*/
|
543
|
+
/**
|
544
|
+
* Get deposit address
|
545
|
+
*/
|
546
|
+
getDepositAddress(): string;
|
547
|
+
/**
|
548
|
+
* generate Multicall calls for getting current state of source
|
549
|
+
* @param tokens list of src/dest token addresses
|
550
|
+
*/
|
551
|
+
getfetchingCurrentStateCalls(): Multicall2.CallStruct[];
|
552
|
+
/**
|
553
|
+
* Apply outputs received from Multicall
|
554
|
+
* @param outputs multicall's outputs
|
555
|
+
*/
|
556
|
+
applyCurrentStateFromCalls(outputs: Multicall2.ResultStructOutput[]): void;
|
557
|
+
/**
|
558
|
+
* Calculate output amount based on trade direction and input amount
|
559
|
+
* @param src source token address
|
560
|
+
* @param dest destination token address
|
561
|
+
* @param amountIn amountIn
|
562
|
+
*/
|
563
|
+
getAmountOut(src: string, dest: string, amountIn: bigint): AmountOut;
|
564
|
+
}
|
565
|
+
|
566
|
+
interface AmountOutResult {
|
567
|
+
amountOut: AmountOut;
|
568
|
+
routeIndex: number;
|
569
|
+
poolAddress: string;
|
570
|
+
}
|
571
|
+
interface TradingPath {
|
572
|
+
routeIndexes: number[];
|
573
|
+
tokens: string[];
|
574
|
+
pools: string[];
|
575
|
+
amountOut: bigint;
|
576
|
+
gas: bigint;
|
577
|
+
}
|
578
|
+
interface DexManagerOptions {
|
579
|
+
multicall: MulticallBatchOption;
|
580
|
+
maxCandidatePaths: number;
|
581
|
+
}
|
582
|
+
declare class DexManager {
|
583
|
+
private readonly DEX_ROUTES;
|
584
|
+
private readonly CORRESPONDENT_TOKENS;
|
585
|
+
private multicall;
|
586
|
+
private opt;
|
587
|
+
readonly corrTokenDecimals: {
|
588
|
+
[token: string]: number;
|
589
|
+
};
|
590
|
+
private models;
|
591
|
+
private indexedModels;
|
592
|
+
private DEX_ROUTES_ID_IDX;
|
593
|
+
private DEX_ROUTES_ADDRESS_IDX;
|
594
|
+
private corrTokens;
|
595
|
+
private amountOutCache;
|
596
|
+
constructor(DEX_ROUTES: DexRoute, CORRESPONDENT_TOKENS: TokenInfo[], multicall: Multicall2, opt: DexManagerOptions);
|
597
|
+
private updateIndexedModel;
|
598
|
+
private isModelIndexed;
|
599
|
+
private isModelTradingAllowed;
|
600
|
+
getModel<T extends IAmountOutCalculatorModel>(src: string, dest: string, routeIdx: number): T | undefined;
|
601
|
+
private getTradableModels;
|
602
|
+
getDepositAddress(src: string, dest: string, routeAddress: string): string;
|
603
|
+
generateAllTokenPairs(src: string, dest: string): [string, string][];
|
604
|
+
unregisterAll(): void;
|
605
|
+
registerSingle(pair: [string, string], routeIdx: number): void;
|
606
|
+
register(src: string, dest: string): void;
|
607
|
+
getRouteInfo(routeIdx: number): RouteInfo;
|
608
|
+
fetchAllReserves(): Promise<number>;
|
609
|
+
private tryGetAmountOut;
|
610
|
+
getMaxAmountOutWithCache(src: string, dest: string, amountIn: bigint, visitedRoutes?: Set<string>, gasPrice?: GasPriceTokensArbitrary): AmountOutResult;
|
611
|
+
getAmountOutByPath(src: string, dest: string, amountIn: bigint, routeIndexes: number[], tokens: string[]): AmountOut;
|
612
|
+
protected getPathCombinationRecursively(depth: number, tokens: string[], dest: string, visitedTokens: string[], amountIn: bigint, paths: TradingPath[], topNPaths: number, dexSelectorFunc: (src: string, dest: string, amountIn: bigint, visitedPools: Set<string>) => AmountOutResult): void;
|
613
|
+
getAllRoutesSingle(src: string, dest: string, amountIn: bigint, gasPrices?: GasPriceTokensArbitrary): TradingPath[];
|
614
|
+
getTokenPriceRoutes(usd: string, usdDecimal: number, additionalTokens: string[]): {
|
615
|
+
[token: string]: TradingPath[];
|
616
|
+
};
|
617
|
+
getCandidatePaths(topNPaths: number, src: string, dest: string, amountIn: bigint, gasPrices?: GasPriceTokensArbitrary): TradingPath[];
|
618
|
+
getAllRoutesSplit(src: string, dest: string, amountIn: bigint, gasPrice?: GasPriceTokensArbitrary): {
|
619
|
+
paths: TradingPath[];
|
620
|
+
amountOuts: bigint[][];
|
621
|
+
gas: bigint[][];
|
622
|
+
};
|
623
|
+
}
|
624
|
+
|
625
|
+
interface WardenBestRateOption {
|
626
|
+
/** Maximum number of function calls per single multicall call, lower the number may improve latency but in exchange of higher network traffic */
|
627
|
+
maxCallsPerFetch?: number;
|
628
|
+
/** Maximum number of candidate paths for split trading, lower the number may improve performance */
|
629
|
+
maxCandidatePathsCount?: number;
|
630
|
+
}
|
631
|
+
interface GetQuoteOption {
|
632
|
+
/** A flag indicating whether spliting trade should be enabled */
|
633
|
+
enableSplit?: boolean;
|
634
|
+
/** L2 Gas price for L2 chains e.g. Optimism, Arbitrum */
|
635
|
+
gasPriceL2?: ethers.BigNumberish;
|
636
|
+
}
|
637
|
+
type PathResult = {
|
638
|
+
routes: RouteInfo[];
|
639
|
+
tokens: string[];
|
640
|
+
};
|
641
|
+
type QuoteResult = {
|
642
|
+
type: 'split';
|
643
|
+
paths: PathResult[];
|
644
|
+
depositAddresses: string[];
|
645
|
+
volumns: number[];
|
646
|
+
amountOut: string;
|
647
|
+
gasFees: GasFeeDisplay;
|
648
|
+
blockNumber: number;
|
649
|
+
routerAddress: string;
|
650
|
+
swapAddress: string;
|
651
|
+
} | {
|
652
|
+
type: 'strategies';
|
653
|
+
path: PathResult;
|
654
|
+
depositAddress: string;
|
655
|
+
amountOut: string;
|
656
|
+
gasFees: GasFeeDisplay;
|
657
|
+
blockNumber: number;
|
658
|
+
routerAddress: string;
|
659
|
+
swapAddress: string;
|
660
|
+
} | {
|
661
|
+
type: 'ethToWeth' | 'wethToEth';
|
662
|
+
routerAddress: string;
|
663
|
+
amountOut: string;
|
664
|
+
gasFees: GasFeeDisplay;
|
665
|
+
};
|
666
|
+
/**
|
667
|
+
* Warden Best Rate for getting quote and swapping.
|
668
|
+
*/
|
669
|
+
declare class WardenBestRate {
|
670
|
+
private provider;
|
671
|
+
private multicall2;
|
672
|
+
private network;
|
673
|
+
private options;
|
674
|
+
/**
|
675
|
+
* Create new instance of WardenBestRate
|
676
|
+
*
|
677
|
+
* @param provider ethersjs' Provider instance
|
678
|
+
* @param networkName Chain name (supported by WardenSwap)
|
679
|
+
* @param options Options
|
680
|
+
*/
|
681
|
+
constructor(provider: ethers.providers.Provider, networkName: `${BESTRATE_NETWORK}`, options?: WardenBestRateOption);
|
682
|
+
private getTradeType;
|
683
|
+
/**
|
684
|
+
* Get deposit addresses indicating the first hop to be used for starting the trade.
|
685
|
+
* This information is required by Wardenswap contract
|
686
|
+
* @param srcDestRouteTuples tuples of src, dest, and routeAddress
|
687
|
+
* @returns a list of deposit addresses with the same order as the input
|
688
|
+
*/
|
689
|
+
getDepositAddresses(srcDestRouteTuples: {
|
690
|
+
src: string;
|
691
|
+
dest: string;
|
692
|
+
routeAddress: string;
|
693
|
+
}[], dexManager?: DexManager): string[];
|
694
|
+
private _fetch;
|
695
|
+
private _quoteETHWETH;
|
696
|
+
private sendTx;
|
697
|
+
/**
|
698
|
+
* Set Allowance of a token to be spendable by WardenSwap contract
|
699
|
+
* @param signer ethers' Signer
|
700
|
+
* @param src Token to be approved
|
701
|
+
* @param allowedAmount Allowed amount to be spendable by WardenSwap contract
|
702
|
+
* @param overrides ethers' overrides
|
703
|
+
* @returns ethers' contract transaction (no wait)
|
704
|
+
*/
|
705
|
+
approve(signer: Signer, src: string, allowedAmount?: ethers.BigNumberish, overrides?: ethers.PayableOverrides): Promise<ethers.ContractTransaction | null>;
|
706
|
+
/**
|
707
|
+
* Send a swap transaction to WardenSwap based on given quote
|
708
|
+
* @param signer ethers' Signer
|
709
|
+
* @param src Source token
|
710
|
+
* @param dest Destination token
|
711
|
+
* @param amountIn Amount of source token
|
712
|
+
* @param minDestAmount Minimum amount of destination token
|
713
|
+
* @param quoteResult Best rate quote got from `getQuote` method
|
714
|
+
* @param partnerId Warden's partner ID
|
715
|
+
* @param metaData MetaWarden ID
|
716
|
+
* @param receiver Wallet to receive destination token, default to tx sender
|
717
|
+
* @param overrides ethers' transaction overrides
|
718
|
+
* @returns ethers' contract transaction (no wait)
|
719
|
+
*/
|
720
|
+
swap(signer: Signer, src: string, dest: string, amountIn: ethers.BigNumberish, minDestAmount: ethers.BigNumberish, quoteResult: QuoteResult, partnerId?: ethers.BigNumberish, metaData?: ethers.BigNumberish, receiver?: string, overrides?: ethers.PayableOverrides): Promise<ethers.ContractTransaction>;
|
721
|
+
/**
|
722
|
+
* Get the best rate of a token pair with given amount
|
723
|
+
* @param src Address of src asset
|
724
|
+
* @param dest Address of dest asset
|
725
|
+
* @param amountIn Amount of src asset to be traded
|
726
|
+
* @param gasPrice Amount of gas price per unit in native currency (18 decimals)
|
727
|
+
* e.g. BSC = BNB, Polygon = MATIC, Ethereum = ETH. For L2 chains,
|
728
|
+
* this is Ethereum (L1) gas price.
|
729
|
+
* @param opts Options for getting quote
|
730
|
+
* @returns Trading routes which provide the best rate
|
731
|
+
*/
|
732
|
+
getQuote(src: string, dest: string, amountIn: ethers.BigNumberish, gasPrice: ethers.BigNumberish, opts?: GetQuoteOption): Promise<QuoteResult>;
|
733
|
+
}
|
734
|
+
|
735
|
+
/**
|
736
|
+
* A class for calldata compression to be used with WardenSwap on L2 chains
|
737
|
+
*/
|
738
|
+
declare class WardenPayloadCompressor {
|
739
|
+
private networkName;
|
740
|
+
private provider;
|
741
|
+
private multicallOptions?;
|
742
|
+
private multicall;
|
743
|
+
private addressTableContract;
|
744
|
+
private readonly MAX_UINT24;
|
745
|
+
private readonly MAX_UINT32;
|
746
|
+
private readonly MAX_UINT64;
|
747
|
+
private readonly MAX_UINT80;
|
748
|
+
private readonly MAX_UINT96;
|
749
|
+
private readonly MAX_UINT112;
|
750
|
+
/**
|
751
|
+
* Create new instance of WardenPayloadCompressor
|
752
|
+
* @param networkName Chain name (supported by WardenSwap)
|
753
|
+
* @param provider ethersjs' Provider
|
754
|
+
* @param multicallOptions Multicall options
|
755
|
+
*/
|
756
|
+
constructor(networkName: `${BESTRATE_NETWORK}`, provider: ethers.providers.Provider, multicallOptions?: MulticallBatchOption);
|
757
|
+
private fetchAddressIndex;
|
758
|
+
private encodeAddress;
|
759
|
+
private encodeAmount;
|
760
|
+
private encodePathResult;
|
761
|
+
private addPathResultAddressesToArray;
|
762
|
+
private createAddressIndexMap;
|
763
|
+
/**
|
764
|
+
* Compress swap data for L2 chains
|
765
|
+
* @param paths Path result(s) gathered from `getQuote`
|
766
|
+
* @param volumes Splitting ratio of source token amount range from 1-100
|
767
|
+
* @param addressIdxMap Address-index map gathered from ArbAddressTable contract
|
768
|
+
* @returns A hexadecimal string representing compressed swap data
|
769
|
+
*/
|
770
|
+
encodeSwapDataL2(paths: PathResult | PathResult[], volumes: number[], addressIdxMap?: {
|
771
|
+
[address: string]: ethers.BigNumber | null;
|
772
|
+
}): Promise<string>;
|
773
|
+
/**
|
774
|
+
* Encode swap data for L1 chains
|
775
|
+
* @param paths Path result(s) gathered from `getQuote`
|
776
|
+
* @returns A hexadecimal string representing encoded swap data
|
777
|
+
*/
|
778
|
+
encodeSwapData(paths: PathResult | PathResult[]): string;
|
779
|
+
/**
|
780
|
+
* Compress calldata for L2 chains
|
781
|
+
* @param src Source Token
|
782
|
+
* @param dest Destination Token
|
783
|
+
* @param amountIn Amount of source token
|
784
|
+
* @param minDestAmount Minimum amount of destination token required
|
785
|
+
* @param partnerId Warden's partner ID
|
786
|
+
* @param metaData MetaWarden data
|
787
|
+
* @param swapAddress Warden swap contract
|
788
|
+
* @param receiver Receiver wallet
|
789
|
+
* @param paths Path result(s) gathered from `getQuote`
|
790
|
+
* @param volumes Splitting ratio of source token amount range from 1-100
|
791
|
+
* @returns Serialized data to be used with swap functions with compression feature
|
792
|
+
*/
|
793
|
+
compress(src: string, dest: string, amountIn: ethers.BigNumberish, minDestAmount: ethers.BigNumberish, partnerId: ethers.BigNumberish, metaData: ethers.BigNumberish, swapAddress: string, receiver: string, paths: PathResult | PathResult[], volumes: number[]): Promise<string>;
|
794
|
+
}
|
795
|
+
|
796
|
+
declare function initProvider(url: string, user?: string, password?: string): ethers.providers.JsonRpcProvider;
|
797
|
+
|
798
|
+
declare enum LogLevel {
|
799
|
+
DEBUG = 8,
|
800
|
+
LOG = 4,
|
801
|
+
WARN = 2,
|
802
|
+
ERROR = 1,
|
803
|
+
SILENT = 0
|
804
|
+
}
|
805
|
+
interface LoggerService {
|
806
|
+
level: LogLevel;
|
807
|
+
/**
|
808
|
+
* Write a 'log' level log.
|
809
|
+
*/
|
810
|
+
log(message: any, ...optionalParams: any[]): any;
|
811
|
+
/**
|
812
|
+
* Write an 'error' level log.
|
813
|
+
*/
|
814
|
+
error(message: any, ...optionalParams: any[]): any;
|
815
|
+
/**
|
816
|
+
* Write a 'warn' level log.
|
817
|
+
*/
|
818
|
+
warn(message: any, ...optionalParams: any[]): any;
|
819
|
+
/**
|
820
|
+
* Write a 'debug' level log.
|
821
|
+
*/
|
822
|
+
debug?(message: any, ...optionalParams: any[]): any;
|
823
|
+
/**
|
824
|
+
* Write a 'table' in 'debug' log level
|
825
|
+
* @param tabularData
|
826
|
+
* @param properties
|
827
|
+
*/
|
828
|
+
table(tabularData?: any, properties?: string[]): void;
|
829
|
+
/**
|
830
|
+
* Set log levels.
|
831
|
+
* @param levels log levels
|
832
|
+
*/
|
833
|
+
setLogLevels?(levels: LogLevel[]): any;
|
834
|
+
}
|
835
|
+
declare class Logger implements LoggerService {
|
836
|
+
level: LogLevel;
|
837
|
+
constructor(level: LogLevel);
|
838
|
+
static overrideLogger(logger: LoggerService): void;
|
839
|
+
log(message: any, ...optionalParams: any[]): void;
|
840
|
+
error(message: any, ...optionalParams: any[]): void;
|
841
|
+
warn(message: any, ...optionalParams: any[]): void;
|
842
|
+
debug(message: any, ...optionalParams: any[]): void;
|
843
|
+
table(tabularData?: any, properties?: string[]): void;
|
844
|
+
}
|
845
|
+
declare let log: LoggerService;
|
846
|
+
|
847
|
+
export { BESTRATE_NETWORK, GAS_TOKEN_DECIMALS, LogLevel, Logger, type LoggerService, type QuoteResult, WardenBestRate, WardenPayloadCompressor, initProvider, log, zeroGasOptions };
|