@paraswap/dex-lib 2.14.4 → 2.14.6-3pool-enable.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 (62) hide show
  1. package/build/abi/maverick/pool.json +913 -0
  2. package/build/abi/maverick/router.json +703 -0
  3. package/build/dex/curve-v1/config.js +19 -19
  4. package/build/dex/curve-v1/config.js.map +1 -1
  5. package/build/dex/curve-v1-factory/config.js +2 -5
  6. package/build/dex/curve-v1-factory/config.js.map +1 -1
  7. package/build/dex/maverick/config.d.ts +4 -0
  8. package/build/dex/maverick/config.js +20 -0
  9. package/build/dex/maverick/config.js.map +1 -0
  10. package/build/dex/maverick/maverick-math/maverick-pool-math.d.ts +67 -0
  11. package/build/dex/maverick/maverick-math/maverick-pool-math.js +406 -0
  12. package/build/dex/maverick/maverick-math/maverick-pool-math.js.map +1 -0
  13. package/build/dex/maverick/maverick-math/maverick-sol-math.d.ts +17 -0
  14. package/build/dex/maverick/maverick-math/maverick-sol-math.js +139 -0
  15. package/build/dex/maverick/maverick-math/maverick-sol-math.js.map +1 -0
  16. package/build/dex/maverick/maverick-pool.d.ts +41 -0
  17. package/build/dex/maverick/maverick-pool.js +130 -0
  18. package/build/dex/maverick/maverick-pool.js.map +1 -0
  19. package/build/dex/maverick/maverick.d.ts +42 -0
  20. package/build/dex/maverick/maverick.js +174 -0
  21. package/build/dex/maverick/maverick.js.map +1 -0
  22. package/build/dex/maverick/subgraph-queries.d.ts +4 -0
  23. package/build/dex/maverick/subgraph-queries.js +114 -0
  24. package/build/dex/maverick/subgraph-queries.js.map +1 -0
  25. package/build/dex/maverick/types.d.ts +46 -0
  26. package/build/dex/{test-dex → maverick}/types.js.map +1 -1
  27. package/build/dex/maverick-v1/maverick-v1.js +53 -47
  28. package/build/dex/maverick-v1/maverick-v1.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/dex/curve-v1/config.ts +19 -19
  31. package/src/dex/curve-v1/curve-v1-e2e.test.ts +89 -0
  32. package/src/dex/curve-v1-factory/config.ts +2 -5
  33. package/src/dex/maverick-v1/maverick-v1.ts +75 -65
  34. package/tests/constants-e2e.ts +10 -0
  35. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  36. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  37. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  38. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  39. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  40. package/build/dex/hashflow/rate-fetcher.d.ts +0 -14
  41. package/build/dex/hashflow/rate-fetcher.js +0 -37
  42. package/build/dex/hashflow/rate-fetcher.js.map +0 -1
  43. package/build/dex/hashflow/validators.d.ts +0 -3
  44. package/build/dex/hashflow/validators.js +0 -12
  45. package/build/dex/hashflow/validators.js.map +0 -1
  46. package/build/dex/test-dex/config.d.ts +0 -4
  47. package/build/dex/test-dex/config.js +0 -15
  48. package/build/dex/test-dex/config.js.map +0 -1
  49. package/build/dex/test-dex/test-dex-pool.d.ts +0 -39
  50. package/build/dex/test-dex/test-dex-pool.js +0 -63
  51. package/build/dex/test-dex/test-dex-pool.js.map +0 -1
  52. package/build/dex/test-dex/test-dex.d.ts +0 -37
  53. package/build/dex/test-dex/test-dex.js +0 -126
  54. package/build/dex/test-dex/test-dex.js.map +0 -1
  55. package/build/dex/test-dex/types.d.ts +0 -6
  56. package/build/dex/woo-fi-v2/woo-fi-math.d.ts +0 -16
  57. package/build/dex/woo-fi-v2/woo-fi-math.js +0 -137
  58. package/build/dex/woo-fi-v2/woo-fi-math.js.map +0 -1
  59. package/build/lib/validators.d.ts +0 -7
  60. package/build/lib/validators.js +0 -27
  61. package/build/lib/validators.js.map +0 -1
  62. /package/build/dex/{test-dex → maverick}/types.js +0 -0
@@ -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"}
File without changes