@paraswap/dex-lib 2.37.7 → 2.38.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.
Files changed (85) hide show
  1. package/build/abi/algebra/AlgebraPool.abi.json +727 -0
  2. package/build/dex/algebra/algebra-pool.d.ts +46 -0
  3. package/build/dex/algebra/algebra-pool.js +336 -0
  4. package/build/dex/algebra/algebra-pool.js.map +1 -0
  5. package/build/dex/gmx/config.js +1 -1
  6. package/build/dex/uniswap-v2/config.js +22 -0
  7. package/build/dex/uniswap-v2/config.js.map +1 -1
  8. package/package.json +1 -1
  9. package/src/dex/gmx/config.ts +1 -1
  10. package/src/dex/uniswap-v2/config.ts +23 -0
  11. package/build/abi/quickPerps/fast-price-events.json +0 -70
  12. package/build/abi/quickPerps/fast-price-feed.json +0 -748
  13. package/build/abi/quickPerps/reader.json +0 -313
  14. package/build/abi/quickPerps/vault-price-feed.json +0 -477
  15. package/build/abi/quickPerps/vault.json +0 -1953
  16. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json +0 -285
  17. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json +0 -583
  18. package/build/abi/woo-fi/WooFeeManager.abi.json +0 -318
  19. package/build/abi/woo-fi/WooPP.abi.json +0 -548
  20. package/build/abi/woo-fi/Wooracle.abi.json +0 -260
  21. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  22. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  23. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  24. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  25. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  26. package/build/dex/balancer-v2/LinearMath.d.ts +0 -19
  27. package/build/dex/balancer-v2/LinearMath.js +0 -179
  28. package/build/dex/balancer-v2/LinearMath.js.map +0 -1
  29. package/build/dex/balancer-v2/LinearPool.d.ts +0 -47
  30. package/build/dex/balancer-v2/LinearPool.js +0 -324
  31. package/build/dex/balancer-v2/LinearPool.js.map +0 -1
  32. package/build/dex/balancer-v2/PhantomStablePool.d.ts +0 -47
  33. package/build/dex/balancer-v2/PhantomStablePool.js +0 -294
  34. package/build/dex/balancer-v2/PhantomStablePool.js.map +0 -1
  35. package/build/dex/balancer-v2/StableMath.d.ts +0 -9
  36. package/build/dex/balancer-v2/StableMath.js +0 -272
  37. package/build/dex/balancer-v2/StableMath.js.map +0 -1
  38. package/build/dex/balancer-v2/balancer-v2-pool.d.ts +0 -75
  39. package/build/dex/balancer-v2/balancer-v2-pool.js +0 -417
  40. package/build/dex/balancer-v2/balancer-v2-pool.js.map +0 -1
  41. package/build/dex/maverick-v1/scripts/event-sequence.d.ts +0 -1
  42. package/build/dex/maverick-v1/scripts/event-sequence.js +0 -110
  43. package/build/dex/maverick-v1/scripts/event-sequence.js.map +0 -1
  44. package/build/dex/quickswap-v3.d.ts +0 -21
  45. package/build/dex/quickswap-v3.js +0 -40
  46. package/build/dex/quickswap-v3.js.map +0 -1
  47. package/build/dex/test-dex/config.d.ts +0 -4
  48. package/build/dex/test-dex/config.js +0 -15
  49. package/build/dex/test-dex/config.js.map +0 -1
  50. package/build/dex/test-dex/test-dex-pool.d.ts +0 -39
  51. package/build/dex/test-dex/test-dex-pool.js +0 -63
  52. package/build/dex/test-dex/test-dex-pool.js.map +0 -1
  53. package/build/dex/test-dex/test-dex.d.ts +0 -37
  54. package/build/dex/test-dex/test-dex.js +0 -126
  55. package/build/dex/test-dex/test-dex.js.map +0 -1
  56. package/build/dex/test-dex/types.d.ts +0 -6
  57. package/build/dex/test-dex/types.js +0 -3
  58. package/build/dex/test-dex/types.js.map +0 -1
  59. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.d.ts +0 -12
  60. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js +0 -23
  61. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js.map +0 -1
  62. package/build/dex/woo-fi/config.d.ts +0 -4
  63. package/build/dex/woo-fi/config.js +0 -141
  64. package/build/dex/woo-fi/config.js.map +0 -1
  65. package/build/dex/woo-fi/constants.d.ts +0 -5
  66. package/build/dex/woo-fi/constants.js +0 -20
  67. package/build/dex/woo-fi/constants.js.map +0 -1
  68. package/build/dex/woo-fi/types.d.ts +0 -48
  69. package/build/dex/woo-fi/types.js +0 -3
  70. package/build/dex/woo-fi/types.js.map +0 -1
  71. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +0 -14
  72. package/build/dex/woo-fi/woo-fi-decimal-math.js +0 -42
  73. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +0 -1
  74. package/build/dex/woo-fi/woo-fi-math.d.ts +0 -31
  75. package/build/dex/woo-fi/woo-fi-math.js +0 -300
  76. package/build/dex/woo-fi/woo-fi-math.js.map +0 -1
  77. package/build/dex/woo-fi/woo-fi.d.ts +0 -65
  78. package/build/dex/woo-fi/woo-fi.js +0 -480
  79. package/build/dex/woo-fi/woo-fi.js.map +0 -1
  80. package/build/dex/woo-fi-v2/woo-fi-math.d.ts +0 -16
  81. package/build/dex/woo-fi-v2/woo-fi-math.js +0 -137
  82. package/build/dex/woo-fi-v2/woo-fi-math.js.map +0 -1
  83. package/build/workers.d.ts +0 -0
  84. package/build/workers.js +0 -2
  85. package/build/workers.js.map +0 -1
@@ -1,48 +0,0 @@
1
- import { Address, Token } from '../../types';
2
- export declare type TokenInfo = {
3
- reserve: bigint;
4
- R: bigint;
5
- threshold: bigint;
6
- target: bigint;
7
- lastResetTimestamp: bigint;
8
- };
9
- export declare type TokenState = {
10
- priceNow: bigint;
11
- spreadNow: bigint;
12
- coeffNow: bigint;
13
- };
14
- export declare type RefInfo = {
15
- chainlinkRefOracle: Address;
16
- refPriceFixCoeff: bigint;
17
- minInputAmount: bigint;
18
- maxInputAmount: bigint;
19
- bound: bigint;
20
- };
21
- export declare type LatestRoundData = {
22
- answer: bigint;
23
- };
24
- export declare type PoolState = {
25
- feeRates: Record<Address, bigint>;
26
- tokenInfos: Record<Address, TokenInfo>;
27
- tokenStates: Record<Address, TokenState>;
28
- oracleTimestamp: bigint;
29
- isPaused: boolean;
30
- guardian: {
31
- globalBound: bigint;
32
- refInfos: Record<Address, RefInfo>;
33
- };
34
- chainlink: {
35
- latestRoundDatas: Record<Address, LatestRoundData>;
36
- };
37
- wooPPBalances: Record<Address, bigint>;
38
- };
39
- export declare type WooFiData = {};
40
- export declare type DexParams = {
41
- wooPPAddress: Address;
42
- wooOracleAddress: Address;
43
- wooFeeManagerAddress: Address;
44
- wooGuardianAddress: Address;
45
- quoteToken: Token;
46
- baseTokens: Record<string, Token>;
47
- rebateTo: Address;
48
- };
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/woo-fi/types.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- declare class WooFiDecimalMath {
2
- readonly ONE: bigint;
3
- readonly TWO: bigint;
4
- readonly ONE2: bigint;
5
- mulFloor(target: bigint, d: bigint): bigint;
6
- mulCeil(target: bigint, d: bigint): bigint;
7
- divFloor(target: bigint, d: bigint): bigint;
8
- divCeil(target: bigint, d: bigint): bigint;
9
- reciprocalFloor(target: bigint): bigint;
10
- reciprocalCeil(target: bigint): bigint;
11
- private _divCeil;
12
- }
13
- export declare const wooFiDecimalMath: WooFiDecimalMath;
14
- export {};
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wooFiDecimalMath = void 0;
4
- const bigint_constants_1 = require("../../bigint-constants");
5
- class WooFiDecimalMath {
6
- constructor() {
7
- this.ONE = bigint_constants_1.BI_POWS[18];
8
- this.TWO = 2n * bigint_constants_1.BI_POWS[18];
9
- this.ONE2 = bigint_constants_1.BI_POWS[36];
10
- }
11
- mulFloor(target, d) {
12
- // target.mul(d) / (10**18);
13
- return (target * d) / bigint_constants_1.BI_POWS[18];
14
- }
15
- mulCeil(target, d) {
16
- // _divCeil(target.mul(d), 10 ** 18);
17
- return this._divCeil(target * d, bigint_constants_1.BI_POWS[18]);
18
- }
19
- divFloor(target, d) {
20
- // target.mul(10 ** 18).div(d);
21
- return (target * bigint_constants_1.BI_POWS[18]) / d;
22
- }
23
- divCeil(target, d) {
24
- // _divCeil(target.mul(10 ** 18), d);
25
- return this._divCeil(target * bigint_constants_1.BI_POWS[18], d);
26
- }
27
- reciprocalFloor(target) {
28
- // uint256(10 ** 36).div(target);
29
- return bigint_constants_1.BI_POWS[36] / target;
30
- }
31
- reciprocalCeil(target) {
32
- // _divCeil(uint256(10 ** 36), target);
33
- return this._divCeil(bigint_constants_1.BI_POWS[36], target);
34
- }
35
- _divCeil(a, b) {
36
- const quotient = a / b;
37
- const remainder = a - quotient * b;
38
- return remainder > 0n ? quotient + 1n : quotient;
39
- }
40
- }
41
- exports.wooFiDecimalMath = new WooFiDecimalMath();
42
- //# sourceMappingURL=woo-fi-decimal-math.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"woo-fi-decimal-math.js","sourceRoot":"","sources":["../../../src/dex/woo-fi/woo-fi-decimal-math.ts"],"names":[],"mappings":";;;AAAA,6DAAiD;AAEjD,MAAM,gBAAgB;IAAtB;QACW,QAAG,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC;QAClB,QAAG,GAAG,EAAE,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC;QACvB,SAAI,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC;IAqC9B,CAAC;IAnCC,QAAQ,CAAC,MAAc,EAAE,CAAS;QAChC,4BAA4B;QAC5B,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,CAAS;QAC/B,qCAAqC;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,0BAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,CAAS;QAChC,+BAA+B;QAC/B,OAAO,CAAC,MAAM,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,CAAS;QAC/B,qCAAqC;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,0BAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,MAAc;QAC5B,iCAAiC;QACjC,OAAO,0BAAO,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,uCAAuC;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,0BAAO,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEO,QAAQ,CAAC,CAAS,EAAE,CAAS;QACnC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;QACnC,OAAO,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnD,CAAC;CACF;AAEY,QAAA,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
@@ -1,31 +0,0 @@
1
- import { PoolState, TokenInfo } from './types';
2
- import { wooFiDecimalMath } from './woo-fi-decimal-math';
3
- import { Address, Logger } from '../../types';
4
- export declare class WooFiMath {
5
- private readonly logger;
6
- private readonly _quoteToken;
7
- readonly dMath: typeof wooFiDecimalMath;
8
- private readonly _MIN_INPUT_DEFAULT;
9
- private readonly _MAX_INPUT_DEFAULT;
10
- state: PoolState;
11
- constructor(logger: Logger, _quoteToken: Address);
12
- querySellBase(baseToken: Address, baseAmounts: bigint[]): bigint[] | null;
13
- querySellQuote(baseToken: Address, quoteAmounts: bigint[]): bigint[] | null;
14
- protected _takeFee(amounts: bigint[], feeRate: bigint): bigint[];
15
- protected _getQuoteAmountSellBase(baseToken: Address, baseAmounts: bigint[]): bigint[];
16
- protected _getBaseAmountSellQuote(baseToken: string, quoteAmounts: bigint[]): bigint[];
17
- protected _getBoughtAmount(baseInfo: TokenInfo, quoteInfo: TokenInfo, p: bigint, k: bigint, isSellBase: boolean): {
18
- baseBought: bigint;
19
- quoteBought: bigint;
20
- };
21
- protected _getBaseAmountLowBaseSide(p: bigint, k: bigint, r: bigint, quoteAmount: bigint): bigint;
22
- protected _getQuoteAmountLowQuoteSide(p: bigint, k: bigint, r: bigint, baseAmount: bigint): bigint;
23
- protected _getBaseAmountLowQuoteSide(p: bigint, k: bigint, r: bigint, quoteAmount: bigint): bigint;
24
- protected _getQuoteAmountLowBaseSide(p: bigint, k: bigint, r: bigint, baseAmount: bigint): bigint;
25
- protected _autoUpdate(quoteTokenAddress: string, baseTokenAddress: string): void;
26
- private _checkInputAmount;
27
- private _checkSwapAmount;
28
- checkSwapPrice(price: bigint, fromToken: Address, toToken: Address): void;
29
- private _refPrice;
30
- private _boundForTokens;
31
- }
@@ -1,300 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WooFiMath = void 0;
4
- const woo_fi_decimal_math_1 = require("./woo-fi-decimal-math");
5
- const bigint_constants_1 = require("../../bigint-constants");
6
- const utils_1 = require("../../utils");
7
- const constants_1 = require("./constants");
8
- const constants_2 = require("../../constants");
9
- function handleMathError(e, logger) {
10
- if (e instanceof Error && e.message.startsWith('WooGuardian:')) {
11
- logger.warn('WooFi Guardian check Error:', e);
12
- return;
13
- }
14
- logger.error('Unexpected error in WooFi math:', e);
15
- }
16
- class WooFiMath {
17
- constructor(logger, _quoteToken) {
18
- this.logger = logger;
19
- this._quoteToken = _quoteToken;
20
- // dMath = decimalMath
21
- this.dMath = woo_fi_decimal_math_1.wooFiDecimalMath;
22
- this._MIN_INPUT_DEFAULT = bigint_constants_1.BI_POWS[16]; // 0.01 xToken
23
- this._MAX_INPUT_DEFAULT = bigint_constants_1.BI_POWS[20]; // 100 xToken
24
- this.state = constants_1.NULL_STATE;
25
- }
26
- querySellBase(baseToken, baseAmounts) {
27
- try {
28
- const _baseAmounts = baseAmounts.map(baseAmount => {
29
- try {
30
- this._checkInputAmount(baseToken, baseAmount);
31
- return baseAmount;
32
- }
33
- catch (e) {
34
- if (e instanceof Error &&
35
- e.message.includes('WooGuardian: inputAmount')) {
36
- return 0n;
37
- }
38
- throw e;
39
- }
40
- });
41
- this._autoUpdate(this._quoteToken, baseToken);
42
- const quoteAmounts = this._getQuoteAmountSellBase(baseToken, _baseAmounts);
43
- const feeRate = this.state.feeRates[baseToken];
44
- return this._takeFee(quoteAmounts, feeRate);
45
- }
46
- catch (e) {
47
- handleMathError(e, this.logger);
48
- return null;
49
- }
50
- }
51
- querySellQuote(baseToken, quoteAmounts) {
52
- try {
53
- let _quoteAmounts = quoteAmounts.map(quoteAmount => {
54
- try {
55
- this._checkInputAmount(this._quoteToken, quoteAmount);
56
- return quoteAmount;
57
- }
58
- catch (e) {
59
- if (e instanceof Error &&
60
- e.message.startsWith('Error message: WooGuardian: inputAmount')) {
61
- return 0n;
62
- }
63
- throw e;
64
- }
65
- });
66
- this._autoUpdate(this._quoteToken, baseToken);
67
- const feeRate = this.state.feeRates[baseToken];
68
- _quoteAmounts = this._takeFee(_quoteAmounts, feeRate);
69
- return this._getBaseAmountSellQuote(baseToken, _quoteAmounts);
70
- }
71
- catch (e) {
72
- handleMathError(e, this.logger);
73
- return null;
74
- }
75
- }
76
- _takeFee(amounts, feeRate) {
77
- return amounts.map(amount => {
78
- const lpFee = this.dMath.mulCeil(amount, feeRate);
79
- return amount === 0n ? 0n : amount - lpFee;
80
- });
81
- }
82
- _getQuoteAmountSellBase(baseToken, baseAmounts) {
83
- const quoteInfo = this.state.tokenInfos[this._quoteToken];
84
- const baseInfo = this.state.tokenInfos[baseToken];
85
- let { priceNow: p, spreadNow: s, coeffNow: k, } = this.state.tokenStates[baseToken];
86
- this.checkSwapPrice(p, baseToken, this._quoteToken);
87
- // price: p * (1 - s / 2)
88
- p = this.dMath.mulFloor(p, this.dMath.ONE - this.dMath.divCeil(s, this.dMath.TWO));
89
- const { baseBought, quoteBought } = this._getBoughtAmount(baseInfo, quoteInfo, p, k, true);
90
- return baseAmounts.map(baseAmount => {
91
- if (baseAmount === 0n)
92
- return 0n;
93
- let quoteAmount;
94
- if (baseBought > 0n) {
95
- const quoteSold = this._getQuoteAmountLowBaseSide(p, k, baseInfo.R, baseBought);
96
- if (baseAmount > baseBought) {
97
- const newBaseSold = baseAmount - baseBought;
98
- quoteAmount =
99
- quoteSold +
100
- this._getQuoteAmountLowQuoteSide(p, k, this.dMath.ONE, newBaseSold);
101
- }
102
- else {
103
- const newBaseBought = baseBought - baseAmount;
104
- quoteAmount =
105
- quoteSold -
106
- this._getQuoteAmountLowBaseSide(p, k, baseInfo.R, newBaseBought);
107
- }
108
- }
109
- else {
110
- const baseSold = this._getBaseAmountLowQuoteSide(p, k, this.dMath.ONE, quoteBought);
111
- const newBaseSold = baseAmount + baseSold;
112
- const newQuoteBought = this._getQuoteAmountLowQuoteSide(p, k, this.dMath.ONE, newBaseSold);
113
- quoteAmount =
114
- newQuoteBought > quoteBought ? newQuoteBought - quoteBought : 0n;
115
- }
116
- this._checkSwapAmount(baseToken, this._quoteToken, baseAmount, quoteAmount);
117
- if (quoteAmount > this.state.wooPPBalances[this._quoteToken]) {
118
- // require(quoteAmount <= IERC20(quoteToken).balanceOf(address(this)), 'WooPP: INSUFF_QUOTE');
119
- return 0n;
120
- }
121
- return quoteAmount;
122
- });
123
- }
124
- _getBaseAmountSellQuote(baseToken, quoteAmounts) {
125
- const quoteInfo = this.state.tokenInfos[this._quoteToken];
126
- const baseInfo = this.state.tokenInfos[baseToken];
127
- let { priceNow: p, spreadNow: s, coeffNow: k, } = this.state.tokenStates[baseToken];
128
- this.checkSwapPrice(p, baseToken, this._quoteToken);
129
- // price: p * (1 + s / 2)
130
- p = this.dMath.mulCeil(p, this.dMath.ONE + this.dMath.divCeil(s, this.dMath.TWO));
131
- const { baseBought, quoteBought } = this._getBoughtAmount(baseInfo, quoteInfo, p, k, false);
132
- return quoteAmounts.map(quoteAmount => {
133
- if (quoteAmount === 0n)
134
- return 0n;
135
- let baseAmount;
136
- if (quoteBought > 0) {
137
- const baseSold = this._getBaseAmountLowQuoteSide(p, k, baseInfo.R, quoteBought);
138
- if (quoteAmount > quoteBought) {
139
- const newQuoteSold = quoteAmount - quoteBought;
140
- baseAmount =
141
- baseSold +
142
- this._getBaseAmountLowBaseSide(p, k, this.dMath.ONE, newQuoteSold);
143
- }
144
- else {
145
- const newQuoteBought = quoteBought - quoteAmount;
146
- baseAmount =
147
- baseSold -
148
- this._getBaseAmountLowQuoteSide(p, k, baseInfo.R, newQuoteBought);
149
- }
150
- }
151
- else {
152
- const quoteSold = this._getQuoteAmountLowBaseSide(p, k, this.dMath.ONE, baseBought);
153
- const newQuoteSold = quoteAmount + quoteSold;
154
- const newBaseBought = this._getBaseAmountLowBaseSide(p, k, this.dMath.ONE, newQuoteSold);
155
- baseAmount =
156
- newBaseBought > baseBought ? newBaseBought - baseBought : 0n;
157
- }
158
- this._checkSwapAmount(this._quoteToken, baseToken, quoteAmount, baseAmount);
159
- if (baseAmount > this.state.wooPPBalances[baseToken]) {
160
- // require(baseAmount <= IERC20(baseToken).balanceOf(address(this)), 'WooPP: INSUFF_BASE');
161
- return 0n;
162
- }
163
- return baseAmount;
164
- });
165
- }
166
- _getBoughtAmount(baseInfo, quoteInfo, p, k, isSellBase) {
167
- let baseBought = 0n;
168
- let quoteBought = 0n;
169
- let baseSold = 0n;
170
- if (baseInfo.reserve < baseInfo.target) {
171
- baseBought = baseInfo.target - baseInfo.reserve;
172
- }
173
- else {
174
- baseSold = baseInfo.reserve - baseInfo.target;
175
- }
176
- let quoteSold = 0n;
177
- if (quoteInfo.reserve < quoteInfo.target) {
178
- quoteBought = quoteInfo.target - quoteInfo.reserve;
179
- }
180
- else {
181
- quoteSold = quoteInfo.reserve - quoteInfo.target;
182
- }
183
- if (this.dMath.mulCeil(baseSold, p) > quoteSold) {
184
- baseSold = baseSold - this.dMath.divFloor(quoteSold, p);
185
- quoteSold = 0n;
186
- }
187
- else {
188
- quoteSold = quoteSold - this.dMath.mulCeil(baseSold, p);
189
- baseSold = 0n;
190
- }
191
- const virtualBaseBought = this._getBaseAmountLowBaseSide(p, k, this.dMath.ONE, quoteSold);
192
- if (isSellBase === virtualBaseBought < baseBought) {
193
- baseBought = virtualBaseBought;
194
- }
195
- const virtualQuoteBought = this._getQuoteAmountLowQuoteSide(p, k, this.dMath.ONE, baseSold);
196
- if (isSellBase === virtualQuoteBought > quoteBought) {
197
- quoteBought = virtualQuoteBought;
198
- }
199
- return { baseBought, quoteBought };
200
- }
201
- _getBaseAmountLowBaseSide(p, k, r, quoteAmount) {
202
- // priceFactor = 1 + k * quoteAmount * r;
203
- const priceFactor = this.dMath.ONE +
204
- this.dMath.mulCeil(this.dMath.mulCeil(k, quoteAmount), r);
205
- // quoteAmount / p / priceFactor;
206
- return this.dMath.divFloor(this.dMath.divFloor(quoteAmount, p), priceFactor);
207
- }
208
- _getQuoteAmountLowQuoteSide(p, k, r, baseAmount) {
209
- // priceFactor = 1 + k * baseAmount * p * r;
210
- const priceFactor = this.dMath.ONE +
211
- this.dMath.mulCeil(this.dMath.mulCeil(this.dMath.mulCeil(k, baseAmount), p), r);
212
- // baseAmount * p / priceFactor;
213
- return this.dMath.divFloor(this.dMath.mulFloor(baseAmount, p), priceFactor);
214
- }
215
- _getBaseAmountLowQuoteSide(p, k, r, quoteAmount) {
216
- // priceFactor = (1 - k * quoteAmount * r);
217
- const priceFactor = this.dMath.ONE -
218
- this.dMath.mulFloor(this.dMath.mulFloor(k, quoteAmount), r);
219
- // quoteAmount / p / priceFactor;
220
- return this.dMath.divFloor(this.dMath.divFloor(quoteAmount, p), priceFactor);
221
- }
222
- _getQuoteAmountLowBaseSide(p, k, r, baseAmount) {
223
- // priceFactor = 1 - k * baseAmount * p * r;
224
- const priceFactor = this.dMath.ONE -
225
- this.dMath.mulFloor(this.dMath.mulFloor(this.dMath.mulFloor(k, baseAmount), p), r);
226
- // baseAmount * p / priceFactor;
227
- return this.dMath.divFloor(this.dMath.mulFloor(baseAmount, p), priceFactor);
228
- }
229
- _autoUpdate(quoteTokenAddress, baseTokenAddress) {
230
- const quoteInfo = this.state.tokenInfos[quoteTokenAddress];
231
- const baseInfo = this.state.tokenInfos[baseTokenAddress];
232
- if (this.state.oracleTimestamp !== baseInfo.lastResetTimestamp) {
233
- baseInfo.target =
234
- baseInfo.threshold > baseInfo.reserve
235
- ? baseInfo.threshold
236
- : baseInfo.reserve;
237
- baseInfo.lastResetTimestamp = this.state.oracleTimestamp;
238
- }
239
- if (this.state.oracleTimestamp !== quoteInfo.lastResetTimestamp) {
240
- quoteInfo.target =
241
- quoteInfo.threshold > quoteInfo.reserve
242
- ? quoteInfo.threshold
243
- : quoteInfo.reserve;
244
- quoteInfo.lastResetTimestamp = this.state.oracleTimestamp;
245
- }
246
- }
247
- _checkInputAmount(token, inputAmount) {
248
- (0, utils_1._require)(inputAmount < bigint_constants_1.BI_MAX_UINT96, `WooGuardian: inputAmount_uint96_OVERFLOW in _checkInputAmount for ${token}`);
249
- const info = this.state.guardian.refInfos[token];
250
- const minInputAmount = info.minInputAmount != 0n ? info.minInputAmount : this._MIN_INPUT_DEFAULT;
251
- const maxInputAmount = info.maxInputAmount != 0n ? info.maxInputAmount : this._MAX_INPUT_DEFAULT;
252
- (0, utils_1._require)(inputAmount >= minInputAmount, `WooGuardian: inputAmount_LTM in _checkInputAmount for ${token}`);
253
- (0, utils_1._require)(inputAmount <= maxInputAmount, `WooGuardian: inputAmount_GTM in _checkInputAmount for ${token}`);
254
- }
255
- _checkSwapAmount(fromToken, toToken, fromAmount, toAmount) {
256
- if (this.state.guardian.refInfos[fromToken].chainlinkRefOracle ===
257
- constants_2.NULL_ADDRESS ||
258
- this.state.guardian.refInfos[toToken].chainlinkRefOracle === constants_2.NULL_ADDRESS) {
259
- return;
260
- }
261
- const refPrice = this._refPrice(fromToken, toToken);
262
- const refToAmount = this.dMath.mulFloor(fromAmount, refPrice);
263
- const bound = this._boundForTokens(fromToken, toToken);
264
- (0, utils_1._require)(this.dMath.mulFloor(refToAmount, bigint_constants_1.BI_POWS[18] - bound) <= toAmount &&
265
- toAmount <= this.dMath.mulCeil(refToAmount, bigint_constants_1.BI_POWS[18] + bound), `WooGuardian: TO_AMOUNT_UNRELIABLE in _checkSwapAmount for ${toToken}`);
266
- }
267
- checkSwapPrice(price, fromToken, toToken) {
268
- if (this.state.guardian.refInfos[fromToken].chainlinkRefOracle ===
269
- constants_2.NULL_ADDRESS ||
270
- this.state.guardian.refInfos[toToken].chainlinkRefOracle === constants_2.NULL_ADDRESS) {
271
- return;
272
- }
273
- const refPrice = this._refPrice(fromToken, toToken);
274
- const bound = this._boundForTokens(fromToken, toToken);
275
- (0, utils_1._require)(this.dMath.mulFloor(refPrice, bigint_constants_1.BI_POWS[18] - bound) <= price &&
276
- price <= this.dMath.mulCeil(refPrice, bigint_constants_1.BI_POWS[18] + bound), `WooGuardian: PRICE_UNRELIABLE in checkSwapPrice fromToken=${fromToken} and toToken=${toToken}`);
277
- }
278
- _refPrice(fromToken, toToken) {
279
- const baseInfo = this.state.guardian.refInfos[fromToken];
280
- const quoteInfo = this.state.guardian.refInfos[toToken];
281
- (0, utils_1._require)(baseInfo.chainlinkRefOracle !== constants_2.NULL_ADDRESS, `WooGuardian: fromToken_RefOracle_INVALID: ${fromToken}`);
282
- (0, utils_1._require)(quoteInfo.chainlinkRefOracle !== constants_2.NULL_ADDRESS, `WooGuardian: toToken_RefOracle_INVALID: ${toToken}`);
283
- const { answer: rawBaseRefPrice } = this.state.chainlink.latestRoundDatas[baseInfo.chainlinkRefOracle];
284
- (0, utils_1._require)(rawBaseRefPrice >= 0, `WooGuardian: INVALID_CHAINLINK_PRICE in _refPrice for ${fromToken}`);
285
- const { answer: rawQuoteRefPrice } = this.state.chainlink.latestRoundDatas[quoteInfo.chainlinkRefOracle];
286
- (0, utils_1._require)(rawQuoteRefPrice >= 0, `WooGuardian: INVALID_CHAINLINK_QUOTE_PRICE in _refPrice for ${toToken}`);
287
- const baseRefPrice = rawBaseRefPrice * baseInfo.refPriceFixCoeff;
288
- const quoteRefPrice = rawQuoteRefPrice * quoteInfo.refPriceFixCoeff;
289
- return this.dMath.divFloor(baseRefPrice, quoteRefPrice);
290
- }
291
- _boundForTokens(token1, token2) {
292
- const info1 = this.state.guardian.refInfos[token1];
293
- const bound1 = info1.bound !== 0n ? info1.bound : this.state.guardian.globalBound;
294
- const info2 = this.state.guardian.refInfos[token2];
295
- const bound2 = info2.bound != 0n ? info2.bound : this.state.guardian.globalBound;
296
- return bound1 > bound2 ? bound1 : bound2;
297
- }
298
- }
299
- exports.WooFiMath = WooFiMath;
300
- //# sourceMappingURL=woo-fi-math.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"woo-fi-math.js","sourceRoot":"","sources":["../../../src/dex/woo-fi/woo-fi-math.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- import { Interface, Result } from '@ethersproject/abi';
2
- import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger } from '../../types';
3
- import { SwapSide, Network } from '../../constants';
4
- import { IDex } from '../../dex/idex';
5
- import { IDexHelper } from '../../dex-helper/idex-helper';
6
- import { DexParams, PoolState, WooFiData } from './types';
7
- import { SimpleExchange } from '../simple-exchange';
8
- import { WooFiMath } from './woo-fi-math';
9
- export declare class WooFi extends SimpleExchange implements IDex<WooFiData> {
10
- protected network: Network;
11
- protected dexHelper: IDexHelper;
12
- protected adapters: import("../../types").AdapterMappings;
13
- readonly config: DexParams;
14
- readonly math: WooFiMath;
15
- latestState: PoolState | null;
16
- latestBlockNumber: number;
17
- vaultUSDBalance: number;
18
- tokenByAddress: Record<Address, Token>;
19
- private _refInfos;
20
- private _encodedStateRequestCalldata?;
21
- static readonly ifaces: {
22
- PP: Interface;
23
- fee: Interface;
24
- oracle: Interface;
25
- guardian: Interface;
26
- chainlink: Interface;
27
- erc20BalanceOf: Interface;
28
- };
29
- readonly hasConstantPriceLargeAmounts = false;
30
- readonly needWrapNative = true;
31
- readonly isFeeOnTransferSupported = false;
32
- readonly quoteTokenAddress: Address;
33
- static dexKeysWithNetwork: {
34
- key: string;
35
- networks: Network[];
36
- }[];
37
- logger: Logger;
38
- constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: import("../../types").AdapterMappings, config?: DexParams);
39
- private _toLowerForAllConfigAddresses;
40
- private _getRefInfos;
41
- get baseTokens(): Token[];
42
- get isRefInfosEmpty(): boolean;
43
- protected _fillTokenInfoState(state: PoolState, address: string, values: Result): void;
44
- private _readChanLinkResponse;
45
- protected _getStateRequestCallData(): {
46
- target: string;
47
- callData: string;
48
- }[];
49
- private _fetchStateForBlockNumber;
50
- initializePricing(blockNumber: number): Promise<void>;
51
- getAdapters(side: SwapSide): {
52
- name: string;
53
- index: number;
54
- }[] | null;
55
- getIdentifier(isSrcQuote: boolean): string;
56
- getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
57
- getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<WooFiData>>;
58
- getCalldataGasCost(poolPrices: PoolPrices<WooFiData>): number | number[];
59
- getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: WooFiData, side: SwapSide): AdapterExchangeParam;
60
- getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: WooFiData, side: SwapSide): Promise<SimpleExchangeParam>;
61
- updatePoolState(): Promise<void>;
62
- getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
63
- getState(blockNumber?: number): Promise<PoolState>;
64
- private _identifyQuote;
65
- }