@pancakeswap/sdk 2.4.3 → 3.0.0-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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Forked from the [Uniswap SDK](https://github.com/Uniswap/uniswap-v2-sdk/commit/a88048e9c4198a5bdaea00883ca00c8c8e582605).
4
4
 
5
- You can refer to the Uniswap SDK documentation [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).
5
+ You can refer to the Uniswap SDK documentation [uniswap.org](https://docs.uniswap.org/sdk/2.0.0/).
6
6
 
7
7
  ## Running tests
8
8
 
@@ -1,8 +1,10 @@
1
1
  import JSBI from 'jsbi';
2
2
  export declare type BigintIsh = JSBI | number | string;
3
3
  export declare enum ChainId {
4
- MAINNET = 56,
5
- TESTNET = 97
4
+ ETHEREUM = 1,
5
+ RINKEBY = 4,
6
+ BSC = 56,
7
+ BSC_TESTNET = 97
6
8
  }
7
9
  export declare enum TradeType {
8
10
  EXACT_INPUT = 0,
@@ -15,11 +17,15 @@ export declare enum Rounding {
15
17
  }
16
18
  export declare const FACTORY_ADDRESS = "0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73";
17
19
  export declare const FACTORY_ADDRESS_MAP: {
20
+ 1: string;
21
+ 4: string;
18
22
  56: string;
19
23
  97: string;
20
24
  };
21
25
  export declare const INIT_CODE_HASH = "0x00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5";
22
26
  export declare const INIT_CODE_HASH_MAP: {
27
+ 1: string;
28
+ 4: string;
23
29
  56: string;
24
30
  97: string;
25
31
  };
@@ -25,7 +25,17 @@ export declare class Token extends Currency {
25
25
  * Compares two currencies for equality
26
26
  */
27
27
  export declare function currencyEquals(currencyA: Currency, currencyB: Currency): boolean;
28
- export declare const WETH: {
28
+ export declare const WETH9: {
29
+ 1: Token;
30
+ 4: Token;
31
+ };
32
+ export declare const WBNB: {
33
+ 56: Token;
34
+ 97: Token;
35
+ };
36
+ export declare const WNATIVE: {
37
+ 1: Token;
38
+ 4: Token;
29
39
  56: Token;
30
40
  97: Token;
31
41
  };
@@ -19,8 +19,10 @@ var providers = require('@ethersproject/providers');
19
19
  var _FACTORY_ADDRESS_MAP, _INIT_CODE_HASH_MAP, _SOLIDITY_TYPE_MAXIMA;
20
20
 
21
21
  (function (ChainId) {
22
- ChainId[ChainId["MAINNET"] = 56] = "MAINNET";
23
- ChainId[ChainId["TESTNET"] = 97] = "TESTNET";
22
+ ChainId[ChainId["ETHEREUM"] = 1] = "ETHEREUM";
23
+ ChainId[ChainId["RINKEBY"] = 4] = "RINKEBY";
24
+ ChainId[ChainId["BSC"] = 56] = "BSC";
25
+ ChainId[ChainId["BSC_TESTNET"] = 97] = "BSC_TESTNET";
24
26
  })(exports.ChainId || (exports.ChainId = {}));
25
27
 
26
28
  (function (TradeType) {
@@ -35,9 +37,11 @@ var _FACTORY_ADDRESS_MAP, _INIT_CODE_HASH_MAP, _SOLIDITY_TYPE_MAXIMA;
35
37
  })(exports.Rounding || (exports.Rounding = {}));
36
38
 
37
39
  var FACTORY_ADDRESS = '0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73';
38
- var FACTORY_ADDRESS_MAP = (_FACTORY_ADDRESS_MAP = {}, _FACTORY_ADDRESS_MAP[exports.ChainId.MAINNET] = FACTORY_ADDRESS, _FACTORY_ADDRESS_MAP[exports.ChainId.TESTNET] = '0x6725f303b657a9451d8ba641348b6761a6cc7a17', _FACTORY_ADDRESS_MAP);
40
+ var FACTORY_ADDRESS_ETH = '0xD93801d7D3a368D94A3A32E97A20f7aC1948a5dB';
41
+ var FACTORY_ADDRESS_MAP = (_FACTORY_ADDRESS_MAP = {}, _FACTORY_ADDRESS_MAP[exports.ChainId.ETHEREUM] = FACTORY_ADDRESS_ETH, _FACTORY_ADDRESS_MAP[exports.ChainId.RINKEBY] = FACTORY_ADDRESS_ETH, _FACTORY_ADDRESS_MAP[exports.ChainId.BSC] = FACTORY_ADDRESS, _FACTORY_ADDRESS_MAP[exports.ChainId.BSC_TESTNET] = '0x6725f303b657a9451d8ba641348b6761a6cc7a17', _FACTORY_ADDRESS_MAP);
39
42
  var INIT_CODE_HASH = '0x00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5';
40
- var INIT_CODE_HASH_MAP = (_INIT_CODE_HASH_MAP = {}, _INIT_CODE_HASH_MAP[exports.ChainId.MAINNET] = INIT_CODE_HASH, _INIT_CODE_HASH_MAP[exports.ChainId.TESTNET] = '0xd0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66', _INIT_CODE_HASH_MAP);
43
+ var INIT_CODE_HASH_ETH = '0x57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d';
44
+ var INIT_CODE_HASH_MAP = (_INIT_CODE_HASH_MAP = {}, _INIT_CODE_HASH_MAP[exports.ChainId.ETHEREUM] = INIT_CODE_HASH_ETH, _INIT_CODE_HASH_MAP[exports.ChainId.RINKEBY] = INIT_CODE_HASH_ETH, _INIT_CODE_HASH_MAP[exports.ChainId.BSC] = INIT_CODE_HASH, _INIT_CODE_HASH_MAP[exports.ChainId.BSC_TESTNET] = '0xd0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66', _INIT_CODE_HASH_MAP);
41
45
  var MINIMUM_LIQUIDITY = /*#__PURE__*/JSBI.BigInt(1000); // exports for internal consumption
42
46
 
43
47
  var ZERO = /*#__PURE__*/JSBI.BigInt(0);
@@ -373,7 +377,7 @@ function Currency(decimals, symbol, name) {
373
377
  Currency.ETHER = /*#__PURE__*/new Currency(18, 'BNB', 'BNB');
374
378
  var ETHER = Currency.ETHER;
375
379
 
376
- var _WETH;
380
+ var _WETH, _WBNB, _WNATIVE;
377
381
  /**
378
382
  * Represents an ERC20 token with a unique address and some metadata.
379
383
  */
@@ -437,7 +441,9 @@ function currencyEquals(currencyA, currencyB) {
437
441
  return currencyA === currencyB;
438
442
  }
439
443
  }
440
- var WETH = (_WETH = {}, _WETH[exports.ChainId.MAINNET] = /*#__PURE__*/new Token(exports.ChainId.MAINNET, '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', 18, 'WBNB', 'Wrapped BNB', 'https://www.binance.org'), _WETH[exports.ChainId.TESTNET] = /*#__PURE__*/new Token(exports.ChainId.TESTNET, '0x094616F0BdFB0b526bD735Bf66Eca0Ad254ca81F', 18, 'WBNB', 'Wrapped BNB', 'https://www.binance.org'), _WETH);
444
+ var WETH9 = (_WETH = {}, _WETH[exports.ChainId.ETHEREUM] = /*#__PURE__*/new Token(exports.ChainId.ETHEREUM, '0xc778417E063141139Fce010982780140Aa0cD5Ab', 18, 'WETH', 'Wrapped Ether', 'https://weth.io'), _WETH[exports.ChainId.RINKEBY] = /*#__PURE__*/new Token(exports.ChainId.RINKEBY, '0xc778417E063141139Fce010982780140Aa0cD5Ab', 18, 'WETH', 'Wrapped Ether', 'https://weth.io'), _WETH);
445
+ var WBNB = (_WBNB = {}, _WBNB[exports.ChainId.BSC] = /*#__PURE__*/new Token(exports.ChainId.BSC, '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', 18, 'WBNB', 'Wrapped BNB', 'https://www.binance.org'), _WBNB[exports.ChainId.BSC_TESTNET] = /*#__PURE__*/new Token(exports.ChainId.BSC_TESTNET, '0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd', 18, 'WBNB', 'Wrapped BNB', 'https://www.binance.org'), _WBNB);
446
+ var WNATIVE = (_WNATIVE = {}, _WNATIVE[exports.ChainId.ETHEREUM] = WETH9[exports.ChainId.ETHEREUM], _WNATIVE[exports.ChainId.RINKEBY] = WETH9[exports.ChainId.RINKEBY], _WNATIVE[exports.ChainId.BSC] = WBNB[exports.ChainId.BSC], _WNATIVE[exports.ChainId.BSC_TESTNET] = WBNB[exports.ChainId.BSC_TESTNET], _WNATIVE);
441
447
 
442
448
  var _toSignificantRoundin, _toFixedRounding;
443
449
  var Decimal = /*#__PURE__*/toFormat(_Decimal);
@@ -764,6 +770,12 @@ var Price = /*#__PURE__*/function (_Fraction) {
764
770
  return Price;
765
771
  }(Fraction);
766
772
 
773
+ var PAIR_ADDRESS_CACHE = {};
774
+
775
+ var composeKey = function composeKey(token0, token1) {
776
+ return token0.chainId + "-" + token0.address + "-" + token1.address;
777
+ };
778
+
767
779
  var Pair = /*#__PURE__*/function () {
768
780
  function Pair(tokenAmountA, tokenAmountB) {
769
781
  var tokenAmounts = tokenAmountA.token.sortsBefore(tokenAmountB.token) // does safety checks
@@ -773,12 +785,22 @@ var Pair = /*#__PURE__*/function () {
773
785
  }
774
786
 
775
787
  Pair.getAddress = function getAddress(tokenA, tokenB) {
788
+ var _PAIR_ADDRESS_CACHE;
789
+
776
790
  var _ref = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA],
777
791
  token0 = _ref[0],
778
792
  token1 = _ref[1]; // does safety checks
779
793
 
780
794
 
781
- return address.getCreate2Address(FACTORY_ADDRESS_MAP[token0.chainId], solidity.keccak256(['bytes'], [solidity.pack(['address', 'address'], [token0.address, token1.address])]), INIT_CODE_HASH_MAP[token0.chainId]);
795
+ var key = composeKey(token0, token1);
796
+
797
+ if (((_PAIR_ADDRESS_CACHE = PAIR_ADDRESS_CACHE) === null || _PAIR_ADDRESS_CACHE === void 0 ? void 0 : _PAIR_ADDRESS_CACHE[key]) === undefined) {
798
+ var _extends2;
799
+
800
+ PAIR_ADDRESS_CACHE = _extends({}, PAIR_ADDRESS_CACHE, (_extends2 = {}, _extends2[key] = address.getCreate2Address(FACTORY_ADDRESS_MAP[token0.chainId], solidity.keccak256(['bytes'], [solidity.pack(['address', 'address'], [token0.address, token1.address])]), INIT_CODE_HASH_MAP[token0.chainId]), _extends2));
801
+ }
802
+
803
+ return PAIR_ADDRESS_CACHE[key];
782
804
  }
783
805
  /**
784
806
  * Returns true if the token is either token0 or token1
@@ -959,9 +981,9 @@ var Route = /*#__PURE__*/function () {
959
981
  !pairs.every(function (pair) {
960
982
  return pair.chainId === pairs[0].chainId;
961
983
  }) ? invariant(false, 'CHAIN_IDS') : void 0;
962
- !(input instanceof Token && pairs[0].involvesToken(input) || input === ETHER && pairs[0].involvesToken(WETH[pairs[0].chainId])) ? invariant(false, 'INPUT') : void 0;
963
- !(typeof output === 'undefined' || output instanceof Token && pairs[pairs.length - 1].involvesToken(output) || output === ETHER && pairs[pairs.length - 1].involvesToken(WETH[pairs[0].chainId])) ? invariant(false, 'OUTPUT') : void 0;
964
- var path = [input instanceof Token ? input : WETH[pairs[0].chainId]];
984
+ !(input instanceof Token && pairs[0].involvesToken(input) || input === ETHER && pairs[0].involvesToken(WNATIVE[pairs[0].chainId])) ? invariant(false, 'INPUT') : void 0;
985
+ !(typeof output === 'undefined' || output instanceof Token && pairs[pairs.length - 1].involvesToken(output) || output === ETHER && pairs[pairs.length - 1].involvesToken(WNATIVE[pairs[0].chainId])) ? invariant(false, 'OUTPUT') : void 0;
986
+ var path = [input instanceof Token ? input : WNATIVE[pairs[0].chainId]];
965
987
 
966
988
  for (var _iterator = _createForOfIteratorHelperLoose(pairs.entries()), _step; !(_step = _iterator()).done;) {
967
989
  var _step$value = _step.value,
@@ -1089,13 +1111,13 @@ function tradeComparator(a, b) {
1089
1111
 
1090
1112
  function wrappedAmount(currencyAmount, chainId) {
1091
1113
  if (currencyAmount instanceof TokenAmount) return currencyAmount;
1092
- if (currencyAmount.currency === ETHER) return new TokenAmount(WETH[chainId], currencyAmount.raw);
1114
+ if (currencyAmount.currency === ETHER) return new TokenAmount(WNATIVE[chainId], currencyAmount.raw);
1093
1115
  invariant(false, 'CURRENCY') ;
1094
1116
  }
1095
1117
 
1096
1118
  function wrappedCurrency(currency, chainId) {
1097
1119
  if (currency instanceof Token) return currency;
1098
- if (currency === ETHER) return WETH[chainId];
1120
+ if (currency === ETHER) return WNATIVE[chainId];
1099
1121
  invariant(false, 'CURRENCY') ;
1100
1122
  }
1101
1123
  /**
@@ -2227,7 +2249,7 @@ var ERC20 = [
2227
2249
  ];
2228
2250
 
2229
2251
  var _TOKEN_DECIMALS_CACHE;
2230
- var TOKEN_DECIMALS_CACHE = (_TOKEN_DECIMALS_CACHE = {}, _TOKEN_DECIMALS_CACHE[exports.ChainId.MAINNET] = {
2252
+ var TOKEN_DECIMALS_CACHE = (_TOKEN_DECIMALS_CACHE = {}, _TOKEN_DECIMALS_CACHE[exports.ChainId.BSC] = {
2231
2253
  '0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A': 9 // DGD
2232
2254
 
2233
2255
  }, _TOKEN_DECIMALS_CACHE);
@@ -2320,7 +2342,9 @@ exports.Router = Router;
2320
2342
  exports.Token = Token;
2321
2343
  exports.TokenAmount = TokenAmount;
2322
2344
  exports.Trade = Trade;
2323
- exports.WETH = WETH;
2345
+ exports.WBNB = WBNB;
2346
+ exports.WETH9 = WETH9;
2347
+ exports.WNATIVE = WNATIVE;
2324
2348
  exports.currencyEquals = currencyEquals;
2325
2349
  exports.inputOutputComparator = inputOutputComparator;
2326
2350
  exports.tradeComparator = tradeComparator;