@pancakeswap/sdk 3.1.5 → 3.2.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 +14 -5
- package/dist/index.js +179 -233
- package/dist/index.mjs +78 -134
- package/package.json +13 -6
package/dist/index.d.ts
CHANGED
|
@@ -258,10 +258,6 @@ interface SwapParameters {
|
|
|
258
258
|
* Represents the Pancake Router, and has static methods for helping execute trades.
|
|
259
259
|
*/
|
|
260
260
|
declare abstract class Router {
|
|
261
|
-
/**
|
|
262
|
-
* Cannot be constructed.
|
|
263
|
-
*/
|
|
264
|
-
private constructor();
|
|
265
261
|
/**
|
|
266
262
|
* Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given trade.
|
|
267
263
|
* @param trade to produce call parameters for
|
|
@@ -270,4 +266,17 @@ declare abstract class Router {
|
|
|
270
266
|
static swapCallParameters(trade: Trade<Currency, Currency, TradeType>, options: TradeOptions | TradeOptionsDeadline): SwapParameters;
|
|
271
267
|
}
|
|
272
268
|
|
|
273
|
-
|
|
269
|
+
declare function validateAndParseAddress(address: string): string;
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Ether is the main usage of a 'native' currency, i.e. for Ethereum mainnet and all testnets
|
|
273
|
+
*/
|
|
274
|
+
declare class Ether extends NativeCurrency {
|
|
275
|
+
protected constructor(chainId: number);
|
|
276
|
+
get wrapped(): Token;
|
|
277
|
+
private static _etherCache;
|
|
278
|
+
static onChain(chainId: number): Ether;
|
|
279
|
+
equals(other: Currency): boolean;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
export { BestTradeOptions, ChainId, ERC20Token, Ether, FACTORY_ADDRESS, FACTORY_ADDRESS_MAP, INIT_CODE_HASH, INIT_CODE_HASH_MAP, NATIVE, Native, ONE_HUNDRED_PERCENT, Pair, Route, Router, SwapParameters, Trade, TradeOptions, TradeOptionsDeadline, WBNB, WETH9, WNATIVE, ZERO_PERCENT, computePairAddress, inputOutputComparator, isTradeBetter, tradeComparator, validateAndParseAddress };
|
package/dist/index.js
CHANGED
|
@@ -1,99 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
21
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
-
mod
|
|
28
|
-
));
|
|
29
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
'use strict';
|
|
30
2
|
|
|
31
|
-
|
|
32
|
-
var
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
FACTORY_ADDRESS_MAP: () => FACTORY_ADDRESS_MAP,
|
|
38
|
-
INIT_CODE_HASH: () => INIT_CODE_HASH,
|
|
39
|
-
INIT_CODE_HASH_MAP: () => INIT_CODE_HASH_MAP,
|
|
40
|
-
JSBI: () => import_jsbi2.default,
|
|
41
|
-
NATIVE: () => NATIVE,
|
|
42
|
-
Native: () => Native,
|
|
43
|
-
ONE_HUNDRED_PERCENT: () => ONE_HUNDRED_PERCENT,
|
|
44
|
-
Pair: () => Pair,
|
|
45
|
-
Route: () => Route,
|
|
46
|
-
Router: () => Router,
|
|
47
|
-
Trade: () => Trade,
|
|
48
|
-
WBNB: () => WBNB,
|
|
49
|
-
WETH9: () => WETH9,
|
|
50
|
-
WNATIVE: () => WNATIVE,
|
|
51
|
-
ZERO_PERCENT: () => ZERO_PERCENT,
|
|
52
|
-
computePairAddress: () => computePairAddress,
|
|
53
|
-
inputOutputComparator: () => inputOutputComparator,
|
|
54
|
-
isTradeBetter: () => isTradeBetter,
|
|
55
|
-
tradeComparator: () => tradeComparator
|
|
56
|
-
});
|
|
57
|
-
module.exports = __toCommonJS(src_exports);
|
|
58
|
-
var import_jsbi2 = __toESM(require("jsbi"));
|
|
3
|
+
var JSBI = require('jsbi');
|
|
4
|
+
var swapSdkCore = require('@pancakeswap/swap-sdk-core');
|
|
5
|
+
var address = require('@ethersproject/address');
|
|
6
|
+
var invariant4 = require('tiny-invariant');
|
|
7
|
+
var warning = require('tiny-warning');
|
|
8
|
+
var solidity = require('@ethersproject/solidity');
|
|
59
9
|
|
|
60
|
-
|
|
61
|
-
var import_swap_sdk_core2 = require("@pancakeswap/swap-sdk-core");
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
62
11
|
|
|
63
|
-
|
|
64
|
-
var
|
|
12
|
+
var JSBI__default = /*#__PURE__*/_interopDefault(JSBI);
|
|
13
|
+
var invariant4__default = /*#__PURE__*/_interopDefault(invariant4);
|
|
14
|
+
var warning__default = /*#__PURE__*/_interopDefault(warning);
|
|
65
15
|
|
|
66
|
-
// src/
|
|
67
|
-
|
|
68
|
-
var import_tiny_invariant = __toESM(require("tiny-invariant"));
|
|
69
|
-
var import_tiny_warning = __toESM(require("tiny-warning"));
|
|
70
|
-
function validateAndParseAddress(address) {
|
|
16
|
+
// src/index.ts
|
|
17
|
+
function validateAndParseAddress(address$1) {
|
|
71
18
|
try {
|
|
72
|
-
const checksummedAddress =
|
|
73
|
-
|
|
19
|
+
const checksummedAddress = address.getAddress(address$1);
|
|
20
|
+
warning__default.default(address$1 === checksummedAddress, `${address$1} is not checksummed.`);
|
|
74
21
|
return checksummedAddress;
|
|
75
22
|
} catch (error) {
|
|
76
|
-
|
|
23
|
+
invariant4__default.default(false, `${address$1} is not a valid address.`);
|
|
77
24
|
}
|
|
78
25
|
}
|
|
79
26
|
|
|
80
27
|
// src/entities/token.ts
|
|
81
|
-
var ERC20Token = class extends
|
|
28
|
+
var ERC20Token = class extends swapSdkCore.Token {
|
|
82
29
|
constructor(chainId, address, decimals, symbol, name, projectLink) {
|
|
83
30
|
super(chainId, validateAndParseAddress(address), decimals, symbol, name, projectLink);
|
|
84
31
|
}
|
|
85
32
|
};
|
|
86
33
|
|
|
87
34
|
// src/constants.ts
|
|
88
|
-
var ChainId = /* @__PURE__ */ ((
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return
|
|
35
|
+
var ChainId = /* @__PURE__ */ ((ChainId3) => {
|
|
36
|
+
ChainId3[ChainId3["ETHEREUM"] = 1] = "ETHEREUM";
|
|
37
|
+
ChainId3[ChainId3["GOERLI"] = 5] = "GOERLI";
|
|
38
|
+
ChainId3[ChainId3["BSC"] = 56] = "BSC";
|
|
39
|
+
ChainId3[ChainId3["BSC_TESTNET"] = 97] = "BSC_TESTNET";
|
|
40
|
+
return ChainId3;
|
|
94
41
|
})(ChainId || {});
|
|
95
|
-
var ZERO_PERCENT = new
|
|
96
|
-
var ONE_HUNDRED_PERCENT = new
|
|
42
|
+
var ZERO_PERCENT = new swapSdkCore.Percent("0");
|
|
43
|
+
var ONE_HUNDRED_PERCENT = new swapSdkCore.Percent("1");
|
|
97
44
|
var FACTORY_ADDRESS = "0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73";
|
|
98
45
|
var FACTORY_ADDRESS_ETH = "0x1097053Fd2ea711dad45caCcc45EfF7548fCB362";
|
|
99
46
|
var FACTORY_ADDRESS_MAP = {
|
|
@@ -191,13 +138,6 @@ function isTradeBetter(tradeA, tradeB, minimumDelta = ZERO_PERCENT) {
|
|
|
191
138
|
}
|
|
192
139
|
return tradeA.executionPrice.asFraction.multiply(minimumDelta.add(ONE_HUNDRED_PERCENT)).lessThan(tradeB.executionPrice);
|
|
193
140
|
}
|
|
194
|
-
|
|
195
|
-
// src/entities/pair.ts
|
|
196
|
-
var import_swap_sdk_core3 = require("@pancakeswap/swap-sdk-core");
|
|
197
|
-
var import_address2 = require("@ethersproject/address");
|
|
198
|
-
var import_solidity = require("@ethersproject/solidity");
|
|
199
|
-
var import_jsbi = __toESM(require("jsbi"));
|
|
200
|
-
var import_tiny_invariant2 = __toESM(require("tiny-invariant"));
|
|
201
141
|
var PAIR_ADDRESS_CACHE = {};
|
|
202
142
|
var composeKey = (token0, token1) => `${token0.chainId}-${token0.address}-${token1.address}`;
|
|
203
143
|
var computePairAddress = ({
|
|
@@ -210,9 +150,9 @@ var computePairAddress = ({
|
|
|
210
150
|
if ((PAIR_ADDRESS_CACHE == null ? void 0 : PAIR_ADDRESS_CACHE[key]) === void 0) {
|
|
211
151
|
PAIR_ADDRESS_CACHE = {
|
|
212
152
|
...PAIR_ADDRESS_CACHE,
|
|
213
|
-
[key]:
|
|
153
|
+
[key]: address.getCreate2Address(
|
|
214
154
|
factoryAddress,
|
|
215
|
-
|
|
155
|
+
solidity.keccak256(["bytes"], [solidity.pack(["address", "address"], [token0.address, token1.address])]),
|
|
216
156
|
INIT_CODE_HASH_MAP[token0.chainId]
|
|
217
157
|
)
|
|
218
158
|
};
|
|
@@ -246,21 +186,21 @@ var Pair = class {
|
|
|
246
186
|
*/
|
|
247
187
|
get token0Price() {
|
|
248
188
|
const result = this.tokenAmounts[1].divide(this.tokenAmounts[0]);
|
|
249
|
-
return new
|
|
189
|
+
return new swapSdkCore.Price(this.token0, this.token1, result.denominator, result.numerator);
|
|
250
190
|
}
|
|
251
191
|
/**
|
|
252
192
|
* Returns the current mid price of the pair in terms of token1, i.e. the ratio of reserve0 to reserve1
|
|
253
193
|
*/
|
|
254
194
|
get token1Price() {
|
|
255
195
|
const result = this.tokenAmounts[0].divide(this.tokenAmounts[1]);
|
|
256
|
-
return new
|
|
196
|
+
return new swapSdkCore.Price(this.token1, this.token0, result.denominator, result.numerator);
|
|
257
197
|
}
|
|
258
198
|
/**
|
|
259
199
|
* Return the price of the given token in terms of the other token in the pair.
|
|
260
200
|
* @param token token to return price of
|
|
261
201
|
*/
|
|
262
202
|
priceOf(token) {
|
|
263
|
-
|
|
203
|
+
invariant4__default.default(this.involvesToken(token), "TOKEN");
|
|
264
204
|
return token.equals(this.token0) ? this.token0Price : this.token1Price;
|
|
265
205
|
}
|
|
266
206
|
/**
|
|
@@ -282,82 +222,82 @@ var Pair = class {
|
|
|
282
222
|
return this.tokenAmounts[1];
|
|
283
223
|
}
|
|
284
224
|
reserveOf(token) {
|
|
285
|
-
|
|
225
|
+
invariant4__default.default(this.involvesToken(token), "TOKEN");
|
|
286
226
|
return token.equals(this.token0) ? this.reserve0 : this.reserve1;
|
|
287
227
|
}
|
|
288
228
|
getOutputAmount(inputAmount) {
|
|
289
|
-
|
|
290
|
-
if (
|
|
291
|
-
throw new
|
|
229
|
+
invariant4__default.default(this.involvesToken(inputAmount.currency), "TOKEN");
|
|
230
|
+
if (JSBI__default.default.equal(this.reserve0.quotient, swapSdkCore.ZERO) || JSBI__default.default.equal(this.reserve1.quotient, swapSdkCore.ZERO)) {
|
|
231
|
+
throw new swapSdkCore.InsufficientReservesError();
|
|
292
232
|
}
|
|
293
233
|
const inputReserve = this.reserveOf(inputAmount.currency);
|
|
294
234
|
const outputReserve = this.reserveOf(inputAmount.currency.equals(this.token0) ? this.token1 : this.token0);
|
|
295
|
-
const inputAmountWithFee =
|
|
296
|
-
const numerator =
|
|
297
|
-
const denominator =
|
|
298
|
-
const outputAmount =
|
|
235
|
+
const inputAmountWithFee = JSBI__default.default.multiply(inputAmount.quotient, swapSdkCore._9975);
|
|
236
|
+
const numerator = JSBI__default.default.multiply(inputAmountWithFee, outputReserve.quotient);
|
|
237
|
+
const denominator = JSBI__default.default.add(JSBI__default.default.multiply(inputReserve.quotient, swapSdkCore._10000), inputAmountWithFee);
|
|
238
|
+
const outputAmount = swapSdkCore.CurrencyAmount.fromRawAmount(
|
|
299
239
|
inputAmount.currency.equals(this.token0) ? this.token1 : this.token0,
|
|
300
|
-
|
|
240
|
+
JSBI__default.default.divide(numerator, denominator)
|
|
301
241
|
);
|
|
302
|
-
if (
|
|
303
|
-
throw new
|
|
242
|
+
if (JSBI__default.default.equal(outputAmount.quotient, swapSdkCore.ZERO)) {
|
|
243
|
+
throw new swapSdkCore.InsufficientInputAmountError();
|
|
304
244
|
}
|
|
305
245
|
return [outputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
|
|
306
246
|
}
|
|
307
247
|
getInputAmount(outputAmount) {
|
|
308
|
-
|
|
309
|
-
if (
|
|
310
|
-
throw new
|
|
248
|
+
invariant4__default.default(this.involvesToken(outputAmount.currency), "TOKEN");
|
|
249
|
+
if (JSBI__default.default.equal(this.reserve0.quotient, swapSdkCore.ZERO) || JSBI__default.default.equal(this.reserve1.quotient, swapSdkCore.ZERO) || JSBI__default.default.greaterThanOrEqual(outputAmount.quotient, this.reserveOf(outputAmount.currency).quotient)) {
|
|
250
|
+
throw new swapSdkCore.InsufficientReservesError();
|
|
311
251
|
}
|
|
312
252
|
const outputReserve = this.reserveOf(outputAmount.currency);
|
|
313
253
|
const inputReserve = this.reserveOf(outputAmount.currency.equals(this.token0) ? this.token1 : this.token0);
|
|
314
|
-
const numerator =
|
|
315
|
-
const denominator =
|
|
316
|
-
const inputAmount =
|
|
254
|
+
const numerator = JSBI__default.default.multiply(JSBI__default.default.multiply(inputReserve.quotient, outputAmount.quotient), swapSdkCore._10000);
|
|
255
|
+
const denominator = JSBI__default.default.multiply(JSBI__default.default.subtract(outputReserve.quotient, outputAmount.quotient), swapSdkCore._9975);
|
|
256
|
+
const inputAmount = swapSdkCore.CurrencyAmount.fromRawAmount(
|
|
317
257
|
outputAmount.currency.equals(this.token0) ? this.token1 : this.token0,
|
|
318
|
-
|
|
258
|
+
JSBI__default.default.add(JSBI__default.default.divide(numerator, denominator), swapSdkCore.ONE)
|
|
319
259
|
);
|
|
320
260
|
return [inputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
|
|
321
261
|
}
|
|
322
262
|
getLiquidityMinted(totalSupply, tokenAmountA, tokenAmountB) {
|
|
323
|
-
|
|
263
|
+
invariant4__default.default(totalSupply.currency.equals(this.liquidityToken), "LIQUIDITY");
|
|
324
264
|
const tokenAmounts = tokenAmountA.currency.sortsBefore(tokenAmountB.currency) ? [tokenAmountA, tokenAmountB] : [tokenAmountB, tokenAmountA];
|
|
325
|
-
|
|
265
|
+
invariant4__default.default(tokenAmounts[0].currency.equals(this.token0) && tokenAmounts[1].currency.equals(this.token1), "TOKEN");
|
|
326
266
|
let liquidity;
|
|
327
|
-
if (
|
|
328
|
-
liquidity =
|
|
329
|
-
|
|
330
|
-
|
|
267
|
+
if (JSBI__default.default.equal(totalSupply.quotient, swapSdkCore.ZERO)) {
|
|
268
|
+
liquidity = JSBI__default.default.subtract(
|
|
269
|
+
swapSdkCore.sqrt(JSBI__default.default.multiply(tokenAmounts[0].quotient, tokenAmounts[1].quotient)),
|
|
270
|
+
swapSdkCore.MINIMUM_LIQUIDITY
|
|
331
271
|
);
|
|
332
272
|
} else {
|
|
333
|
-
const amount0 =
|
|
334
|
-
const amount1 =
|
|
335
|
-
liquidity =
|
|
273
|
+
const amount0 = JSBI__default.default.divide(JSBI__default.default.multiply(tokenAmounts[0].quotient, totalSupply.quotient), this.reserve0.quotient);
|
|
274
|
+
const amount1 = JSBI__default.default.divide(JSBI__default.default.multiply(tokenAmounts[1].quotient, totalSupply.quotient), this.reserve1.quotient);
|
|
275
|
+
liquidity = JSBI__default.default.lessThanOrEqual(amount0, amount1) ? amount0 : amount1;
|
|
336
276
|
}
|
|
337
|
-
if (!
|
|
338
|
-
throw new
|
|
277
|
+
if (!JSBI__default.default.greaterThan(liquidity, swapSdkCore.ZERO)) {
|
|
278
|
+
throw new swapSdkCore.InsufficientInputAmountError();
|
|
339
279
|
}
|
|
340
|
-
return
|
|
280
|
+
return swapSdkCore.CurrencyAmount.fromRawAmount(this.liquidityToken, liquidity);
|
|
341
281
|
}
|
|
342
282
|
getLiquidityValue(token, totalSupply, liquidity, feeOn = false, kLast) {
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
283
|
+
invariant4__default.default(this.involvesToken(token), "TOKEN");
|
|
284
|
+
invariant4__default.default(totalSupply.currency.equals(this.liquidityToken), "TOTAL_SUPPLY");
|
|
285
|
+
invariant4__default.default(liquidity.currency.equals(this.liquidityToken), "LIQUIDITY");
|
|
286
|
+
invariant4__default.default(JSBI__default.default.lessThanOrEqual(liquidity.quotient, totalSupply.quotient), "LIQUIDITY");
|
|
347
287
|
let totalSupplyAdjusted;
|
|
348
288
|
if (!feeOn) {
|
|
349
289
|
totalSupplyAdjusted = totalSupply;
|
|
350
290
|
} else {
|
|
351
|
-
|
|
352
|
-
const kLastParsed =
|
|
353
|
-
if (!
|
|
354
|
-
const rootK =
|
|
355
|
-
const rootKLast =
|
|
356
|
-
if (
|
|
357
|
-
const numerator =
|
|
358
|
-
const denominator =
|
|
359
|
-
const feeLiquidity =
|
|
360
|
-
totalSupplyAdjusted = totalSupply.add(
|
|
291
|
+
invariant4__default.default(!!kLast, "K_LAST");
|
|
292
|
+
const kLastParsed = JSBI__default.default.BigInt(kLast);
|
|
293
|
+
if (!JSBI__default.default.equal(kLastParsed, swapSdkCore.ZERO)) {
|
|
294
|
+
const rootK = swapSdkCore.sqrt(JSBI__default.default.multiply(this.reserve0.quotient, this.reserve1.quotient));
|
|
295
|
+
const rootKLast = swapSdkCore.sqrt(kLastParsed);
|
|
296
|
+
if (JSBI__default.default.greaterThan(rootK, rootKLast)) {
|
|
297
|
+
const numerator = JSBI__default.default.multiply(totalSupply.quotient, JSBI__default.default.subtract(rootK, rootKLast));
|
|
298
|
+
const denominator = JSBI__default.default.add(JSBI__default.default.multiply(rootK, swapSdkCore.FIVE), rootKLast);
|
|
299
|
+
const feeLiquidity = JSBI__default.default.divide(numerator, denominator);
|
|
300
|
+
totalSupplyAdjusted = totalSupply.add(swapSdkCore.CurrencyAmount.fromRawAmount(this.liquidityToken, feeLiquidity));
|
|
361
301
|
} else {
|
|
362
302
|
totalSupplyAdjusted = totalSupply;
|
|
363
303
|
}
|
|
@@ -365,32 +305,28 @@ var Pair = class {
|
|
|
365
305
|
totalSupplyAdjusted = totalSupply;
|
|
366
306
|
}
|
|
367
307
|
}
|
|
368
|
-
return
|
|
308
|
+
return swapSdkCore.CurrencyAmount.fromRawAmount(
|
|
369
309
|
token,
|
|
370
|
-
|
|
310
|
+
JSBI__default.default.divide(JSBI__default.default.multiply(liquidity.quotient, this.reserveOf(token).quotient), totalSupplyAdjusted.quotient)
|
|
371
311
|
);
|
|
372
312
|
}
|
|
373
313
|
};
|
|
374
|
-
|
|
375
|
-
// src/entities/route.ts
|
|
376
|
-
var import_tiny_invariant3 = __toESM(require("tiny-invariant"));
|
|
377
|
-
var import_swap_sdk_core4 = require("@pancakeswap/swap-sdk-core");
|
|
378
314
|
var Route = class {
|
|
379
315
|
constructor(pairs, input, output) {
|
|
380
316
|
this._midPrice = null;
|
|
381
|
-
|
|
317
|
+
invariant4__default.default(pairs.length > 0, "PAIRS");
|
|
382
318
|
const chainId = pairs[0].chainId;
|
|
383
|
-
|
|
319
|
+
invariant4__default.default(
|
|
384
320
|
pairs.every((pair) => pair.chainId === chainId),
|
|
385
321
|
"CHAIN_IDS"
|
|
386
322
|
);
|
|
387
323
|
const wrappedInput = input.wrapped;
|
|
388
|
-
|
|
389
|
-
|
|
324
|
+
invariant4__default.default(pairs[0].involvesToken(wrappedInput), "INPUT");
|
|
325
|
+
invariant4__default.default(typeof output === "undefined" || pairs[pairs.length - 1].involvesToken(output.wrapped), "OUTPUT");
|
|
390
326
|
const path = [wrappedInput];
|
|
391
327
|
for (const [i, pair] of pairs.entries()) {
|
|
392
328
|
const currentInput = path[i];
|
|
393
|
-
|
|
329
|
+
invariant4__default.default(currentInput.equals(pair.token0) || currentInput.equals(pair.token1), "PATH");
|
|
394
330
|
const output2 = currentInput.equals(pair.token0) ? pair.token1 : pair.token0;
|
|
395
331
|
path.push(output2);
|
|
396
332
|
}
|
|
@@ -405,23 +341,19 @@ var Route = class {
|
|
|
405
341
|
const prices = [];
|
|
406
342
|
for (const [i, pair] of this.pairs.entries()) {
|
|
407
343
|
prices.push(
|
|
408
|
-
this.path[i].equals(pair.token0) ? new
|
|
344
|
+
this.path[i].equals(pair.token0) ? new swapSdkCore.Price(pair.reserve0.currency, pair.reserve1.currency, pair.reserve0.quotient, pair.reserve1.quotient) : new swapSdkCore.Price(pair.reserve1.currency, pair.reserve0.currency, pair.reserve1.quotient, pair.reserve0.quotient)
|
|
409
345
|
);
|
|
410
346
|
}
|
|
411
347
|
const reduced = prices.slice(1).reduce((accumulator, currentValue) => accumulator.multiply(currentValue), prices[0]);
|
|
412
|
-
return this._midPrice = new
|
|
348
|
+
return this._midPrice = new swapSdkCore.Price(this.input, this.output, reduced.denominator, reduced.numerator);
|
|
413
349
|
}
|
|
414
350
|
get chainId() {
|
|
415
351
|
return this.pairs[0].chainId;
|
|
416
352
|
}
|
|
417
353
|
};
|
|
418
|
-
|
|
419
|
-
// src/entities/trade.ts
|
|
420
|
-
var import_tiny_invariant4 = __toESM(require("tiny-invariant"));
|
|
421
|
-
var import_swap_sdk_core5 = require("@pancakeswap/swap-sdk-core");
|
|
422
354
|
function inputOutputComparator(a, b) {
|
|
423
|
-
|
|
424
|
-
|
|
355
|
+
invariant4__default.default(a.inputAmount.currency.equals(b.inputAmount.currency), "INPUT_CURRENCY");
|
|
356
|
+
invariant4__default.default(a.outputAmount.currency.equals(b.outputAmount.currency), "OUTPUT_CURRENCY");
|
|
425
357
|
if (a.outputAmount.equalTo(b.outputAmount)) {
|
|
426
358
|
if (a.inputAmount.equalTo(b.inputAmount)) {
|
|
427
359
|
return 0;
|
|
@@ -456,7 +388,7 @@ var Trade = class {
|
|
|
456
388
|
* @param amountIn the amount being passed in
|
|
457
389
|
*/
|
|
458
390
|
static exactIn(route, amountIn) {
|
|
459
|
-
return new Trade(route, amountIn,
|
|
391
|
+
return new Trade(route, amountIn, swapSdkCore.TradeType.EXACT_INPUT);
|
|
460
392
|
}
|
|
461
393
|
/**
|
|
462
394
|
* Constructs an exact out trade with the given amount out and route
|
|
@@ -464,72 +396,72 @@ var Trade = class {
|
|
|
464
396
|
* @param amountOut the amount returned by the trade
|
|
465
397
|
*/
|
|
466
398
|
static exactOut(route, amountOut) {
|
|
467
|
-
return new Trade(route, amountOut,
|
|
399
|
+
return new Trade(route, amountOut, swapSdkCore.TradeType.EXACT_OUTPUT);
|
|
468
400
|
}
|
|
469
401
|
constructor(route, amount, tradeType) {
|
|
470
402
|
this.route = route;
|
|
471
403
|
this.tradeType = tradeType;
|
|
472
404
|
const tokenAmounts = new Array(route.path.length);
|
|
473
|
-
if (tradeType ===
|
|
474
|
-
|
|
405
|
+
if (tradeType === swapSdkCore.TradeType.EXACT_INPUT) {
|
|
406
|
+
invariant4__default.default(amount.currency.equals(route.input), "INPUT");
|
|
475
407
|
tokenAmounts[0] = amount.wrapped;
|
|
476
408
|
for (let i = 0; i < route.path.length - 1; i++) {
|
|
477
409
|
const pair = route.pairs[i];
|
|
478
410
|
const [outputAmount] = pair.getOutputAmount(tokenAmounts[i]);
|
|
479
411
|
tokenAmounts[i + 1] = outputAmount;
|
|
480
412
|
}
|
|
481
|
-
this.inputAmount =
|
|
482
|
-
this.outputAmount =
|
|
413
|
+
this.inputAmount = swapSdkCore.CurrencyAmount.fromFractionalAmount(route.input, amount.numerator, amount.denominator);
|
|
414
|
+
this.outputAmount = swapSdkCore.CurrencyAmount.fromFractionalAmount(
|
|
483
415
|
route.output,
|
|
484
416
|
tokenAmounts[tokenAmounts.length - 1].numerator,
|
|
485
417
|
tokenAmounts[tokenAmounts.length - 1].denominator
|
|
486
418
|
);
|
|
487
419
|
} else {
|
|
488
|
-
|
|
420
|
+
invariant4__default.default(amount.currency.equals(route.output), "OUTPUT");
|
|
489
421
|
tokenAmounts[tokenAmounts.length - 1] = amount.wrapped;
|
|
490
422
|
for (let i = route.path.length - 1; i > 0; i--) {
|
|
491
423
|
const pair = route.pairs[i - 1];
|
|
492
424
|
const [inputAmount] = pair.getInputAmount(tokenAmounts[i]);
|
|
493
425
|
tokenAmounts[i - 1] = inputAmount;
|
|
494
426
|
}
|
|
495
|
-
this.inputAmount =
|
|
427
|
+
this.inputAmount = swapSdkCore.CurrencyAmount.fromFractionalAmount(
|
|
496
428
|
route.input,
|
|
497
429
|
tokenAmounts[0].numerator,
|
|
498
430
|
tokenAmounts[0].denominator
|
|
499
431
|
);
|
|
500
|
-
this.outputAmount =
|
|
432
|
+
this.outputAmount = swapSdkCore.CurrencyAmount.fromFractionalAmount(route.output, amount.numerator, amount.denominator);
|
|
501
433
|
}
|
|
502
|
-
this.executionPrice = new
|
|
434
|
+
this.executionPrice = new swapSdkCore.Price(
|
|
503
435
|
this.inputAmount.currency,
|
|
504
436
|
this.outputAmount.currency,
|
|
505
437
|
this.inputAmount.quotient,
|
|
506
438
|
this.outputAmount.quotient
|
|
507
439
|
);
|
|
508
|
-
this.priceImpact =
|
|
440
|
+
this.priceImpact = swapSdkCore.computePriceImpact(route.midPrice, this.inputAmount, this.outputAmount);
|
|
509
441
|
}
|
|
510
442
|
/**
|
|
511
443
|
* Get the minimum amount that must be received from this trade for the given slippage tolerance
|
|
512
444
|
* @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
|
|
513
445
|
*/
|
|
514
446
|
minimumAmountOut(slippageTolerance) {
|
|
515
|
-
|
|
516
|
-
if (this.tradeType ===
|
|
447
|
+
invariant4__default.default(!slippageTolerance.lessThan(swapSdkCore.ZERO), "SLIPPAGE_TOLERANCE");
|
|
448
|
+
if (this.tradeType === swapSdkCore.TradeType.EXACT_OUTPUT) {
|
|
517
449
|
return this.outputAmount;
|
|
518
450
|
}
|
|
519
|
-
const slippageAdjustedAmountOut = new
|
|
520
|
-
return
|
|
451
|
+
const slippageAdjustedAmountOut = new swapSdkCore.Fraction(swapSdkCore.ONE).add(slippageTolerance).invert().multiply(this.outputAmount.quotient).quotient;
|
|
452
|
+
return swapSdkCore.CurrencyAmount.fromRawAmount(this.outputAmount.currency, slippageAdjustedAmountOut);
|
|
521
453
|
}
|
|
522
454
|
/**
|
|
523
455
|
* Get the maximum amount in that can be spent via this trade for the given slippage tolerance
|
|
524
456
|
* @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
|
|
525
457
|
*/
|
|
526
458
|
maximumAmountIn(slippageTolerance) {
|
|
527
|
-
|
|
528
|
-
if (this.tradeType ===
|
|
459
|
+
invariant4__default.default(!slippageTolerance.lessThan(swapSdkCore.ZERO), "SLIPPAGE_TOLERANCE");
|
|
460
|
+
if (this.tradeType === swapSdkCore.TradeType.EXACT_INPUT) {
|
|
529
461
|
return this.inputAmount;
|
|
530
462
|
}
|
|
531
|
-
const slippageAdjustedAmountIn = new
|
|
532
|
-
return
|
|
463
|
+
const slippageAdjustedAmountIn = new swapSdkCore.Fraction(swapSdkCore.ONE).add(slippageTolerance).multiply(this.inputAmount.quotient).quotient;
|
|
464
|
+
return swapSdkCore.CurrencyAmount.fromRawAmount(this.inputAmount.currency, slippageAdjustedAmountIn);
|
|
533
465
|
}
|
|
534
466
|
/**
|
|
535
467
|
* Given a list of pairs, and a fixed amount in, returns the top `maxNumResults` trades that go from an input token
|
|
@@ -546,16 +478,16 @@ var Trade = class {
|
|
|
546
478
|
* @param bestTrades used in recursion; the current list of best trades
|
|
547
479
|
*/
|
|
548
480
|
static bestTradeExactIn(pairs, currencyAmountIn, currencyOut, { maxNumResults = 3, maxHops = 3 } = {}, currentPairs = [], nextAmountIn = currencyAmountIn, bestTrades = []) {
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
481
|
+
invariant4__default.default(pairs.length > 0, "PAIRS");
|
|
482
|
+
invariant4__default.default(maxHops > 0, "MAX_HOPS");
|
|
483
|
+
invariant4__default.default(currencyAmountIn === nextAmountIn || currentPairs.length > 0, "INVALID_RECURSION");
|
|
552
484
|
const amountIn = nextAmountIn.wrapped;
|
|
553
485
|
const tokenOut = currencyOut.wrapped;
|
|
554
486
|
for (let i = 0; i < pairs.length; i++) {
|
|
555
487
|
const pair = pairs[i];
|
|
556
488
|
if (!pair.token0.equals(amountIn.currency) && !pair.token1.equals(amountIn.currency))
|
|
557
489
|
continue;
|
|
558
|
-
if (pair.reserve0.equalTo(
|
|
490
|
+
if (pair.reserve0.equalTo(swapSdkCore.ZERO) || pair.reserve1.equalTo(swapSdkCore.ZERO))
|
|
559
491
|
continue;
|
|
560
492
|
let amountOut;
|
|
561
493
|
try {
|
|
@@ -568,12 +500,12 @@ var Trade = class {
|
|
|
568
500
|
throw error;
|
|
569
501
|
}
|
|
570
502
|
if (amountOut.currency.equals(tokenOut)) {
|
|
571
|
-
|
|
503
|
+
swapSdkCore.sortedInsert(
|
|
572
504
|
bestTrades,
|
|
573
505
|
new Trade(
|
|
574
506
|
new Route([...currentPairs, pair], currencyAmountIn.currency, currencyOut),
|
|
575
507
|
currencyAmountIn,
|
|
576
|
-
|
|
508
|
+
swapSdkCore.TradeType.EXACT_INPUT
|
|
577
509
|
),
|
|
578
510
|
maxNumResults,
|
|
579
511
|
tradeComparator
|
|
@@ -601,7 +533,7 @@ var Trade = class {
|
|
|
601
533
|
* @param slippageTolerance the allowed tolerated slippage
|
|
602
534
|
*/
|
|
603
535
|
worstExecutionPrice(slippageTolerance) {
|
|
604
|
-
return new
|
|
536
|
+
return new swapSdkCore.Price(
|
|
605
537
|
this.inputAmount.currency,
|
|
606
538
|
this.outputAmount.currency,
|
|
607
539
|
this.maximumAmountIn(slippageTolerance).quotient,
|
|
@@ -624,16 +556,16 @@ var Trade = class {
|
|
|
624
556
|
* @param bestTrades used in recursion; the current list of best trades
|
|
625
557
|
*/
|
|
626
558
|
static bestTradeExactOut(pairs, currencyIn, currencyAmountOut, { maxNumResults = 3, maxHops = 3 } = {}, currentPairs = [], nextAmountOut = currencyAmountOut, bestTrades = []) {
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
559
|
+
invariant4__default.default(pairs.length > 0, "PAIRS");
|
|
560
|
+
invariant4__default.default(maxHops > 0, "MAX_HOPS");
|
|
561
|
+
invariant4__default.default(currencyAmountOut === nextAmountOut || currentPairs.length > 0, "INVALID_RECURSION");
|
|
630
562
|
const amountOut = nextAmountOut.wrapped;
|
|
631
563
|
const tokenIn = currencyIn.wrapped;
|
|
632
564
|
for (let i = 0; i < pairs.length; i++) {
|
|
633
565
|
const pair = pairs[i];
|
|
634
566
|
if (!pair.token0.equals(amountOut.currency) && !pair.token1.equals(amountOut.currency))
|
|
635
567
|
continue;
|
|
636
|
-
if (pair.reserve0.equalTo(
|
|
568
|
+
if (pair.reserve0.equalTo(swapSdkCore.ZERO) || pair.reserve1.equalTo(swapSdkCore.ZERO))
|
|
637
569
|
continue;
|
|
638
570
|
let amountIn;
|
|
639
571
|
try {
|
|
@@ -646,12 +578,12 @@ var Trade = class {
|
|
|
646
578
|
throw error;
|
|
647
579
|
}
|
|
648
580
|
if (amountIn.currency.equals(tokenIn)) {
|
|
649
|
-
|
|
581
|
+
swapSdkCore.sortedInsert(
|
|
650
582
|
bestTrades,
|
|
651
583
|
new Trade(
|
|
652
584
|
new Route([pair, ...currentPairs], currencyIn, currencyAmountOut.currency),
|
|
653
585
|
currencyAmountOut,
|
|
654
|
-
|
|
586
|
+
swapSdkCore.TradeType.EXACT_OUTPUT
|
|
655
587
|
),
|
|
656
588
|
maxNumResults,
|
|
657
589
|
tradeComparator
|
|
@@ -675,11 +607,7 @@ var Trade = class {
|
|
|
675
607
|
return bestTrades;
|
|
676
608
|
}
|
|
677
609
|
};
|
|
678
|
-
|
|
679
|
-
// src/entities/native.ts
|
|
680
|
-
var import_tiny_invariant5 = __toESM(require("tiny-invariant"));
|
|
681
|
-
var import_swap_sdk_core6 = require("@pancakeswap/swap-sdk-core");
|
|
682
|
-
var _Native = class extends import_swap_sdk_core6.NativeCurrency {
|
|
610
|
+
var _Native = class extends swapSdkCore.NativeCurrency {
|
|
683
611
|
constructor({
|
|
684
612
|
chainId,
|
|
685
613
|
decimals,
|
|
@@ -690,14 +618,14 @@ var _Native = class extends import_swap_sdk_core6.NativeCurrency {
|
|
|
690
618
|
}
|
|
691
619
|
get wrapped() {
|
|
692
620
|
const wnative = WNATIVE[this.chainId];
|
|
693
|
-
|
|
621
|
+
invariant4__default.default(!!wnative, "WRAPPED");
|
|
694
622
|
return wnative;
|
|
695
623
|
}
|
|
696
624
|
static onChain(chainId) {
|
|
697
625
|
if (chainId in this.cache) {
|
|
698
626
|
return this.cache[chainId];
|
|
699
627
|
}
|
|
700
|
-
|
|
628
|
+
invariant4__default.default(!!NATIVE[chainId], "NATIVE_CURRENCY");
|
|
701
629
|
const { decimals, name, symbol } = NATIVE[chainId];
|
|
702
630
|
return this.cache[chainId] = new _Native({ chainId, decimals, symbol, name });
|
|
703
631
|
}
|
|
@@ -707,20 +635,11 @@ var _Native = class extends import_swap_sdk_core6.NativeCurrency {
|
|
|
707
635
|
};
|
|
708
636
|
var Native = _Native;
|
|
709
637
|
Native.cache = {};
|
|
710
|
-
|
|
711
|
-
// src/router.ts
|
|
712
|
-
var import_swap_sdk_core7 = require("@pancakeswap/swap-sdk-core");
|
|
713
|
-
var import_tiny_invariant6 = __toESM(require("tiny-invariant"));
|
|
714
638
|
function toHex(currencyAmount) {
|
|
715
639
|
return `0x${currencyAmount.quotient.toString(16)}`;
|
|
716
640
|
}
|
|
717
641
|
var ZERO_HEX = "0x0";
|
|
718
642
|
var Router = class {
|
|
719
|
-
/**
|
|
720
|
-
* Cannot be constructed.
|
|
721
|
-
*/
|
|
722
|
-
constructor() {
|
|
723
|
-
}
|
|
724
643
|
/**
|
|
725
644
|
* Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given trade.
|
|
726
645
|
* @param trade to produce call parameters for
|
|
@@ -729,19 +648,19 @@ var Router = class {
|
|
|
729
648
|
static swapCallParameters(trade, options) {
|
|
730
649
|
const etherIn = trade.inputAmount.currency.isNative;
|
|
731
650
|
const etherOut = trade.outputAmount.currency.isNative;
|
|
732
|
-
|
|
733
|
-
|
|
651
|
+
invariant4__default.default(!(etherIn && etherOut), "ETHER_IN_OUT");
|
|
652
|
+
invariant4__default.default(!("ttl" in options) || options.ttl > 0, "TTL");
|
|
734
653
|
const to = validateAndParseAddress(options.recipient);
|
|
735
654
|
const amountIn = toHex(trade.maximumAmountIn(options.allowedSlippage));
|
|
736
655
|
const amountOut = toHex(trade.minimumAmountOut(options.allowedSlippage));
|
|
737
656
|
const path = trade.route.path.map((token) => token.address);
|
|
738
|
-
const deadline = "ttl" in options ? `0x${(Math.floor((
|
|
657
|
+
const deadline = "ttl" in options ? `0x${(Math.floor(( new Date()).getTime() / 1e3) + options.ttl).toString(16)}` : `0x${options.deadline.toString(16)}`;
|
|
739
658
|
const useFeeOnTransfer = Boolean(options.feeOnTransfer);
|
|
740
659
|
let methodName;
|
|
741
660
|
let args;
|
|
742
661
|
let value;
|
|
743
662
|
switch (trade.tradeType) {
|
|
744
|
-
case
|
|
663
|
+
case swapSdkCore.TradeType.EXACT_INPUT:
|
|
745
664
|
if (etherIn) {
|
|
746
665
|
methodName = useFeeOnTransfer ? "swapExactETHForTokensSupportingFeeOnTransferTokens" : "swapExactETHForTokens";
|
|
747
666
|
args = [amountOut, path, to, deadline];
|
|
@@ -756,8 +675,8 @@ var Router = class {
|
|
|
756
675
|
value = ZERO_HEX;
|
|
757
676
|
}
|
|
758
677
|
break;
|
|
759
|
-
case
|
|
760
|
-
|
|
678
|
+
case swapSdkCore.TradeType.EXACT_OUTPUT:
|
|
679
|
+
invariant4__default.default(!useFeeOnTransfer, "EXACT_OUT_FOT");
|
|
761
680
|
if (etherIn) {
|
|
762
681
|
methodName = "swapETHForExactTokens";
|
|
763
682
|
args = [amountOut, path, to, deadline];
|
|
@@ -780,31 +699,58 @@ var Router = class {
|
|
|
780
699
|
};
|
|
781
700
|
}
|
|
782
701
|
};
|
|
702
|
+
var _Ether = class extends swapSdkCore.NativeCurrency {
|
|
703
|
+
constructor(chainId) {
|
|
704
|
+
super(chainId, 18, "ETH", "Ether");
|
|
705
|
+
}
|
|
706
|
+
get wrapped() {
|
|
707
|
+
const weth9 = WETH9[this.chainId];
|
|
708
|
+
invariant4__default.default(!!weth9, "WRAPPED");
|
|
709
|
+
return weth9;
|
|
710
|
+
}
|
|
711
|
+
static onChain(chainId) {
|
|
712
|
+
if (!this._etherCache[chainId]) {
|
|
713
|
+
this._etherCache[chainId] = new _Ether(chainId);
|
|
714
|
+
}
|
|
715
|
+
return this._etherCache[chainId];
|
|
716
|
+
}
|
|
717
|
+
equals(other) {
|
|
718
|
+
return other.isNative && other.chainId === this.chainId;
|
|
719
|
+
}
|
|
720
|
+
};
|
|
721
|
+
var Ether = _Ether;
|
|
722
|
+
Ether._etherCache = {};
|
|
783
723
|
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
724
|
+
Object.defineProperty(exports, 'JSBI', {
|
|
725
|
+
enumerable: true,
|
|
726
|
+
get: function () { return JSBI__default.default; }
|
|
727
|
+
});
|
|
728
|
+
exports.ChainId = ChainId;
|
|
729
|
+
exports.ERC20Token = ERC20Token;
|
|
730
|
+
exports.Ether = Ether;
|
|
731
|
+
exports.FACTORY_ADDRESS = FACTORY_ADDRESS;
|
|
732
|
+
exports.FACTORY_ADDRESS_MAP = FACTORY_ADDRESS_MAP;
|
|
733
|
+
exports.INIT_CODE_HASH = INIT_CODE_HASH;
|
|
734
|
+
exports.INIT_CODE_HASH_MAP = INIT_CODE_HASH_MAP;
|
|
735
|
+
exports.NATIVE = NATIVE;
|
|
736
|
+
exports.Native = Native;
|
|
737
|
+
exports.ONE_HUNDRED_PERCENT = ONE_HUNDRED_PERCENT;
|
|
738
|
+
exports.Pair = Pair;
|
|
739
|
+
exports.Route = Route;
|
|
740
|
+
exports.Router = Router;
|
|
741
|
+
exports.Trade = Trade;
|
|
742
|
+
exports.WBNB = WBNB;
|
|
743
|
+
exports.WETH9 = WETH9;
|
|
744
|
+
exports.WNATIVE = WNATIVE;
|
|
745
|
+
exports.ZERO_PERCENT = ZERO_PERCENT;
|
|
746
|
+
exports.computePairAddress = computePairAddress;
|
|
747
|
+
exports.inputOutputComparator = inputOutputComparator;
|
|
748
|
+
exports.isTradeBetter = isTradeBetter;
|
|
749
|
+
exports.tradeComparator = tradeComparator;
|
|
750
|
+
exports.validateAndParseAddress = validateAndParseAddress;
|
|
751
|
+
Object.keys(swapSdkCore).forEach(function (k) {
|
|
752
|
+
if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
|
|
753
|
+
enumerable: true,
|
|
754
|
+
get: function () { return swapSdkCore[k]; }
|
|
755
|
+
});
|
|
810
756
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
1
|
+
import JSBI from 'jsbi';
|
|
2
|
+
export { default as JSBI } from 'jsbi';
|
|
3
|
+
import { Percent, Token, Price, ZERO, InsufficientReservesError, _9975, _10000, CurrencyAmount, InsufficientInputAmountError, ONE, sqrt, MINIMUM_LIQUIDITY, FIVE, TradeType, computePriceImpact, Fraction, sortedInsert, NativeCurrency } from '@pancakeswap/swap-sdk-core';
|
|
4
|
+
export * from '@pancakeswap/swap-sdk-core';
|
|
5
|
+
import { getAddress, getCreate2Address } from '@ethersproject/address';
|
|
6
|
+
import invariant4 from 'tiny-invariant';
|
|
7
|
+
import warning from 'tiny-warning';
|
|
8
|
+
import { keccak256, pack } from '@ethersproject/solidity';
|
|
6
9
|
|
|
7
|
-
// src/
|
|
8
|
-
import { Token } from "@pancakeswap/swap-sdk-core";
|
|
9
|
-
|
|
10
|
-
// src/utils.ts
|
|
11
|
-
import { getAddress } from "@ethersproject/address";
|
|
12
|
-
import invariant from "tiny-invariant";
|
|
13
|
-
import warning from "tiny-warning";
|
|
10
|
+
// src/index.ts
|
|
14
11
|
function validateAndParseAddress(address) {
|
|
15
12
|
try {
|
|
16
13
|
const checksummedAddress = getAddress(address);
|
|
17
14
|
warning(address === checksummedAddress, `${address} is not checksummed.`);
|
|
18
15
|
return checksummedAddress;
|
|
19
16
|
} catch (error) {
|
|
20
|
-
|
|
17
|
+
invariant4(false, `${address} is not a valid address.`);
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
20
|
|
|
@@ -29,12 +26,12 @@ var ERC20Token = class extends Token {
|
|
|
29
26
|
};
|
|
30
27
|
|
|
31
28
|
// src/constants.ts
|
|
32
|
-
var ChainId = /* @__PURE__ */ ((
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return
|
|
29
|
+
var ChainId = /* @__PURE__ */ ((ChainId3) => {
|
|
30
|
+
ChainId3[ChainId3["ETHEREUM"] = 1] = "ETHEREUM";
|
|
31
|
+
ChainId3[ChainId3["GOERLI"] = 5] = "GOERLI";
|
|
32
|
+
ChainId3[ChainId3["BSC"] = 56] = "BSC";
|
|
33
|
+
ChainId3[ChainId3["BSC_TESTNET"] = 97] = "BSC_TESTNET";
|
|
34
|
+
return ChainId3;
|
|
38
35
|
})(ChainId || {});
|
|
39
36
|
var ZERO_PERCENT = new Percent("0");
|
|
40
37
|
var ONE_HUNDRED_PERCENT = new Percent("1");
|
|
@@ -135,25 +132,6 @@ function isTradeBetter(tradeA, tradeB, minimumDelta = ZERO_PERCENT) {
|
|
|
135
132
|
}
|
|
136
133
|
return tradeA.executionPrice.asFraction.multiply(minimumDelta.add(ONE_HUNDRED_PERCENT)).lessThan(tradeB.executionPrice);
|
|
137
134
|
}
|
|
138
|
-
|
|
139
|
-
// src/entities/pair.ts
|
|
140
|
-
import {
|
|
141
|
-
InsufficientInputAmountError,
|
|
142
|
-
InsufficientReservesError,
|
|
143
|
-
sqrt,
|
|
144
|
-
CurrencyAmount,
|
|
145
|
-
Price,
|
|
146
|
-
FIVE,
|
|
147
|
-
ONE,
|
|
148
|
-
ZERO,
|
|
149
|
-
_10000,
|
|
150
|
-
_9975,
|
|
151
|
-
MINIMUM_LIQUIDITY
|
|
152
|
-
} from "@pancakeswap/swap-sdk-core";
|
|
153
|
-
import { getCreate2Address } from "@ethersproject/address";
|
|
154
|
-
import { keccak256, pack } from "@ethersproject/solidity";
|
|
155
|
-
import JSBI from "jsbi";
|
|
156
|
-
import invariant2 from "tiny-invariant";
|
|
157
135
|
var PAIR_ADDRESS_CACHE = {};
|
|
158
136
|
var composeKey = (token0, token1) => `${token0.chainId}-${token0.address}-${token1.address}`;
|
|
159
137
|
var computePairAddress = ({
|
|
@@ -216,7 +194,7 @@ var Pair = class {
|
|
|
216
194
|
* @param token token to return price of
|
|
217
195
|
*/
|
|
218
196
|
priceOf(token) {
|
|
219
|
-
|
|
197
|
+
invariant4(this.involvesToken(token), "TOKEN");
|
|
220
198
|
return token.equals(this.token0) ? this.token0Price : this.token1Price;
|
|
221
199
|
}
|
|
222
200
|
/**
|
|
@@ -238,11 +216,11 @@ var Pair = class {
|
|
|
238
216
|
return this.tokenAmounts[1];
|
|
239
217
|
}
|
|
240
218
|
reserveOf(token) {
|
|
241
|
-
|
|
219
|
+
invariant4(this.involvesToken(token), "TOKEN");
|
|
242
220
|
return token.equals(this.token0) ? this.reserve0 : this.reserve1;
|
|
243
221
|
}
|
|
244
222
|
getOutputAmount(inputAmount) {
|
|
245
|
-
|
|
223
|
+
invariant4(this.involvesToken(inputAmount.currency), "TOKEN");
|
|
246
224
|
if (JSBI.equal(this.reserve0.quotient, ZERO) || JSBI.equal(this.reserve1.quotient, ZERO)) {
|
|
247
225
|
throw new InsufficientReservesError();
|
|
248
226
|
}
|
|
@@ -261,7 +239,7 @@ var Pair = class {
|
|
|
261
239
|
return [outputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
|
|
262
240
|
}
|
|
263
241
|
getInputAmount(outputAmount) {
|
|
264
|
-
|
|
242
|
+
invariant4(this.involvesToken(outputAmount.currency), "TOKEN");
|
|
265
243
|
if (JSBI.equal(this.reserve0.quotient, ZERO) || JSBI.equal(this.reserve1.quotient, ZERO) || JSBI.greaterThanOrEqual(outputAmount.quotient, this.reserveOf(outputAmount.currency).quotient)) {
|
|
266
244
|
throw new InsufficientReservesError();
|
|
267
245
|
}
|
|
@@ -276,9 +254,9 @@ var Pair = class {
|
|
|
276
254
|
return [inputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
|
|
277
255
|
}
|
|
278
256
|
getLiquidityMinted(totalSupply, tokenAmountA, tokenAmountB) {
|
|
279
|
-
|
|
257
|
+
invariant4(totalSupply.currency.equals(this.liquidityToken), "LIQUIDITY");
|
|
280
258
|
const tokenAmounts = tokenAmountA.currency.sortsBefore(tokenAmountB.currency) ? [tokenAmountA, tokenAmountB] : [tokenAmountB, tokenAmountA];
|
|
281
|
-
|
|
259
|
+
invariant4(tokenAmounts[0].currency.equals(this.token0) && tokenAmounts[1].currency.equals(this.token1), "TOKEN");
|
|
282
260
|
let liquidity;
|
|
283
261
|
if (JSBI.equal(totalSupply.quotient, ZERO)) {
|
|
284
262
|
liquidity = JSBI.subtract(
|
|
@@ -296,15 +274,15 @@ var Pair = class {
|
|
|
296
274
|
return CurrencyAmount.fromRawAmount(this.liquidityToken, liquidity);
|
|
297
275
|
}
|
|
298
276
|
getLiquidityValue(token, totalSupply, liquidity, feeOn = false, kLast) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
277
|
+
invariant4(this.involvesToken(token), "TOKEN");
|
|
278
|
+
invariant4(totalSupply.currency.equals(this.liquidityToken), "TOTAL_SUPPLY");
|
|
279
|
+
invariant4(liquidity.currency.equals(this.liquidityToken), "LIQUIDITY");
|
|
280
|
+
invariant4(JSBI.lessThanOrEqual(liquidity.quotient, totalSupply.quotient), "LIQUIDITY");
|
|
303
281
|
let totalSupplyAdjusted;
|
|
304
282
|
if (!feeOn) {
|
|
305
283
|
totalSupplyAdjusted = totalSupply;
|
|
306
284
|
} else {
|
|
307
|
-
|
|
285
|
+
invariant4(!!kLast, "K_LAST");
|
|
308
286
|
const kLastParsed = JSBI.BigInt(kLast);
|
|
309
287
|
if (!JSBI.equal(kLastParsed, ZERO)) {
|
|
310
288
|
const rootK = sqrt(JSBI.multiply(this.reserve0.quotient, this.reserve1.quotient));
|
|
@@ -327,26 +305,22 @@ var Pair = class {
|
|
|
327
305
|
);
|
|
328
306
|
}
|
|
329
307
|
};
|
|
330
|
-
|
|
331
|
-
// src/entities/route.ts
|
|
332
|
-
import invariant3 from "tiny-invariant";
|
|
333
|
-
import { Price as Price2 } from "@pancakeswap/swap-sdk-core";
|
|
334
308
|
var Route = class {
|
|
335
309
|
constructor(pairs, input, output) {
|
|
336
310
|
this._midPrice = null;
|
|
337
|
-
|
|
311
|
+
invariant4(pairs.length > 0, "PAIRS");
|
|
338
312
|
const chainId = pairs[0].chainId;
|
|
339
|
-
|
|
313
|
+
invariant4(
|
|
340
314
|
pairs.every((pair) => pair.chainId === chainId),
|
|
341
315
|
"CHAIN_IDS"
|
|
342
316
|
);
|
|
343
317
|
const wrappedInput = input.wrapped;
|
|
344
|
-
|
|
345
|
-
|
|
318
|
+
invariant4(pairs[0].involvesToken(wrappedInput), "INPUT");
|
|
319
|
+
invariant4(typeof output === "undefined" || pairs[pairs.length - 1].involvesToken(output.wrapped), "OUTPUT");
|
|
346
320
|
const path = [wrappedInput];
|
|
347
321
|
for (const [i, pair] of pairs.entries()) {
|
|
348
322
|
const currentInput = path[i];
|
|
349
|
-
|
|
323
|
+
invariant4(currentInput.equals(pair.token0) || currentInput.equals(pair.token1), "PATH");
|
|
350
324
|
const output2 = currentInput.equals(pair.token0) ? pair.token1 : pair.token0;
|
|
351
325
|
path.push(output2);
|
|
352
326
|
}
|
|
@@ -361,29 +335,16 @@ var Route = class {
|
|
|
361
335
|
const prices = [];
|
|
362
336
|
for (const [i, pair] of this.pairs.entries()) {
|
|
363
337
|
prices.push(
|
|
364
|
-
this.path[i].equals(pair.token0) ? new
|
|
338
|
+
this.path[i].equals(pair.token0) ? new Price(pair.reserve0.currency, pair.reserve1.currency, pair.reserve0.quotient, pair.reserve1.quotient) : new Price(pair.reserve1.currency, pair.reserve0.currency, pair.reserve1.quotient, pair.reserve0.quotient)
|
|
365
339
|
);
|
|
366
340
|
}
|
|
367
341
|
const reduced = prices.slice(1).reduce((accumulator, currentValue) => accumulator.multiply(currentValue), prices[0]);
|
|
368
|
-
return this._midPrice = new
|
|
342
|
+
return this._midPrice = new Price(this.input, this.output, reduced.denominator, reduced.numerator);
|
|
369
343
|
}
|
|
370
344
|
get chainId() {
|
|
371
345
|
return this.pairs[0].chainId;
|
|
372
346
|
}
|
|
373
347
|
};
|
|
374
|
-
|
|
375
|
-
// src/entities/trade.ts
|
|
376
|
-
import invariant4 from "tiny-invariant";
|
|
377
|
-
import {
|
|
378
|
-
ONE as ONE2,
|
|
379
|
-
TradeType,
|
|
380
|
-
ZERO as ZERO2,
|
|
381
|
-
CurrencyAmount as CurrencyAmount2,
|
|
382
|
-
Fraction,
|
|
383
|
-
Price as Price3,
|
|
384
|
-
sortedInsert,
|
|
385
|
-
computePriceImpact
|
|
386
|
-
} from "@pancakeswap/swap-sdk-core";
|
|
387
348
|
function inputOutputComparator(a, b) {
|
|
388
349
|
invariant4(a.inputAmount.currency.equals(b.inputAmount.currency), "INPUT_CURRENCY");
|
|
389
350
|
invariant4(a.outputAmount.currency.equals(b.outputAmount.currency), "OUTPUT_CURRENCY");
|
|
@@ -443,8 +404,8 @@ var Trade = class {
|
|
|
443
404
|
const [outputAmount] = pair.getOutputAmount(tokenAmounts[i]);
|
|
444
405
|
tokenAmounts[i + 1] = outputAmount;
|
|
445
406
|
}
|
|
446
|
-
this.inputAmount =
|
|
447
|
-
this.outputAmount =
|
|
407
|
+
this.inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amount.numerator, amount.denominator);
|
|
408
|
+
this.outputAmount = CurrencyAmount.fromFractionalAmount(
|
|
448
409
|
route.output,
|
|
449
410
|
tokenAmounts[tokenAmounts.length - 1].numerator,
|
|
450
411
|
tokenAmounts[tokenAmounts.length - 1].denominator
|
|
@@ -457,14 +418,14 @@ var Trade = class {
|
|
|
457
418
|
const [inputAmount] = pair.getInputAmount(tokenAmounts[i]);
|
|
458
419
|
tokenAmounts[i - 1] = inputAmount;
|
|
459
420
|
}
|
|
460
|
-
this.inputAmount =
|
|
421
|
+
this.inputAmount = CurrencyAmount.fromFractionalAmount(
|
|
461
422
|
route.input,
|
|
462
423
|
tokenAmounts[0].numerator,
|
|
463
424
|
tokenAmounts[0].denominator
|
|
464
425
|
);
|
|
465
|
-
this.outputAmount =
|
|
426
|
+
this.outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amount.numerator, amount.denominator);
|
|
466
427
|
}
|
|
467
|
-
this.executionPrice = new
|
|
428
|
+
this.executionPrice = new Price(
|
|
468
429
|
this.inputAmount.currency,
|
|
469
430
|
this.outputAmount.currency,
|
|
470
431
|
this.inputAmount.quotient,
|
|
@@ -477,24 +438,24 @@ var Trade = class {
|
|
|
477
438
|
* @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
|
|
478
439
|
*/
|
|
479
440
|
minimumAmountOut(slippageTolerance) {
|
|
480
|
-
invariant4(!slippageTolerance.lessThan(
|
|
441
|
+
invariant4(!slippageTolerance.lessThan(ZERO), "SLIPPAGE_TOLERANCE");
|
|
481
442
|
if (this.tradeType === TradeType.EXACT_OUTPUT) {
|
|
482
443
|
return this.outputAmount;
|
|
483
444
|
}
|
|
484
|
-
const slippageAdjustedAmountOut = new Fraction(
|
|
485
|
-
return
|
|
445
|
+
const slippageAdjustedAmountOut = new Fraction(ONE).add(slippageTolerance).invert().multiply(this.outputAmount.quotient).quotient;
|
|
446
|
+
return CurrencyAmount.fromRawAmount(this.outputAmount.currency, slippageAdjustedAmountOut);
|
|
486
447
|
}
|
|
487
448
|
/**
|
|
488
449
|
* Get the maximum amount in that can be spent via this trade for the given slippage tolerance
|
|
489
450
|
* @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
|
|
490
451
|
*/
|
|
491
452
|
maximumAmountIn(slippageTolerance) {
|
|
492
|
-
invariant4(!slippageTolerance.lessThan(
|
|
453
|
+
invariant4(!slippageTolerance.lessThan(ZERO), "SLIPPAGE_TOLERANCE");
|
|
493
454
|
if (this.tradeType === TradeType.EXACT_INPUT) {
|
|
494
455
|
return this.inputAmount;
|
|
495
456
|
}
|
|
496
|
-
const slippageAdjustedAmountIn = new Fraction(
|
|
497
|
-
return
|
|
457
|
+
const slippageAdjustedAmountIn = new Fraction(ONE).add(slippageTolerance).multiply(this.inputAmount.quotient).quotient;
|
|
458
|
+
return CurrencyAmount.fromRawAmount(this.inputAmount.currency, slippageAdjustedAmountIn);
|
|
498
459
|
}
|
|
499
460
|
/**
|
|
500
461
|
* Given a list of pairs, and a fixed amount in, returns the top `maxNumResults` trades that go from an input token
|
|
@@ -520,7 +481,7 @@ var Trade = class {
|
|
|
520
481
|
const pair = pairs[i];
|
|
521
482
|
if (!pair.token0.equals(amountIn.currency) && !pair.token1.equals(amountIn.currency))
|
|
522
483
|
continue;
|
|
523
|
-
if (pair.reserve0.equalTo(
|
|
484
|
+
if (pair.reserve0.equalTo(ZERO) || pair.reserve1.equalTo(ZERO))
|
|
524
485
|
continue;
|
|
525
486
|
let amountOut;
|
|
526
487
|
try {
|
|
@@ -566,7 +527,7 @@ var Trade = class {
|
|
|
566
527
|
* @param slippageTolerance the allowed tolerated slippage
|
|
567
528
|
*/
|
|
568
529
|
worstExecutionPrice(slippageTolerance) {
|
|
569
|
-
return new
|
|
530
|
+
return new Price(
|
|
570
531
|
this.inputAmount.currency,
|
|
571
532
|
this.outputAmount.currency,
|
|
572
533
|
this.maximumAmountIn(slippageTolerance).quotient,
|
|
@@ -598,7 +559,7 @@ var Trade = class {
|
|
|
598
559
|
const pair = pairs[i];
|
|
599
560
|
if (!pair.token0.equals(amountOut.currency) && !pair.token1.equals(amountOut.currency))
|
|
600
561
|
continue;
|
|
601
|
-
if (pair.reserve0.equalTo(
|
|
562
|
+
if (pair.reserve0.equalTo(ZERO) || pair.reserve1.equalTo(ZERO))
|
|
602
563
|
continue;
|
|
603
564
|
let amountIn;
|
|
604
565
|
try {
|
|
@@ -640,10 +601,6 @@ var Trade = class {
|
|
|
640
601
|
return bestTrades;
|
|
641
602
|
}
|
|
642
603
|
};
|
|
643
|
-
|
|
644
|
-
// src/entities/native.ts
|
|
645
|
-
import invariant5 from "tiny-invariant";
|
|
646
|
-
import { NativeCurrency } from "@pancakeswap/swap-sdk-core";
|
|
647
604
|
var _Native = class extends NativeCurrency {
|
|
648
605
|
constructor({
|
|
649
606
|
chainId,
|
|
@@ -655,14 +612,14 @@ var _Native = class extends NativeCurrency {
|
|
|
655
612
|
}
|
|
656
613
|
get wrapped() {
|
|
657
614
|
const wnative = WNATIVE[this.chainId];
|
|
658
|
-
|
|
615
|
+
invariant4(!!wnative, "WRAPPED");
|
|
659
616
|
return wnative;
|
|
660
617
|
}
|
|
661
618
|
static onChain(chainId) {
|
|
662
619
|
if (chainId in this.cache) {
|
|
663
620
|
return this.cache[chainId];
|
|
664
621
|
}
|
|
665
|
-
|
|
622
|
+
invariant4(!!NATIVE[chainId], "NATIVE_CURRENCY");
|
|
666
623
|
const { decimals, name, symbol } = NATIVE[chainId];
|
|
667
624
|
return this.cache[chainId] = new _Native({ chainId, decimals, symbol, name });
|
|
668
625
|
}
|
|
@@ -672,20 +629,11 @@ var _Native = class extends NativeCurrency {
|
|
|
672
629
|
};
|
|
673
630
|
var Native = _Native;
|
|
674
631
|
Native.cache = {};
|
|
675
|
-
|
|
676
|
-
// src/router.ts
|
|
677
|
-
import { TradeType as TradeType2 } from "@pancakeswap/swap-sdk-core";
|
|
678
|
-
import invariant6 from "tiny-invariant";
|
|
679
632
|
function toHex(currencyAmount) {
|
|
680
633
|
return `0x${currencyAmount.quotient.toString(16)}`;
|
|
681
634
|
}
|
|
682
635
|
var ZERO_HEX = "0x0";
|
|
683
636
|
var Router = class {
|
|
684
|
-
/**
|
|
685
|
-
* Cannot be constructed.
|
|
686
|
-
*/
|
|
687
|
-
constructor() {
|
|
688
|
-
}
|
|
689
637
|
/**
|
|
690
638
|
* Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given trade.
|
|
691
639
|
* @param trade to produce call parameters for
|
|
@@ -694,19 +642,19 @@ var Router = class {
|
|
|
694
642
|
static swapCallParameters(trade, options) {
|
|
695
643
|
const etherIn = trade.inputAmount.currency.isNative;
|
|
696
644
|
const etherOut = trade.outputAmount.currency.isNative;
|
|
697
|
-
|
|
698
|
-
|
|
645
|
+
invariant4(!(etherIn && etherOut), "ETHER_IN_OUT");
|
|
646
|
+
invariant4(!("ttl" in options) || options.ttl > 0, "TTL");
|
|
699
647
|
const to = validateAndParseAddress(options.recipient);
|
|
700
648
|
const amountIn = toHex(trade.maximumAmountIn(options.allowedSlippage));
|
|
701
649
|
const amountOut = toHex(trade.minimumAmountOut(options.allowedSlippage));
|
|
702
650
|
const path = trade.route.path.map((token) => token.address);
|
|
703
|
-
const deadline = "ttl" in options ? `0x${(Math.floor((
|
|
651
|
+
const deadline = "ttl" in options ? `0x${(Math.floor(( new Date()).getTime() / 1e3) + options.ttl).toString(16)}` : `0x${options.deadline.toString(16)}`;
|
|
704
652
|
const useFeeOnTransfer = Boolean(options.feeOnTransfer);
|
|
705
653
|
let methodName;
|
|
706
654
|
let args;
|
|
707
655
|
let value;
|
|
708
656
|
switch (trade.tradeType) {
|
|
709
|
-
case
|
|
657
|
+
case TradeType.EXACT_INPUT:
|
|
710
658
|
if (etherIn) {
|
|
711
659
|
methodName = useFeeOnTransfer ? "swapExactETHForTokensSupportingFeeOnTransferTokens" : "swapExactETHForTokens";
|
|
712
660
|
args = [amountOut, path, to, deadline];
|
|
@@ -721,8 +669,8 @@ var Router = class {
|
|
|
721
669
|
value = ZERO_HEX;
|
|
722
670
|
}
|
|
723
671
|
break;
|
|
724
|
-
case
|
|
725
|
-
|
|
672
|
+
case TradeType.EXACT_OUTPUT:
|
|
673
|
+
invariant4(!useFeeOnTransfer, "EXACT_OUT_FOT");
|
|
726
674
|
if (etherIn) {
|
|
727
675
|
methodName = "swapETHForExactTokens";
|
|
728
676
|
args = [amountOut, path, to, deadline];
|
|
@@ -745,30 +693,26 @@ var Router = class {
|
|
|
745
693
|
};
|
|
746
694
|
}
|
|
747
695
|
};
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
WBNB,
|
|
767
|
-
WETH9,
|
|
768
|
-
WNATIVE,
|
|
769
|
-
ZERO_PERCENT,
|
|
770
|
-
computePairAddress,
|
|
771
|
-
inputOutputComparator,
|
|
772
|
-
isTradeBetter,
|
|
773
|
-
tradeComparator
|
|
696
|
+
var _Ether = class extends NativeCurrency {
|
|
697
|
+
constructor(chainId) {
|
|
698
|
+
super(chainId, 18, "ETH", "Ether");
|
|
699
|
+
}
|
|
700
|
+
get wrapped() {
|
|
701
|
+
const weth9 = WETH9[this.chainId];
|
|
702
|
+
invariant4(!!weth9, "WRAPPED");
|
|
703
|
+
return weth9;
|
|
704
|
+
}
|
|
705
|
+
static onChain(chainId) {
|
|
706
|
+
if (!this._etherCache[chainId]) {
|
|
707
|
+
this._etherCache[chainId] = new _Ether(chainId);
|
|
708
|
+
}
|
|
709
|
+
return this._etherCache[chainId];
|
|
710
|
+
}
|
|
711
|
+
equals(other) {
|
|
712
|
+
return other.isNative && other.chainId === this.chainId;
|
|
713
|
+
}
|
|
774
714
|
};
|
|
715
|
+
var Ether = _Ether;
|
|
716
|
+
Ether._etherCache = {};
|
|
717
|
+
|
|
718
|
+
export { ChainId, ERC20Token, Ether, FACTORY_ADDRESS, FACTORY_ADDRESS_MAP, INIT_CODE_HASH, INIT_CODE_HASH_MAP, NATIVE, Native, ONE_HUNDRED_PERCENT, Pair, Route, Router, Trade, WBNB, WETH9, WNATIVE, ZERO_PERCENT, computePairAddress, inputOutputComparator, isTradeBetter, tradeComparator, validateAndParseAddress };
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pancakeswap/sdk",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.2.0",
|
|
5
5
|
"description": "🛠 An SDK for building applications on top of Pancakeswap.",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"typings": "dist/index.d.ts",
|
|
8
|
+
"module": "dist/index.mjs",
|
|
8
9
|
"files": [
|
|
9
10
|
"dist"
|
|
10
11
|
],
|
|
@@ -17,10 +18,17 @@
|
|
|
17
18
|
"pancakeswap",
|
|
18
19
|
"bsc"
|
|
19
20
|
],
|
|
20
|
-
"
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"import": "./dist/index.mjs",
|
|
25
|
+
"require": "./dist/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./package.json": "./package.json"
|
|
28
|
+
},
|
|
21
29
|
"scripts": {
|
|
22
|
-
"build": "tsup
|
|
23
|
-
"dev": "tsup
|
|
30
|
+
"build": "tsup",
|
|
31
|
+
"dev": "tsup --watch",
|
|
24
32
|
"test": "jest",
|
|
25
33
|
"prepublishOnly": "yarn run build",
|
|
26
34
|
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
|
@@ -51,8 +59,7 @@
|
|
|
51
59
|
"@swc/jest": "^0.2.21",
|
|
52
60
|
"@types/big.js": "^4.0.5",
|
|
53
61
|
"@types/jest": "^24.0.25",
|
|
54
|
-
"babel-plugin-transform-jsbi-to-bigint": "^1.3.1"
|
|
55
|
-
"tsup": "^6.6.3"
|
|
62
|
+
"babel-plugin-transform-jsbi-to-bigint": "^1.3.1"
|
|
56
63
|
},
|
|
57
64
|
"engines": {
|
|
58
65
|
"node": ">=10"
|