@paraswap/dex-lib 2.12.13 → 2.12.15-friendly-local-deadline.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 (67) hide show
  1. package/build/dex/maverick-v1/maverick-v1.js +4 -4
  2. package/build/dex/maverick-v1/maverick-v1.js.map +1 -1
  3. package/build/dex/maverick-v1/types.d.ts +2 -3
  4. package/build/dex/maverick-v1/types.js.map +1 -1
  5. package/build/dex/platypus/platypus.js +3 -3
  6. package/build/dex/platypus/platypus.js.map +1 -1
  7. package/build/dex/shell.d.ts +1 -1
  8. package/build/dex/shell.js +1 -1
  9. package/build/dex/shell.js.map +1 -1
  10. package/build/dex/simple-exchange.d.ts +1 -1
  11. package/build/dex/simple-exchange.js +9 -3
  12. package/build/dex/simple-exchange.js.map +1 -1
  13. package/build/dex/trader-joe-v2.d.ts +1 -2
  14. package/build/dex/trader-joe-v2.js +3 -3
  15. package/build/dex/trader-joe-v2.js.map +1 -1
  16. package/build/dex/uniswap-v3/types.d.ts +2 -2
  17. package/build/dex/uniswap-v3/uniswap-v3.js +3 -3
  18. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  19. package/build/dex/uniswap-v3.d.ts +2 -3
  20. package/build/dex/uniswap-v3.js +5 -5
  21. package/build/dex/uniswap-v3.js.map +1 -1
  22. package/build/dex/woo-fi-v2/constants.d.ts +5 -1
  23. package/build/dex/woo-fi-v2/constants.js +8 -2
  24. package/build/dex/woo-fi-v2/constants.js.map +1 -1
  25. package/build/dex/woo-fi-v2/woo-fi-v2.js +12 -1
  26. package/build/dex/woo-fi-v2/woo-fi-v2.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/dex/maverick-v1/maverick-v1.ts +4 -4
  29. package/src/dex/maverick-v1/types.ts +2 -3
  30. package/src/dex/platypus/platypus.ts +3 -3
  31. package/src/dex/shell.ts +2 -3
  32. package/src/dex/simple-exchange.ts +10 -3
  33. package/src/dex/trader-joe-v2.ts +4 -5
  34. package/src/dex/uniswap-v3/types.ts +2 -2
  35. package/src/dex/uniswap-v3/uniswap-v3.ts +3 -3
  36. package/src/dex/uniswap-v3.ts +7 -8
  37. package/src/dex/woo-fi-v2/constants.ts +8 -2
  38. package/src/dex/woo-fi-v2/woo-fi-v2.ts +13 -1
  39. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  40. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  41. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  42. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  43. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  44. package/build/dex/hashflow/rate-fetcher.d.ts +0 -14
  45. package/build/dex/hashflow/rate-fetcher.js +0 -37
  46. package/build/dex/hashflow/rate-fetcher.js.map +0 -1
  47. package/build/dex/hashflow/validators.d.ts +0 -3
  48. package/build/dex/hashflow/validators.js +0 -12
  49. package/build/dex/hashflow/validators.js.map +0 -1
  50. package/build/dex/test-dex/config.d.ts +0 -4
  51. package/build/dex/test-dex/config.js +0 -15
  52. package/build/dex/test-dex/config.js.map +0 -1
  53. package/build/dex/test-dex/test-dex-pool.d.ts +0 -39
  54. package/build/dex/test-dex/test-dex-pool.js +0 -63
  55. package/build/dex/test-dex/test-dex-pool.js.map +0 -1
  56. package/build/dex/test-dex/test-dex.d.ts +0 -37
  57. package/build/dex/test-dex/test-dex.js +0 -126
  58. package/build/dex/test-dex/test-dex.js.map +0 -1
  59. package/build/dex/test-dex/types.d.ts +0 -6
  60. package/build/dex/test-dex/types.js +0 -3
  61. package/build/dex/test-dex/types.js.map +0 -1
  62. package/build/dex/woo-fi-v2/woo-fi-math.d.ts +0 -16
  63. package/build/dex/woo-fi-v2/woo-fi-math.js +0 -137
  64. package/build/dex/woo-fi-v2/woo-fi-math.js.map +0 -1
  65. package/build/lib/validators.d.ts +0 -7
  66. package/build/lib/validators.js +0 -27
  67. package/build/lib/validators.js.map +0 -1
@@ -1,137 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WooFiV2Math = void 0;
4
- const bigint_constants_1 = require("../../bigint-constants");
5
- const constants_1 = require("./constants");
6
- function handleMathError(e, logger) {
7
- if (e instanceof Error && e.message.startsWith('WooGuardian:')) {
8
- logger.warn('WooFi Guardian check Error:', e);
9
- return;
10
- }
11
- logger.error('Unexpected error in WooFi math:', e);
12
- }
13
- function max(a, b) {
14
- return a > b ? a : b;
15
- }
16
- class WooFiV2Math {
17
- constructor(logger, _quoteToken) {
18
- this.logger = logger;
19
- this._quoteToken = _quoteToken;
20
- this.state = constants_1.NULL_STATE;
21
- }
22
- query(fromToken, toToken, fromAmounts) {
23
- try {
24
- if (fromToken === this._quoteToken) {
25
- return this._querySellQuote(toToken, fromAmounts);
26
- }
27
- else if (toToken === this._quoteToken) {
28
- return this._querySellBase(fromToken, fromAmounts);
29
- }
30
- else {
31
- return this._queryBaseToBase(fromToken, toToken, fromAmounts);
32
- }
33
- }
34
- catch (e) {
35
- handleMathError(e, this.logger);
36
- return null;
37
- }
38
- }
39
- _querySellBase(baseToken, baseAmounts) {
40
- try {
41
- const _state = this.state.tokenStates[baseToken];
42
- let quoteAmounts = this._calcQuoteAmountSellBase(baseToken, baseAmounts, _state);
43
- quoteAmounts = quoteAmounts.map(amount => {
44
- return amount <= this.state.tokenInfos[this._quoteToken].reserve
45
- ? amount
46
- : 0n;
47
- });
48
- const feeRate = this.state.tokenInfos[baseToken].feeRate;
49
- return this._takeFee(quoteAmounts, feeRate);
50
- }
51
- catch (e) {
52
- handleMathError(e, this.logger);
53
- return null;
54
- }
55
- }
56
- _querySellQuote(baseToken, quoteAmounts) {
57
- try {
58
- const feeRate = this.state.tokenInfos[baseToken].feeRate;
59
- quoteAmounts = this._takeFee(quoteAmounts, feeRate);
60
- const _state = this.state.tokenStates[baseToken];
61
- let toAmounts = this._calcBaseAmountSellQuote(baseToken, quoteAmounts, _state);
62
- const baseReserve = this.state.tokenInfos[baseToken].reserve;
63
- return toAmounts.map(amount => {
64
- return amount >= baseReserve ? amount : 0n;
65
- });
66
- }
67
- catch (e) {
68
- handleMathError(e, this.logger);
69
- return null;
70
- }
71
- }
72
- _queryBaseToBase(baseToken1, baseToken2, base1Amounts) {
73
- try {
74
- let state1 = this.state.tokenStates[baseToken1];
75
- let state2 = this.state.tokenStates[baseToken1];
76
- const feeRate1 = this.state.tokenInfos[baseToken1].feeRate;
77
- const feeRate2 = this.state.tokenInfos[baseToken2].feeRate;
78
- const spread = max(state1.spread, state2.spread) / 2n;
79
- const feeRate = max(feeRate1, feeRate2);
80
- state1.spread = spread;
81
- state2.spread = spread;
82
- let quoteAmounts = this._calcQuoteAmountSellBase(baseToken1, base1Amounts, state1);
83
- quoteAmounts = this._takeFeeAndCheckReserve(quoteAmounts, feeRate);
84
- let toAmounts = this._calcBaseAmountSellQuote(baseToken2, quoteAmounts, state2);
85
- return toAmounts.map(toAmount => {
86
- return toAmount <= this.state.tokenInfos[baseToken2].reserve
87
- ? toAmount
88
- : 0n;
89
- });
90
- }
91
- catch (e) {
92
- handleMathError(e, this.logger);
93
- return null;
94
- }
95
- }
96
- _takeFeeAndCheckReserve(amounts, feeRate) {
97
- return amounts.map(amount => {
98
- if (amount === 0n)
99
- return 0n;
100
- const lpFee = (amount * feeRate) / bigint_constants_1.BI_POWS[5];
101
- const reserve = this.state.tokenInfos[this._quoteToken].reserve;
102
- return lpFee > reserve ? 0n : amount - lpFee;
103
- });
104
- }
105
- _takeFee(amounts, feeRate) {
106
- return amounts.map(amount => {
107
- const lpFee = (amount * feeRate) / bigint_constants_1.BI_POWS[5];
108
- return amount === 0n ? 0n : amount - lpFee;
109
- });
110
- }
111
- _calcQuoteAmountSellBase(baseToken, baseAmounts, state) {
112
- let { priceDec, quoteDec, baseDec } = this.state.decimals[baseToken];
113
- return baseAmounts.map(baseAmount => {
114
- if (baseAmount === 0n)
115
- return 0n;
116
- const coef = bigint_constants_1.BI_POWS[18] -
117
- (state.coeff * baseAmount * state.price) / baseDec / priceDec -
118
- state.spread;
119
- return ((((baseAmount * quoteDec * state.price) / priceDec) * coef) /
120
- bigint_constants_1.BI_POWS[18] /
121
- baseDec);
122
- });
123
- }
124
- _calcBaseAmountSellQuote(baseToken, quoteAmounts, state) {
125
- let { priceDec, quoteDec, baseDec } = this.state.decimals[baseToken];
126
- return quoteAmounts.map(quoteAmount => {
127
- if (quoteAmount === 0n)
128
- return 0n;
129
- const coef = bigint_constants_1.BI_POWS[18] - (quoteAmount * state.coeff) / quoteDec - state.spread;
130
- return ((((quoteAmount * baseDec * priceDec) / state.price) * coef) /
131
- bigint_constants_1.BI_POWS[18] /
132
- quoteDec);
133
- });
134
- }
135
- }
136
- exports.WooFiV2Math = WooFiV2Math;
137
- //# sourceMappingURL=woo-fi-math.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"woo-fi-math.js","sourceRoot":"","sources":["../../../src/dex/woo-fi-v2/woo-fi-math.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import joi from 'joi';
2
- export declare class ValidationError extends Error {
3
- readonly rawMessage: string;
4
- readonly key?: string;
5
- constructor(message: string, key?: string);
6
- }
7
- export declare const validateAndCast: <T>(value: unknown, schema: joi.Schema, name?: string | undefined) => T;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateAndCast = exports.ValidationError = void 0;
4
- class ValidationError extends Error {
5
- constructor(message, key) {
6
- super(key !== undefined ? `'${key}': ${message}` : message);
7
- this.rawMessage = message;
8
- this.key = key;
9
- }
10
- }
11
- exports.ValidationError = ValidationError;
12
- const validateAndCast = (value, schema, name) => {
13
- const { error, value: parsed } = schema.validate(value);
14
- if (error !== undefined) {
15
- let message;
16
- if (name) {
17
- message = `"${name}" ${error.message.slice(error.message.indexOf('must'))}`;
18
- }
19
- else {
20
- message = error.message;
21
- }
22
- throw new ValidationError(message);
23
- }
24
- return parsed;
25
- };
26
- exports.validateAndCast = validateAndCast;
27
- //# sourceMappingURL=validators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/lib/validators.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAgB,SAAQ,KAAK;IAKxC,YAAY,OAAe,EAAE,GAAY;QACvC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;AAVD,0CAUC;AAEM,MAAM,eAAe,GAAG,CAC7B,KAAc,EACd,MAAkB,EAClB,IAAa,EACV,EAAE;IACL,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,IAAI,OAAO,CAAC;QACZ,IAAI,IAAI,EAAE;YACR,OAAO,GAAG,IAAI,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CACxC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAC9B,EAAE,CAAC;SACL;aAAM;YACL,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;SACzB;QACD,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;KACpC;IACD,OAAO,MAAW,CAAC;AACrB,CAAC,CAAC;AAnBW,QAAA,eAAe,mBAmB1B"}