@paraswap/dex-lib 4.6.21 → 4.6.22
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/build/abi/PendleRouterStatic.json +19 -0
- package/build/abi/apex-defi/ApexDefiFactory.abi.json +1749 -0
- package/build/abi/apex-defi/ApexDefiRouter.abi.json +1120 -0
- package/build/abi/apex-defi/ApexDefiToken.abi.json +229 -0
- package/build/abi/apex-defi/ApexDefiWrapper.abi.json +92 -0
- package/build/abi/apex-defi/ApexDefiWrapperFactory.abi.json +1107 -0
- package/build/abi/ekubo/router.json +416 -398
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.d.ts +2 -3
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js +53 -26
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js.map +1 -1
- package/build/dex/aave-pt-to-underlying/config.js +3 -0
- package/build/dex/aave-pt-to-underlying/config.js.map +1 -1
- package/build/dex/aave-pt-to-underlying/types.d.ts +1 -0
- package/build/dex/apex-defi/apex-defi-factory.d.ts +26 -0
- package/build/dex/apex-defi/apex-defi-factory.js +53 -0
- package/build/dex/apex-defi/apex-defi-factory.js.map +1 -0
- package/build/dex/apex-defi/apex-defi-pool.d.ts +55 -0
- package/build/dex/apex-defi/apex-defi-pool.js +247 -0
- package/build/dex/apex-defi/apex-defi-pool.js.map +1 -0
- package/build/dex/apex-defi/apex-defi-wrapper-factory.d.ts +57 -0
- package/build/dex/apex-defi/apex-defi-wrapper-factory.js +250 -0
- package/build/dex/apex-defi/apex-defi-wrapper-factory.js.map +1 -0
- package/build/dex/apex-defi/apex-defi.d.ts +97 -0
- package/build/dex/apex-defi/apex-defi.js +1021 -0
- package/build/dex/apex-defi/apex-defi.js.map +1 -0
- package/build/dex/apex-defi/config.d.ts +4 -0
- package/build/dex/apex-defi/config.js +138 -0
- package/build/dex/apex-defi/config.js.map +1 -0
- package/build/dex/apex-defi/types.d.ts +32 -0
- package/build/dex/apex-defi/types.js +3 -0
- package/build/dex/apex-defi/types.js.map +1 -0
- package/build/dex/apex-defi/utils.d.ts +46 -0
- package/build/dex/apex-defi/utils.js +133 -0
- package/build/dex/apex-defi/utils.js.map +1 -0
- package/build/dex/ekubo/config.d.ts +2 -1
- package/build/dex/ekubo/config.js +6 -4
- package/build/dex/ekubo/config.js.map +1 -1
- package/build/dex/ekubo/ekubo.d.ts +13 -12
- package/build/dex/ekubo/ekubo.js +282 -234
- package/build/dex/ekubo/ekubo.js.map +1 -1
- package/build/dex/ekubo/pools/base.d.ts +6 -2
- package/build/dex/ekubo/pools/base.js +120 -113
- package/build/dex/ekubo/pools/base.js.map +1 -1
- package/build/dex/ekubo/pools/full-range.d.ts +6 -5
- package/build/dex/ekubo/pools/full-range.js +50 -40
- package/build/dex/ekubo/pools/full-range.js.map +1 -1
- package/build/dex/ekubo/pools/math/swap.js +3 -3
- package/build/dex/ekubo/pools/math/swap.js.map +1 -1
- package/build/dex/ekubo/pools/math/tick.d.ts +1 -0
- package/build/dex/ekubo/pools/math/tick.js +9 -4
- package/build/dex/ekubo/pools/math/tick.js.map +1 -1
- package/build/dex/ekubo/pools/oracle.d.ts +5 -6
- package/build/dex/ekubo/pools/oracle.js +8 -10
- package/build/dex/ekubo/pools/oracle.js.map +1 -1
- package/build/dex/ekubo/pools/twamm.d.ts +5 -3
- package/build/dex/ekubo/pools/twamm.js +102 -94
- package/build/dex/ekubo/pools/twamm.js.map +1 -1
- package/build/dex/ekubo/pools/utils.d.ts +8 -7
- package/build/dex/ekubo/pools/utils.js +31 -18
- package/build/dex/ekubo/pools/utils.js.map +1 -1
- package/build/dex/ekubo/types.d.ts +1 -0
- package/build/dex/ekubo/utils.d.ts +0 -1
- package/build/dex/ekubo/utils.js +0 -4
- package/build/dex/ekubo/utils.js.map +1 -1
- package/build/dex/yo/config.d.ts +3 -0
- package/build/dex/yo/config.js +21 -0
- package/build/dex/yo/config.js.map +1 -0
- package/build/dex/yo/types.d.ts +13 -0
- package/build/dex/yo/types.js +3 -0
- package/build/dex/yo/types.js.map +1 -0
- package/build/dex/yo/yo-pool.d.ts +13 -0
- package/build/dex/yo/yo-pool.js +26 -0
- package/build/dex/yo/yo-pool.js.map +1 -0
- package/build/dex/yo/yo.d.ts +39 -0
- package/build/dex/yo/yo.js +248 -0
- package/build/dex/yo/yo.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"full-range.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/full-range.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"full-range.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/full-range.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ exports.computeFee = computeFee;
|
|
|
6
6
|
exports.computeStep = computeStep;
|
|
7
7
|
const constants_1 = require("./constants");
|
|
8
8
|
const delta_1 = require("./delta");
|
|
9
|
-
const
|
|
9
|
+
const sqrt_ratio_1 = require("./sqrt-ratio");
|
|
10
10
|
function isPriceIncreasing(amount, isToken1) {
|
|
11
11
|
return amount < 0n !== isToken1;
|
|
12
12
|
}
|
|
@@ -59,10 +59,10 @@ function computeStep({ sqrtRatio, liquidity, sqrtRatioLimit, amount, isToken1, f
|
|
|
59
59
|
}
|
|
60
60
|
let sqrtRatioNextFromAmount;
|
|
61
61
|
if (isToken1) {
|
|
62
|
-
sqrtRatioNextFromAmount = (0,
|
|
62
|
+
sqrtRatioNextFromAmount = (0, sqrt_ratio_1.nextSqrtRatioFromAmount1)(sqrtRatio, liquidity, priceImpactAmount);
|
|
63
63
|
}
|
|
64
64
|
else {
|
|
65
|
-
sqrtRatioNextFromAmount = (0,
|
|
65
|
+
sqrtRatioNextFromAmount = (0, sqrt_ratio_1.nextSqrtRatioFromAmount0)(sqrtRatio, liquidity, priceImpactAmount);
|
|
66
66
|
}
|
|
67
67
|
if (sqrtRatioNextFromAmount === null ||
|
|
68
68
|
sqrtRatioNextFromAmount > sqrtRatioLimit === increasing) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../../../src/dex/ekubo/pools/math/swap.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../../../src/dex/ekubo/pools/math/swap.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,3 +5,4 @@ export declare const MIN_SQRT_RATIO: bigint;
|
|
|
5
5
|
export declare const FULL_RANGE_TICK_SPACING = 0;
|
|
6
6
|
export declare function toSqrtRatio(tick: number): bigint;
|
|
7
7
|
export declare function approximateNumberOfTickSpacingsCrossed(sqrtRatioStart: bigint, sqrtRatioEnd: bigint, tickSpacing: number): number;
|
|
8
|
+
export declare function approximateSqrtRatioToTick(sqrtRatio: bigint): number;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.FULL_RANGE_TICK_SPACING = exports.MIN_SQRT_RATIO = exports.MAX_SQRT_RATIO = exports.MAX_TICK = exports.MIN_TICK = void 0;
|
|
4
4
|
exports.toSqrtRatio = toSqrtRatio;
|
|
5
5
|
exports.approximateNumberOfTickSpacingsCrossed = approximateNumberOfTickSpacingsCrossed;
|
|
6
|
+
exports.approximateSqrtRatioToTick = approximateSqrtRatioToTick;
|
|
6
7
|
const constants_1 = require("./constants");
|
|
7
8
|
exports.MIN_TICK = -88722835;
|
|
8
9
|
exports.MAX_TICK = 88722835;
|
|
@@ -113,12 +114,16 @@ function toSqrtRatio(tick) {
|
|
|
113
114
|
}
|
|
114
115
|
return ratio;
|
|
115
116
|
}
|
|
116
|
-
const
|
|
117
|
+
const LOG_BASE_SQRT_TICK_SIZE = Math.log(Math.sqrt(1.000001));
|
|
117
118
|
function approximateNumberOfTickSpacingsCrossed(sqrtRatioStart, sqrtRatioEnd, tickSpacing) {
|
|
118
|
-
if (tickSpacing ===
|
|
119
|
+
if (tickSpacing === 0) {
|
|
119
120
|
return 0;
|
|
120
121
|
}
|
|
121
|
-
const logPriceDiff = Math.log(Number(sqrtRatioEnd) / Number(sqrtRatioStart)) /
|
|
122
|
-
|
|
122
|
+
const logPriceDiff = Math.log(Number(sqrtRatioEnd) / Number(sqrtRatioStart)) /
|
|
123
|
+
LOG_BASE_SQRT_TICK_SIZE;
|
|
124
|
+
return Math.floor(Math.abs(logPriceDiff / tickSpacing));
|
|
125
|
+
}
|
|
126
|
+
function approximateSqrtRatioToTick(sqrtRatio) {
|
|
127
|
+
return Math.round(Math.log(Number(sqrtRatio) / 2 ** 128) / LOG_BASE_SQRT_TICK_SIZE);
|
|
123
128
|
}
|
|
124
129
|
//# sourceMappingURL=tick.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tick.js","sourceRoot":"","sources":["../../../../../src/dex/ekubo/pools/math/tick.ts"],"names":[],"mappings":";;;AASA,kCAuGC;AAID,
|
|
1
|
+
{"version":3,"file":"tick.js","sourceRoot":"","sources":["../../../../../src/dex/ekubo/pools/math/tick.ts"],"names":[],"mappings":";;;AASA,kCAuGC;AAID,wFAcC;AAED,gEAIC;AAxID,2CAA6E;AAEhE,QAAA,QAAQ,GAAG,CAAC,QAAQ,CAAC;AACrB,QAAA,QAAQ,GAAG,QAAQ,CAAC;AACpB,QAAA,cAAc,GACzB,2DAA2D,CAAC;AACjD,QAAA,cAAc,GAAW,qBAAqB,CAAC;AAC/C,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAEzC,SAAgB,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,GAAG,gBAAQ,IAAI,IAAI,GAAG,gBAAQ;QACpC,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC3C,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;IACpB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,KAAK,GAAG,oCAAoC,CAAC;IACjD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,KAAK,GAAG,mCAAmC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,KAAK,GAAG,CAAC,KAAK,GAAG,mCAAmC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,KAAK,GAAG,CAAC,KAAK,GAAG,kCAAkC,CAAC,IAAI,IAAI,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,KAAK,GAAG,CAAC,KAAK,GAAG,gCAAgC,CAAC,IAAI,IAAI,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,KAAK,GAAG,CAAC,KAAK,GAAG,6BAA6B,CAAC,IAAI,IAAI,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,KAAK,GAAG,CAAC,KAAK,GAAG,uBAAuB,CAAC,IAAI,IAAI,CAAC;IACpD,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,GAAG,oBAAQ,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK,IAAI,uBAAW,EAAE,CAAC;QACzB,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;IAChC,CAAC;SAAM,IAAI,KAAK,IAAI,uBAAW,EAAE,CAAC;QAChC,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;IAChC,CAAC;SAAM,IAAI,KAAK,IAAI,sBAAU,EAAE,CAAC;QAC/B,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE9D,SAAgB,sCAAsC,CACpD,cAAsB,EACtB,YAAoB,EACpB,WAAmB;IAEnB,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,YAAY,GAChB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QACvD,uBAAuB,CAAC;IAE1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,0BAA0B,CAAC,SAAiB;IAC1D,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,uBAAuB,CACjE,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { FullRangePool } from './full-range';
|
|
5
|
-
import { PoolKey } from './utils';
|
|
1
|
+
import { DeepReadonly } from 'ts-essentials';
|
|
2
|
+
import { FullRangePool, FullRangePoolState } from './full-range';
|
|
3
|
+
import { PoolKeyed, Quote } from './pool';
|
|
6
4
|
export declare class OraclePool extends FullRangePool {
|
|
7
|
-
|
|
5
|
+
protected _quote(amount: bigint, isToken1: boolean, state: DeepReadonly<FullRangePoolState.Object>, sqrtRatioLimit?: bigint): Quote;
|
|
6
|
+
quoteOracle(this: PoolKeyed, amount: bigint, isToken1: boolean, state: DeepReadonly<FullRangePoolState.Object>, sqrtRatioLimit?: bigint): Quote;
|
|
8
7
|
}
|
|
@@ -2,18 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OraclePool = void 0;
|
|
4
4
|
const full_range_1 = require("./full-range");
|
|
5
|
-
const
|
|
5
|
+
const BASE_GAS_COST_OF_ONE_ORACLE_SWAP = 32_000;
|
|
6
6
|
class OraclePool extends full_range_1.FullRangePool {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
_quote(amount, isToken1, state, sqrtRatioLimit) {
|
|
8
|
+
return this.quoteOracle(amount, isToken1, state, sqrtRatioLimit);
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (fullRangeQuote.calculatedAmount !== 0n) {
|
|
15
|
-
fullRangeQuote.gasConsumed += GAS_COST_OF_UPDATING_ORACLE_SNAPSHOT;
|
|
10
|
+
quoteOracle(amount, isToken1, state, sqrtRatioLimit) {
|
|
11
|
+
const fullRangeQuote = full_range_1.FullRangePool.prototype.quoteFullRange.call(this, amount, isToken1, state, sqrtRatioLimit);
|
|
12
|
+
fullRangeQuote.gasConsumed = BASE_GAS_COST_OF_ONE_ORACLE_SWAP;
|
|
13
|
+
return fullRangeQuote;
|
|
16
14
|
}
|
|
17
|
-
return fullRangeQuote;
|
|
18
15
|
}
|
|
16
|
+
exports.OraclePool = OraclePool;
|
|
19
17
|
//# sourceMappingURL=oracle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/oracle.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/oracle.ts"],"names":[],"mappings":";;;AACA,6CAAiE;AAGjE,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAEhD,MAAa,UAAW,SAAQ,0BAAa;IACxB,MAAM,CACvB,MAAc,EACd,QAAiB,EACjB,KAA8C,EAC9C,cAAuB;QAEvB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IACnE,CAAC;IAEM,WAAW,CAEhB,MAAc,EACd,QAAiB,EACjB,KAA8C,EAC9C,cAAuB;QAEvB,MAAM,cAAc,GAAG,0BAAa,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAChE,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,KAAK,EACL,cAAc,CACf,CAAC;QAEF,cAAc,CAAC,WAAW,GAAG,gCAAgC,CAAC;QAE9D,OAAO,cAAc,CAAC;IACxB,CAAC;CACF;AA7BD,gCA6BC"}
|
|
@@ -3,12 +3,15 @@ import { DeepReadonly } from 'ts-essentials';
|
|
|
3
3
|
import { IDexHelper } from '../../../dex-helper/idex-helper';
|
|
4
4
|
import { EkuboContracts, TwammQuoteData } from '../types';
|
|
5
5
|
import { FullRangePoolState } from './full-range';
|
|
6
|
-
import { EkuboPool,
|
|
6
|
+
import { EkuboPool, Quote } from './pool';
|
|
7
7
|
import { PoolKey, SwappedEvent } from './utils';
|
|
8
8
|
export declare class TwammPool extends EkuboPool<TwammPoolState.Object> {
|
|
9
9
|
private readonly dataFetcher;
|
|
10
10
|
constructor(parentName: string, dexHelper: IDexHelper, logger: Logger, contracts: EkuboContracts, key: PoolKey);
|
|
11
11
|
generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<TwammPoolState.Object>>;
|
|
12
|
+
protected _quote(amount: bigint, isToken1: boolean, state: DeepReadonly<TwammPoolState.Object>): Quote;
|
|
13
|
+
quoteTwamm(amount: bigint, isToken1: boolean, state: DeepReadonly<TwammPoolState.Object>, overrideTime?: number): Quote;
|
|
14
|
+
protected _computeTvl(state: TwammPoolState.Object): [bigint, bigint];
|
|
12
15
|
}
|
|
13
16
|
interface VirtualOrdersExecutedEvent {
|
|
14
17
|
poolId: bigint;
|
|
@@ -29,10 +32,9 @@ export declare namespace TwammPoolState {
|
|
|
29
32
|
virtualOrderDeltas: SaleRateDelta[];
|
|
30
33
|
}
|
|
31
34
|
function fromQuoter(data: TwammQuoteData): DeepReadonly<Object>;
|
|
32
|
-
function fromPositionUpdatedEvent(oldState: DeepReadonly<Object>, liquidityDelta: bigint): Object | null;
|
|
33
35
|
function fromSwappedEvent(oldState: DeepReadonly<Object>, ev: SwappedEvent): Object;
|
|
36
|
+
function fromPositionUpdatedEvent(oldState: DeepReadonly<Object>, liquidityDelta: bigint): Object | null;
|
|
34
37
|
function fromVirtualOrdersExecutedEvent(oldState: DeepReadonly<Object>, ev: VirtualOrdersExecutedEvent, timestamp: number): Object;
|
|
35
38
|
function fromOrderUpdatedEvent(oldState: DeepReadonly<Object>, [startTime, endTime]: [number, number], orderSaleRateDelta: bigint, isToken1: boolean): Object;
|
|
36
39
|
}
|
|
37
|
-
export declare function quote(this: PoolKeyed, amount: bigint, isToken1: boolean, state: DeepReadonly<TwammPoolState.Object>, overrideTime?: number): Quote;
|
|
38
40
|
export {};
|
|
@@ -1,36 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.TwammPoolState = exports.TwammPool = void 0;
|
|
7
|
-
exports.quote = quote;
|
|
8
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
9
4
|
const full_range_1 = require("./full-range");
|
|
10
|
-
const
|
|
5
|
+
const pool_1 = require("./pool");
|
|
11
6
|
const constants_1 = require("./math/constants");
|
|
12
|
-
const
|
|
7
|
+
const sqrt_ratio_1 = require("./math/sqrt-ratio");
|
|
13
8
|
const tick_1 = require("./math/tick");
|
|
14
|
-
const
|
|
9
|
+
const sqrt_ratio_2 = require("./math/twamm/sqrt-ratio");
|
|
15
10
|
const utils_1 = require("./utils");
|
|
11
|
+
const base_1 = require("./base");
|
|
16
12
|
const SLOT_DURATION_SECS = 12;
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
13
|
+
const BASE_GAS_COST_OF_ONE_TWAMM_FULL_RANGE_SWAP = 25_700;
|
|
14
|
+
const GAS_COST_OF_ONE_VIRTUAL_ORDER_DELTA = 7_500;
|
|
15
|
+
const GAS_COST_OF_EXECUTING_VIRTUAL_ORDERS = 13_000;
|
|
16
|
+
const LOG_BASE_256 = Math.log(256);
|
|
17
|
+
class TwammPool extends pool_1.EkuboPool {
|
|
20
18
|
dataFetcher;
|
|
21
19
|
constructor(parentName, dexHelper, logger, contracts, key) {
|
|
22
20
|
const { contract: { address: coreAddress }, interface: coreIface, } = contracts.core;
|
|
23
21
|
const { contract: { address: twammAddress }, interface: twammIface, dataFetcher, } = contracts.twamm;
|
|
24
22
|
super(parentName, dexHelper, logger, key, {
|
|
25
|
-
[coreAddress]: new
|
|
23
|
+
[coreAddress]: new pool_1.NamedEventHandlers(coreIface, {
|
|
26
24
|
PositionUpdated: (args, oldState) => {
|
|
27
|
-
if (key.
|
|
25
|
+
if (key.numId !== BigInt(args.poolId)) {
|
|
28
26
|
return null;
|
|
29
27
|
}
|
|
30
28
|
return TwammPoolState.fromPositionUpdatedEvent(oldState, args.params.liquidityDelta.toBigInt());
|
|
31
29
|
},
|
|
32
30
|
}),
|
|
33
|
-
[twammAddress]: new
|
|
31
|
+
[twammAddress]: new pool_1.NamedEventHandlers(twammIface, {
|
|
34
32
|
OrderUpdated: (args, oldState) => {
|
|
35
33
|
const orderKey = args.orderKey;
|
|
36
34
|
const [sellToken, buyToken] = [
|
|
@@ -49,19 +47,19 @@ class TwammPool extends iface_1.EkuboPool {
|
|
|
49
47
|
}, {
|
|
50
48
|
[coreAddress]: (data, oldState) => {
|
|
51
49
|
const ev = (0, utils_1.parseSwappedEvent)(data);
|
|
52
|
-
if (key.
|
|
50
|
+
if (key.numId !== ev.poolId) {
|
|
53
51
|
return null;
|
|
54
52
|
}
|
|
55
53
|
return TwammPoolState.fromSwappedEvent(oldState, ev);
|
|
56
54
|
},
|
|
57
55
|
[twammAddress]: (data, oldState, blockHeader) => {
|
|
58
56
|
const ev = parseVirtualOrdersExecutedEvent(data);
|
|
59
|
-
if (key.
|
|
57
|
+
if (key.numId !== ev.poolId) {
|
|
60
58
|
return null;
|
|
61
59
|
}
|
|
62
60
|
return TwammPoolState.fromVirtualOrdersExecutedEvent(oldState, ev, Number(blockHeader.timestamp));
|
|
63
61
|
},
|
|
64
|
-
}
|
|
62
|
+
});
|
|
65
63
|
this.dataFetcher = dataFetcher;
|
|
66
64
|
}
|
|
67
65
|
async generateState(blockNumber) {
|
|
@@ -70,6 +68,82 @@ class TwammPool extends iface_1.EkuboPool {
|
|
|
70
68
|
});
|
|
71
69
|
return TwammPoolState.fromQuoter(quoteData);
|
|
72
70
|
}
|
|
71
|
+
_quote(amount, isToken1, state) {
|
|
72
|
+
return this.quoteTwamm(amount, isToken1, state);
|
|
73
|
+
}
|
|
74
|
+
quoteTwamm(amount, isToken1, state, overrideTime) {
|
|
75
|
+
const currentTime = overrideTime ??
|
|
76
|
+
Math.max(state.lastExecutionTime + SLOT_DURATION_SECS, Math.floor(Date.now() / 1000));
|
|
77
|
+
const fee = this.key.config.fee;
|
|
78
|
+
const quoteFullRangePool = full_range_1.FullRangePool.prototype.quoteFullRange.bind(this);
|
|
79
|
+
const liquidity = state.fullRangePoolState.liquidity;
|
|
80
|
+
let nextSqrtRatio = state.fullRangePoolState.sqrtRatio;
|
|
81
|
+
let token0SaleRate = state.token0SaleRate;
|
|
82
|
+
let token1SaleRate = state.token1SaleRate;
|
|
83
|
+
let lastExecutionTime = state.lastExecutionTime;
|
|
84
|
+
let virtualOrderDeltaTimesCrossed = 0;
|
|
85
|
+
let swapCount = 1;
|
|
86
|
+
let nextSaleRateDeltaIndex = state.virtualOrderDeltas.findIndex(srd => srd.time > lastExecutionTime);
|
|
87
|
+
let fullRangePoolState = state.fullRangePoolState;
|
|
88
|
+
while (lastExecutionTime != currentTime) {
|
|
89
|
+
const saleRateDelta = state.virtualOrderDeltas[nextSaleRateDeltaIndex];
|
|
90
|
+
const nextExecutionTime = saleRateDelta
|
|
91
|
+
? Math.min(saleRateDelta.time, currentTime)
|
|
92
|
+
: currentTime;
|
|
93
|
+
const timeElapsed = nextExecutionTime - lastExecutionTime;
|
|
94
|
+
if (timeElapsed > constants_1.MAX_U32) {
|
|
95
|
+
throw new Error('Too much time passed since last execution');
|
|
96
|
+
}
|
|
97
|
+
const [amount0, amount1] = [
|
|
98
|
+
(token0SaleRate * BigInt(timeElapsed)) >> 32n,
|
|
99
|
+
(token1SaleRate * BigInt(timeElapsed)) >> 32n,
|
|
100
|
+
];
|
|
101
|
+
if (amount0 > 0n && amount1 > 0n) {
|
|
102
|
+
let currentSqrtRatio = nextSqrtRatio;
|
|
103
|
+
if (currentSqrtRatio > tick_1.MAX_SQRT_RATIO) {
|
|
104
|
+
currentSqrtRatio = tick_1.MAX_SQRT_RATIO;
|
|
105
|
+
}
|
|
106
|
+
else if (currentSqrtRatio < tick_1.MIN_SQRT_RATIO) {
|
|
107
|
+
currentSqrtRatio = tick_1.MIN_SQRT_RATIO;
|
|
108
|
+
}
|
|
109
|
+
nextSqrtRatio = (0, sqrt_ratio_2.calculateNextSqrtRatio)(currentSqrtRatio, liquidity, token0SaleRate, token1SaleRate, timeElapsed, fee);
|
|
110
|
+
const [amount, isToken1] = currentSqrtRatio < nextSqrtRatio ? [amount1, true] : [amount0, false];
|
|
111
|
+
const quote = quoteFullRangePool(amount, isToken1, fullRangePoolState, nextSqrtRatio);
|
|
112
|
+
swapCount++;
|
|
113
|
+
fullRangePoolState = quote.stateAfter;
|
|
114
|
+
}
|
|
115
|
+
else if (amount0 > 0n || amount1 > 0n) {
|
|
116
|
+
const [amount, isToken1] = amount0 !== 0n ? [amount0, false] : [amount1, true];
|
|
117
|
+
const quote = quoteFullRangePool(amount, isToken1, fullRangePoolState);
|
|
118
|
+
swapCount++;
|
|
119
|
+
fullRangePoolState = quote.stateAfter;
|
|
120
|
+
nextSqrtRatio = quote.stateAfter.sqrtRatio;
|
|
121
|
+
}
|
|
122
|
+
if (saleRateDelta) {
|
|
123
|
+
if (saleRateDelta.time === nextExecutionTime) {
|
|
124
|
+
token0SaleRate += saleRateDelta.saleRateDelta0;
|
|
125
|
+
token1SaleRate += saleRateDelta.saleRateDelta1;
|
|
126
|
+
nextSaleRateDeltaIndex++;
|
|
127
|
+
virtualOrderDeltaTimesCrossed++;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
lastExecutionTime = nextExecutionTime;
|
|
131
|
+
}
|
|
132
|
+
const finalQuote = quoteFullRangePool(amount, isToken1, fullRangePoolState);
|
|
133
|
+
return {
|
|
134
|
+
calculatedAmount: finalQuote.calculatedAmount,
|
|
135
|
+
consumedAmount: finalQuote.consumedAmount,
|
|
136
|
+
gasConsumed: swapCount * BASE_GAS_COST_OF_ONE_TWAMM_FULL_RANGE_SWAP +
|
|
137
|
+
GAS_COST_OF_EXECUTING_VIRTUAL_ORDERS +
|
|
138
|
+
virtualOrderDeltaTimesCrossed * GAS_COST_OF_ONE_VIRTUAL_ORDER_DELTA +
|
|
139
|
+
(Math.log(currentTime - state.lastExecutionTime) / LOG_BASE_256) *
|
|
140
|
+
base_1.GAS_COST_OF_ONE_EXTRA_BITMAP_SLOAD,
|
|
141
|
+
skipAhead: finalQuote.skipAhead,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
_computeTvl(state) {
|
|
145
|
+
return full_range_1.FullRangePoolState.computeTvl(state.fullRangePoolState);
|
|
146
|
+
}
|
|
73
147
|
}
|
|
74
148
|
exports.TwammPool = TwammPool;
|
|
75
149
|
function parseVirtualOrdersExecutedEvent(data) {
|
|
@@ -92,7 +166,7 @@ var TwammPoolState;
|
|
|
92
166
|
const sqrtRatioFloat = data.sqrtRatio.toBigInt();
|
|
93
167
|
return {
|
|
94
168
|
fullRangePoolState: {
|
|
95
|
-
sqrtRatio: (0,
|
|
169
|
+
sqrtRatio: (0, sqrt_ratio_1.floatSqrtRatioToFixed)(sqrtRatioFloat),
|
|
96
170
|
liquidity,
|
|
97
171
|
},
|
|
98
172
|
token0SaleRate: data.saleRateToken0.toBigInt(),
|
|
@@ -106,24 +180,24 @@ var TwammPoolState;
|
|
|
106
180
|
};
|
|
107
181
|
}
|
|
108
182
|
TwammPoolState.fromQuoter = fromQuoter;
|
|
183
|
+
function fromSwappedEvent(oldState, ev) {
|
|
184
|
+
const clonedState = structuredClone(oldState);
|
|
185
|
+
clonedState.fullRangePoolState.liquidity = ev.liquidityAfter;
|
|
186
|
+
clonedState.fullRangePoolState.sqrtRatio = ev.sqrtRatioAfter;
|
|
187
|
+
return clonedState;
|
|
188
|
+
}
|
|
189
|
+
TwammPoolState.fromSwappedEvent = fromSwappedEvent;
|
|
109
190
|
function fromPositionUpdatedEvent(oldState, liquidityDelta) {
|
|
110
191
|
if (liquidityDelta === 0n) {
|
|
111
192
|
return null;
|
|
112
193
|
}
|
|
113
|
-
const clonedState =
|
|
194
|
+
const clonedState = structuredClone(oldState);
|
|
114
195
|
clonedState.fullRangePoolState.liquidity += liquidityDelta;
|
|
115
196
|
return clonedState;
|
|
116
197
|
}
|
|
117
198
|
TwammPoolState.fromPositionUpdatedEvent = fromPositionUpdatedEvent;
|
|
118
|
-
function fromSwappedEvent(oldState, ev) {
|
|
119
|
-
const clonedState = lodash_1.default.cloneDeep(oldState);
|
|
120
|
-
clonedState.fullRangePoolState.liquidity = ev.liquidityAfter;
|
|
121
|
-
clonedState.fullRangePoolState.sqrtRatio = ev.sqrtRatioAfter;
|
|
122
|
-
return clonedState;
|
|
123
|
-
}
|
|
124
|
-
TwammPoolState.fromSwappedEvent = fromSwappedEvent;
|
|
125
199
|
function fromVirtualOrdersExecutedEvent(oldState, ev, timestamp) {
|
|
126
|
-
const clonedState =
|
|
200
|
+
const clonedState = structuredClone(oldState);
|
|
127
201
|
clonedState.lastExecutionTime = timestamp;
|
|
128
202
|
clonedState.token0SaleRate = ev.token0SaleRate;
|
|
129
203
|
clonedState.token1SaleRate = ev.token1SaleRate;
|
|
@@ -138,7 +212,7 @@ var TwammPoolState;
|
|
|
138
212
|
}
|
|
139
213
|
TwammPoolState.fromVirtualOrdersExecutedEvent = fromVirtualOrdersExecutedEvent;
|
|
140
214
|
function fromOrderUpdatedEvent(oldState, [startTime, endTime], orderSaleRateDelta, isToken1) {
|
|
141
|
-
const clonedState =
|
|
215
|
+
const clonedState = structuredClone(oldState);
|
|
142
216
|
const virtualOrderDeltas = clonedState.virtualOrderDeltas;
|
|
143
217
|
let startIndex = 0;
|
|
144
218
|
for (const [time, saleRateDelta] of [
|
|
@@ -184,70 +258,4 @@ var TwammPoolState;
|
|
|
184
258
|
return ~l; // Bitwise NOT of the insertion point
|
|
185
259
|
}
|
|
186
260
|
})(TwammPoolState || (exports.TwammPoolState = TwammPoolState = {}));
|
|
187
|
-
function quote(amount, isToken1, state, overrideTime) {
|
|
188
|
-
const currentTime = overrideTime ??
|
|
189
|
-
Math.max(state.lastExecutionTime + SLOT_DURATION_SECS, Math.floor(Date.now() / 1000));
|
|
190
|
-
const fee = this.key.config.fee;
|
|
191
|
-
const quoteFullRangePool = full_range_1.quote.bind(this);
|
|
192
|
-
const liquidity = state.fullRangePoolState.liquidity;
|
|
193
|
-
let nextSqrtRatio = state.fullRangePoolState.sqrtRatio;
|
|
194
|
-
let token0SaleRate = state.token0SaleRate;
|
|
195
|
-
let token1SaleRate = state.token1SaleRate;
|
|
196
|
-
let lastExecutionTime = state.lastExecutionTime;
|
|
197
|
-
let virtualOrderDeltaTimesCrossed = 0;
|
|
198
|
-
let nextSaleRateDeltaIndex = state.virtualOrderDeltas.findIndex(srd => srd.time > lastExecutionTime);
|
|
199
|
-
let fullRangePoolState = state.fullRangePoolState;
|
|
200
|
-
while (lastExecutionTime != currentTime) {
|
|
201
|
-
const saleRateDelta = state.virtualOrderDeltas[nextSaleRateDeltaIndex];
|
|
202
|
-
const nextExecutionTime = saleRateDelta
|
|
203
|
-
? Math.min(saleRateDelta.time, currentTime)
|
|
204
|
-
: currentTime;
|
|
205
|
-
const timeElapsed = nextExecutionTime - lastExecutionTime;
|
|
206
|
-
if (timeElapsed > constants_1.MAX_U32) {
|
|
207
|
-
throw new Error('Too much time passed since last execution');
|
|
208
|
-
}
|
|
209
|
-
const [amount0, amount1] = [
|
|
210
|
-
(token0SaleRate * BigInt(timeElapsed)) >> 32n,
|
|
211
|
-
(token1SaleRate * BigInt(timeElapsed)) >> 32n,
|
|
212
|
-
];
|
|
213
|
-
if (amount0 > 0n && amount1 > 0n) {
|
|
214
|
-
let currentSqrtRatio = nextSqrtRatio;
|
|
215
|
-
if (currentSqrtRatio > tick_1.MAX_SQRT_RATIO) {
|
|
216
|
-
currentSqrtRatio = tick_1.MAX_SQRT_RATIO;
|
|
217
|
-
}
|
|
218
|
-
else if (currentSqrtRatio < tick_1.MIN_SQRT_RATIO) {
|
|
219
|
-
currentSqrtRatio = tick_1.MIN_SQRT_RATIO;
|
|
220
|
-
}
|
|
221
|
-
nextSqrtRatio = (0, sqrt_ratio_1.calculateNextSqrtRatio)(currentSqrtRatio, liquidity, token0SaleRate, token1SaleRate, timeElapsed, fee);
|
|
222
|
-
const [amount, isToken1] = currentSqrtRatio < nextSqrtRatio ? [amount1, true] : [amount0, false];
|
|
223
|
-
const quote = quoteFullRangePool(amount, isToken1, fullRangePoolState, nextSqrtRatio);
|
|
224
|
-
fullRangePoolState = quote.stateAfter;
|
|
225
|
-
}
|
|
226
|
-
else if (amount0 > 0n || amount1 > 0n) {
|
|
227
|
-
const [amount, isToken1] = amount0 !== 0n ? [amount0, false] : [amount1, true];
|
|
228
|
-
const quote = quoteFullRangePool(amount, isToken1, fullRangePoolState);
|
|
229
|
-
fullRangePoolState = quote.stateAfter;
|
|
230
|
-
nextSqrtRatio = quote.stateAfter.sqrtRatio;
|
|
231
|
-
}
|
|
232
|
-
if (saleRateDelta) {
|
|
233
|
-
if (saleRateDelta.time === nextExecutionTime) {
|
|
234
|
-
token0SaleRate += saleRateDelta.saleRateDelta0;
|
|
235
|
-
token1SaleRate += saleRateDelta.saleRateDelta1;
|
|
236
|
-
nextSaleRateDeltaIndex++;
|
|
237
|
-
virtualOrderDeltaTimesCrossed++;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
lastExecutionTime = nextExecutionTime;
|
|
241
|
-
}
|
|
242
|
-
const finalQuote = quoteFullRangePool(amount, isToken1, fullRangePoolState);
|
|
243
|
-
return {
|
|
244
|
-
calculatedAmount: finalQuote.calculatedAmount,
|
|
245
|
-
consumedAmount: finalQuote.consumedAmount,
|
|
246
|
-
gasConsumed: finalQuote.gasConsumed +
|
|
247
|
-
virtualOrderDeltaTimesCrossed * GAS_COST_OF_ONE_VIRTUAL_ORDER_DELTA +
|
|
248
|
-
Number(currentTime > state.lastExecutionTime) *
|
|
249
|
-
GAS_COST_OF_EXECUTING_VIRTUAL_ORDERS,
|
|
250
|
-
skipAhead: finalQuote.skipAhead,
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
261
|
//# sourceMappingURL=twamm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"twamm.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/twamm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"twamm.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/twamm.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,19 +3,20 @@ export declare class PoolKey {
|
|
|
3
3
|
readonly token0: bigint;
|
|
4
4
|
readonly token1: bigint;
|
|
5
5
|
readonly config: PoolConfig;
|
|
6
|
-
private
|
|
7
|
-
private
|
|
6
|
+
private _stringId?;
|
|
7
|
+
private _numId?;
|
|
8
8
|
constructor(token0: bigint, token1: bigint, config: PoolConfig);
|
|
9
|
-
|
|
10
|
-
get
|
|
9
|
+
static fromStringId(stringId: string): PoolKey;
|
|
10
|
+
get stringId(): string;
|
|
11
|
+
get numId(): bigint;
|
|
11
12
|
toAbi(): AbiPoolKey;
|
|
12
13
|
}
|
|
13
14
|
export declare class PoolConfig {
|
|
14
|
-
readonly tickSpacing: number;
|
|
15
|
-
readonly fee: bigint;
|
|
16
15
|
readonly extension: bigint;
|
|
16
|
+
readonly fee: bigint;
|
|
17
|
+
readonly tickSpacing: number;
|
|
17
18
|
private _compressed?;
|
|
18
|
-
constructor(
|
|
19
|
+
constructor(extension: bigint, fee: bigint, tickSpacing: number);
|
|
19
20
|
get compressed(): bigint;
|
|
20
21
|
static fromCompressed(compressed: bigint): PoolConfig;
|
|
21
22
|
}
|