@paraswap/dex-lib 4.3.17-unichain.2 → 4.3.17
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/BProtocol.json +1155 -0
- package/build/abi/Jarvis.json +1172 -0
- package/build/abi/MStableAsset.json +1545 -0
- package/build/abi/OneInchLp.json +1304 -0
- package/build/abi/Onebit.json +736 -0
- package/build/abi/Shell.json +1294 -0
- package/build/abi/TraderJoeV2Router.json +50 -0
- package/build/abi/miro-migrator/MiroMigrator.abi.json +36 -19
- package/build/abi/wUSDM.json +757 -0
- package/build/abi/zrx.v2.json +1967 -0
- package/build/abi/zrx.v3.json +3454 -0
- package/build/abi/zrx.v4.json +2193 -0
- package/build/config.js +0 -28
- package/build/config.js.map +1 -1
- package/build/constants.d.ts +1 -2
- package/build/constants.js +0 -1
- package/build/constants.js.map +1 -1
- package/build/dex/OneInchLp.d.ts +24 -0
- package/build/dex/OneInchLp.js +43 -0
- package/build/dex/OneInchLp.js.map +1 -0
- package/build/dex/bProtocol/bProtocol.d.ts +15 -0
- package/build/dex/bProtocol/bProtocol.js +56 -0
- package/build/dex/bProtocol/bProtocol.js.map +1 -0
- package/build/dex/bProtocol/types.d.ts +11 -0
- package/build/dex/bProtocol/types.js +8 -0
- package/build/dex/bProtocol/types.js.map +1 -0
- package/build/dex/bebop/bebop.js +1 -1
- package/build/dex/bebop/bebop.js.map +1 -1
- package/build/dex/cables/cables.js +1 -1
- package/build/dex/cables/cables.js.map +1 -1
- package/build/dex/hashflow/hashflow.js +1 -1
- package/build/dex/hashflow/hashflow.js.map +1 -1
- package/build/dex/jarvis.d.ts +56 -0
- package/build/dex/jarvis.js +163 -0
- package/build/dex/jarvis.js.map +1 -0
- package/build/dex/mStable.d.ts +44 -0
- package/build/dex/mStable.js +75 -0
- package/build/dex/mStable.js.map +1 -0
- package/build/dex/miro-migrator/config.js +3 -10
- package/build/dex/miro-migrator/config.js.map +1 -1
- package/build/dex/miro-migrator/constants.d.ts +1 -0
- package/build/dex/miro-migrator/constants.js +2 -1
- package/build/dex/miro-migrator/constants.js.map +1 -1
- package/build/dex/miro-migrator/miro-migrator-pool.d.ts +8 -5
- package/build/dex/miro-migrator/miro-migrator-pool.js +48 -30
- package/build/dex/miro-migrator/miro-migrator-pool.js.map +1 -1
- package/build/dex/miro-migrator/miro-migrator.d.ts +5 -4
- package/build/dex/miro-migrator/miro-migrator.js +40 -83
- package/build/dex/miro-migrator/miro-migrator.js.map +1 -1
- package/build/dex/miro-migrator/types.d.ts +2 -4
- package/build/dex/miro-migrator/types.js +1 -2
- package/build/dex/miro-migrator/types.js.map +1 -1
- package/build/dex/onebit/onebit.d.ts +16 -0
- package/build/dex/onebit/onebit.js +61 -0
- package/build/dex/onebit/onebit.js.map +1 -0
- package/build/dex/onebit/types.d.ts +14 -0
- package/build/dex/onebit/types.js +8 -0
- package/build/dex/onebit/types.js.map +1 -0
- package/build/dex/shell.d.ts +25 -0
- package/build/dex/shell.js +41 -0
- package/build/dex/shell.js.map +1 -0
- package/build/dex/trader-joe-v2.d.ts +40 -0
- package/build/dex/trader-joe-v2.js +74 -0
- package/build/dex/trader-joe-v2.js.map +1 -0
- package/build/dex/uniswap-v2/config.js +0 -6
- package/build/dex/uniswap-v2/config.js.map +1 -1
- package/build/dex/uniswap-v3/config.js +14 -37
- package/build/dex/uniswap-v3/config.js.map +1 -1
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.d.ts +2 -1
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js +7 -4
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js.map +1 -1
- package/build/dex/uniswap-v3/types.d.ts +0 -5
- package/build/dex/uniswap-v3/types.js +1 -4
- package/build/dex/uniswap-v3/types.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3-new.d.ts +94 -0
- package/build/dex/uniswap-v3/uniswap-v3-new.js +923 -0
- package/build/dex/uniswap-v3/uniswap-v3-new.js.map +1 -0
- package/build/dex/uniswap-v3/uniswap-v3.d.ts +2 -2
- package/build/dex/uniswap-v3/uniswap-v3.js +3 -7
- package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
- package/build/dex/uniswap-v4/config.js +0 -7
- package/build/dex/uniswap-v4/config.js.map +1 -1
- package/build/dex/usual-bond/config.d.ts +3 -0
- package/build/dex/usual-bond/config.js +13 -0
- package/build/dex/usual-bond/config.js.map +1 -0
- package/build/dex/usual-bond/types.d.ts +7 -0
- package/build/dex/usual-bond/types.js +3 -0
- package/build/dex/usual-bond/types.js.map +1 -0
- package/build/dex/usual-bond/usual-bond.d.ts +35 -0
- package/build/dex/usual-bond/usual-bond.js +176 -0
- package/build/dex/usual-bond/usual-bond.js.map +1 -0
- package/build/dex/weth/config.js +0 -3
- package/build/dex/weth/config.js.map +1 -1
- package/build/dex/wusdm/config.d.ts +3 -0
- package/build/dex/wusdm/config.js +43 -0
- package/build/dex/wusdm/config.js.map +1 -0
- package/build/dex/wusdm/constants.d.ts +2 -0
- package/build/dex/wusdm/constants.js +6 -0
- package/build/dex/wusdm/constants.js.map +1 -0
- package/build/dex/wusdm/types.d.ts +18 -0
- package/build/dex/wusdm/types.js +11 -0
- package/build/dex/wusdm/types.js.map +1 -0
- package/build/dex/wusdm/wusdm-pool.d.ts +21 -0
- package/build/dex/wusdm/wusdm-pool.js +74 -0
- package/build/dex/wusdm/wusdm-pool.js.map +1 -0
- package/build/dex/wusdm/wusdm.d.ts +46 -0
- package/build/dex/wusdm/wusdm.js +243 -0
- package/build/dex/wusdm/wusdm.js.map +1 -0
- package/build/dex/zerox/config.d.ts +2 -0
- package/build/dex/zerox/config.js +33 -0
- package/build/dex/zerox/config.js.map +1 -0
- package/build/dex/zerox/index.d.ts +22 -0
- package/build/dex/zerox/index.js +225 -0
- package/build/dex/zerox/index.js.map +1 -0
- package/build/dex/zerox/order.d.ts +88 -0
- package/build/dex/zerox/order.js +53 -0
- package/build/dex/zerox/order.js.map +1 -0
- package/build/dex/zerox/types.d.ts +73 -0
- package/build/dex/zerox/types.js +21 -0
- package/build/dex/zerox/types.js.map +1 -0
- package/build/executor/WETHBytecodeBuilder.js +0 -1
- package/build/executor/WETHBytecodeBuilder.js.map +1 -1
- package/build/utils.d.ts +1 -1
- package/build/utils.js +22 -20
- package/build/utils.js.map +1 -1
- package/package.json +1 -1
- package/build/abi/ekubo/twamm-data-fetcher.json +0 -216
- package/build/abi/ekubo/twamm.json +0 -720
- package/build/abi/ring-v2/few-wrapped-token.json +0 -587
- package/build/abi/ring-v2/ring-v2-factory.json +0 -125
- package/build/abi/ring-v2/ring-v2-pool.json +0 -461
- package/build/abi/ring-v2/ring-v2-router.json +0 -332
- package/build/abi/uniswap-v3/UniswapSwapRouter02.abi.json +0 -548
- package/build/dex/balancer-v3/hooks/akronHook.d.ts +0 -15
- package/build/dex/balancer-v3/hooks/akronHook.js +0 -20
- package/build/dex/balancer-v3/hooks/akronHook.js.map +0 -1
- package/build/dex/balancer-v3/quantAMMPool.d.ts +0 -17
- package/build/dex/balancer-v3/quantAMMPool.js +0 -43
- package/build/dex/balancer-v3/quantAMMPool.js.map +0 -1
- package/build/dex/balancer-v3/reClammPool.d.ts +0 -23
- package/build/dex/balancer-v3/reClammPool.js +0 -82
- package/build/dex/balancer-v3/reClammPool.js.map +0 -1
- package/build/dex/ekubo/pools/base.d.ts +0 -36
- package/build/dex/ekubo/pools/base.js +0 -289
- package/build/dex/ekubo/pools/base.js.map +0 -1
- package/build/dex/ekubo/pools/full-range.d.ts +0 -23
- package/build/dex/ekubo/pools/full-range.js +0 -99
- package/build/dex/ekubo/pools/full-range.js.map +0 -1
- package/build/dex/ekubo/pools/iface.d.ts +0 -46
- package/build/dex/ekubo/pools/iface.js +0 -75
- package/build/dex/ekubo/pools/iface.js.map +0 -1
- package/build/dex/ekubo/pools/math/twamm/exp2.d.ts +0 -1
- package/build/dex/ekubo/pools/math/twamm/exp2.js +0 -86
- package/build/dex/ekubo/pools/math/twamm/exp2.js.map +0 -1
- package/build/dex/ekubo/pools/math/twamm/sqrt-ratio.d.ts +0 -1
- package/build/dex/ekubo/pools/math/twamm/sqrt-ratio.js +0 -56
- package/build/dex/ekubo/pools/math/twamm/sqrt-ratio.js.map +0 -1
- package/build/dex/ekubo/pools/oracle.d.ts +0 -8
- package/build/dex/ekubo/pools/oracle.js +0 -19
- package/build/dex/ekubo/pools/oracle.js.map +0 -1
- package/build/dex/ekubo/pools/twamm.d.ts +0 -38
- package/build/dex/ekubo/pools/twamm.js +0 -253
- package/build/dex/ekubo/pools/twamm.js.map +0 -1
- package/build/dex/ekubo/pools/utils.d.ts +0 -28
- package/build/dex/ekubo/pools/utils.js +0 -80
- package/build/dex/ekubo/pools/utils.js.map +0 -1
- package/build/dex/miro-migrator/miro-migrator-state.d.ts +0 -27
- package/build/dex/miro-migrator/miro-migrator-state.js +0 -89
- package/build/dex/miro-migrator/miro-migrator-state.js.map +0 -1
- package/build/dex/usdc-transmuter/usdc-transmuter-pool.d.ts +0 -26
- package/build/dex/usdc-transmuter/usdc-transmuter-pool.js +0 -75
- package/build/dex/usdc-transmuter/usdc-transmuter-pool.js.map +0 -1
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { BufferState } from '@balancer-labs/balancer-maths';
|
|
2
|
-
import { CommonPoolState, PoolState } from './types';
|
|
3
|
-
export declare const ReClammApiName = "RECLAMM";
|
|
4
|
-
export declare const RECLAMM_GAS_COST = 186000;
|
|
5
|
-
export interface ReClammMutableState {
|
|
6
|
-
lastTimestamp: bigint;
|
|
7
|
-
lastVirtualBalances: bigint[];
|
|
8
|
-
dailyPriceShiftBase: bigint;
|
|
9
|
-
centerednessMargin: bigint;
|
|
10
|
-
startFourthRootPriceRatio: bigint;
|
|
11
|
-
endFourthRootPriceRatio: bigint;
|
|
12
|
-
priceRatioUpdateStartTime: bigint;
|
|
13
|
-
priceRatioUpdateEndTime: bigint;
|
|
14
|
-
currentTimestamp: bigint;
|
|
15
|
-
}
|
|
16
|
-
export type ReClammPoolState = CommonPoolState & ReClammMutableState;
|
|
17
|
-
export declare function isReClammMutableState(poolState: any): poolState is ReClammMutableState;
|
|
18
|
-
export declare function isReClammPool(poolState: PoolState | BufferState): boolean;
|
|
19
|
-
export declare function lastTimestampUpdatedEvent(poolState: PoolState, eventData: any): void;
|
|
20
|
-
export declare function priceRatioStateUpdatedEvent(poolState: PoolState, eventData: any): void;
|
|
21
|
-
export declare function dailyPriceShiftExponentUpdatedEvent(poolState: PoolState, eventData: any): void;
|
|
22
|
-
export declare function centerednessMarginUpdatedEvent(poolState: PoolState, eventData: any): void;
|
|
23
|
-
export declare function virtualBalancesUpdatedEvent(poolState: PoolState, eventData: any): void;
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RECLAMM_GAS_COST = exports.ReClammApiName = void 0;
|
|
4
|
-
exports.isReClammMutableState = isReClammMutableState;
|
|
5
|
-
exports.isReClammPool = isReClammPool;
|
|
6
|
-
exports.lastTimestampUpdatedEvent = lastTimestampUpdatedEvent;
|
|
7
|
-
exports.priceRatioStateUpdatedEvent = priceRatioStateUpdatedEvent;
|
|
8
|
-
exports.dailyPriceShiftExponentUpdatedEvent = dailyPriceShiftExponentUpdatedEvent;
|
|
9
|
-
exports.centerednessMarginUpdatedEvent = centerednessMarginUpdatedEvent;
|
|
10
|
-
exports.virtualBalancesUpdatedEvent = virtualBalancesUpdatedEvent;
|
|
11
|
-
const abi_1 = require("@ethersproject/abi");
|
|
12
|
-
exports.ReClammApiName = 'RECLAMM';
|
|
13
|
-
// https://github.com/balancer/reclamm/blob/main/test/gas/.hardhat-snapshots
|
|
14
|
-
exports.RECLAMM_GAS_COST = 186000;
|
|
15
|
-
function isReClammMutableState(poolState) {
|
|
16
|
-
return (poolState &&
|
|
17
|
-
typeof poolState === 'object' &&
|
|
18
|
-
'lastTimestamp' in poolState &&
|
|
19
|
-
'lastVirtualBalances' in poolState &&
|
|
20
|
-
'dailyPriceShiftBase' in poolState &&
|
|
21
|
-
'centerednessMargin' in poolState &&
|
|
22
|
-
'startFourthRootPriceRatio' in poolState &&
|
|
23
|
-
'endFourthRootPriceRatio' in poolState &&
|
|
24
|
-
'priceRatioUpdateStartTime' in poolState &&
|
|
25
|
-
'priceRatioUpdateEndTime' in poolState &&
|
|
26
|
-
'currentTimestamp' in poolState);
|
|
27
|
-
}
|
|
28
|
-
function isReClammPool(poolState) {
|
|
29
|
-
return poolState.poolType === 'RECLAMM' && isReClammMutableState(poolState);
|
|
30
|
-
}
|
|
31
|
-
function lastTimestampUpdatedEvent(poolState, eventData) {
|
|
32
|
-
// abi.encode(lastTimestamp32)
|
|
33
|
-
const decodedParams = abi_1.defaultAbiCoder.decode(['uint256'], eventData);
|
|
34
|
-
if (isReClammMutableState(poolState)) {
|
|
35
|
-
poolState.lastTimestamp = decodedParams[0].toBigInt();
|
|
36
|
-
}
|
|
37
|
-
else
|
|
38
|
-
throw new Error("Can't update lastTimestamp on non-reClamm pool");
|
|
39
|
-
}
|
|
40
|
-
function priceRatioStateUpdatedEvent(poolState, eventData) {
|
|
41
|
-
// abi.encode(startFourthRootPriceRatio,endFourthRootPriceRatio,priceRatioUpdateStartTime,priceRatioUpdateEndTime)
|
|
42
|
-
const decodedParams = abi_1.defaultAbiCoder.decode(['uint256', 'uint256', 'uint256', 'uint256'], eventData);
|
|
43
|
-
if (isReClammMutableState(poolState)) {
|
|
44
|
-
poolState.startFourthRootPriceRatio = decodedParams[0].toBigInt();
|
|
45
|
-
poolState.endFourthRootPriceRatio = decodedParams[1].toBigInt();
|
|
46
|
-
poolState.priceRatioUpdateStartTime = decodedParams[2].toBigInt();
|
|
47
|
-
poolState.priceRatioUpdateEndTime = decodedParams[3].toBigInt();
|
|
48
|
-
}
|
|
49
|
-
else
|
|
50
|
-
throw new Error("Can't update priceRatioState on non-reClamm pool");
|
|
51
|
-
}
|
|
52
|
-
function dailyPriceShiftExponentUpdatedEvent(poolState, eventData) {
|
|
53
|
-
// abi.encode(dailyPriceShiftExponent, dailyPriceShiftBase)
|
|
54
|
-
const decodedParams = abi_1.defaultAbiCoder.decode(['uint256', 'uint128'], eventData);
|
|
55
|
-
if (isReClammMutableState(poolState)) {
|
|
56
|
-
poolState.dailyPriceShiftBase = decodedParams[1].toBigInt();
|
|
57
|
-
}
|
|
58
|
-
else
|
|
59
|
-
throw new Error("Can't update dailyPriceShiftExponent on non-reClamm pool");
|
|
60
|
-
}
|
|
61
|
-
function centerednessMarginUpdatedEvent(poolState, eventData) {
|
|
62
|
-
// abi.encode(centerednessMargin)
|
|
63
|
-
const decodedParams = abi_1.defaultAbiCoder.decode(['uint256'], eventData);
|
|
64
|
-
if (isReClammMutableState(poolState)) {
|
|
65
|
-
poolState.centerednessMargin = decodedParams[0].toBigInt();
|
|
66
|
-
}
|
|
67
|
-
else
|
|
68
|
-
throw new Error("Can't update centerednessMargin on non-reClamm pool");
|
|
69
|
-
}
|
|
70
|
-
function virtualBalancesUpdatedEvent(poolState, eventData) {
|
|
71
|
-
// abi.encode(virtualBalanceA, virtualBalanceB)
|
|
72
|
-
const decodedParams = abi_1.defaultAbiCoder.decode(['uint256', 'uint256'], eventData);
|
|
73
|
-
if (isReClammMutableState(poolState)) {
|
|
74
|
-
poolState.lastVirtualBalances = [
|
|
75
|
-
decodedParams[0].toBigInt(),
|
|
76
|
-
decodedParams[1].toBigInt(),
|
|
77
|
-
];
|
|
78
|
-
}
|
|
79
|
-
else
|
|
80
|
-
throw new Error("Can't update lastVirtualBalances on non-reClamm pool");
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=reClammPool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reClammPool.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/reClammPool.ts"],"names":[],"mappings":";;;AAwBA,sDAgBC;AAED,sCAEC;AAED,8DASC;AAED,kEAeC;AAED,kFAaC;AAED,wEASC;AAED,kEAgBC;AAlHD,4CAAqD;AAExC,QAAA,cAAc,GAAG,SAAS,CAAC;AAExC,4EAA4E;AAC/D,QAAA,gBAAgB,GAAG,MAAM,CAAC;AAiBvC,SAAgB,qBAAqB,CACnC,SAAc;IAEd,OAAO,CACL,SAAS;QACT,OAAO,SAAS,KAAK,QAAQ;QAC7B,eAAe,IAAI,SAAS;QAC5B,qBAAqB,IAAI,SAAS;QAClC,qBAAqB,IAAI,SAAS;QAClC,oBAAoB,IAAI,SAAS;QACjC,2BAA2B,IAAI,SAAS;QACxC,yBAAyB,IAAI,SAAS;QACtC,2BAA2B,IAAI,SAAS;QACxC,yBAAyB,IAAI,SAAS;QACtC,kBAAkB,IAAI,SAAS,CAChC,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,SAAkC;IAC9D,OAAO,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC9E,CAAC;AAED,SAAgB,yBAAyB,CACvC,SAAoB,EACpB,SAAc;IAEd,8BAA8B;IAC9B,MAAM,aAAa,GAAG,qBAAe,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IACrE,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxD,CAAC;;QAAM,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAC3E,CAAC;AAED,SAAgB,2BAA2B,CACzC,SAAoB,EACpB,SAAc;IAEd,kHAAkH;IAClH,MAAM,aAAa,GAAG,qBAAe,CAAC,MAAM,CAC1C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAC5C,SAAS,CACV,CAAC;IACF,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,yBAAyB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClE,SAAS,CAAC,uBAAuB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChE,SAAS,CAAC,yBAAyB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClE,SAAS,CAAC,uBAAuB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClE,CAAC;;QAAM,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,mCAAmC,CACjD,SAAoB,EACpB,SAAc;IAEd,2DAA2D;IAC3D,MAAM,aAAa,GAAG,qBAAe,CAAC,MAAM,CAC1C,CAAC,SAAS,EAAE,SAAS,CAAC,EACtB,SAAS,CACV,CAAC;IACF,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,mBAAmB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9D,CAAC;;QACC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAChF,CAAC;AAED,SAAgB,8BAA8B,CAC5C,SAAoB,EACpB,SAAc;IAEd,iCAAiC;IACjC,MAAM,aAAa,GAAG,qBAAe,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IACrE,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,kBAAkB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7D,CAAC;;QAAM,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;AAChF,CAAC;AAED,SAAgB,2BAA2B,CACzC,SAAoB,EACpB,SAAc;IAEd,+CAA+C;IAC/C,MAAM,aAAa,GAAG,qBAAe,CAAC,MAAM,CAC1C,CAAC,SAAS,EAAE,SAAS,CAAC,EACtB,SAAS,CACV,CAAC;IACF,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,mBAAmB,GAAG;YAC9B,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC3B,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC5B,CAAC;IACJ,CAAC;;QACC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { DeepReadonly } from 'ts-essentials';
|
|
2
|
-
import { IDexHelper } from '../../../dex-helper/idex-helper';
|
|
3
|
-
import { Logger } from '../../../types';
|
|
4
|
-
import { BasicQuoteData, EkuboContracts } from '../types';
|
|
5
|
-
import { EkuboPool } from './iface';
|
|
6
|
-
import { PoolKey, SwappedEvent } from './utils';
|
|
7
|
-
export declare class BasePool extends EkuboPool<BasePoolState.Object> {
|
|
8
|
-
private readonly dataFetcher;
|
|
9
|
-
constructor(parentName: string, dexHelper: IDexHelper, logger: Logger, contracts: EkuboContracts, key: PoolKey);
|
|
10
|
-
generateState(blockNumber: number): Promise<DeepReadonly<BasePoolState.Object>>;
|
|
11
|
-
}
|
|
12
|
-
export interface Tick {
|
|
13
|
-
readonly number: number;
|
|
14
|
-
liquidityDelta: bigint;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Returns the index in the sorted tick array that has the greatest value of tick that is not greater than the given tick
|
|
18
|
-
* @param sortedTicks the sorted list of ticks to search in
|
|
19
|
-
* @param tick the tick to search for
|
|
20
|
-
*/
|
|
21
|
-
export declare function findNearestInitializedTickIndex(sortedTicks: Tick[], tick: number): number | null;
|
|
22
|
-
export declare namespace BasePoolState {
|
|
23
|
-
type Object = {
|
|
24
|
-
sqrtRatio: bigint;
|
|
25
|
-
liquidity: bigint;
|
|
26
|
-
activeTick: number;
|
|
27
|
-
readonly sortedTicks: Tick[];
|
|
28
|
-
activeTickIndex: number | null;
|
|
29
|
-
readonly checkedTicksBounds: readonly [number, number];
|
|
30
|
-
};
|
|
31
|
-
function fromQuoter(data: BasicQuoteData): DeepReadonly<Object>;
|
|
32
|
-
function fromSwappedEvent(oldState: DeepReadonly<Object>, ev: SwappedEvent): Object;
|
|
33
|
-
function fromPositionUpdatedEvent(oldState: DeepReadonly<Object>, [lowTick, highTick]: [number, number], liquidityDelta: bigint): Object | null;
|
|
34
|
-
function addLiquidityCutoffs(state: BasePoolState.Object): void;
|
|
35
|
-
function updateTick(state: Object, updatedTickNumber: number, liquidityDelta: bigint, upper: boolean, forceInsert: boolean): void;
|
|
36
|
-
}
|
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.BasePoolState = exports.BasePool = void 0;
|
|
7
|
-
exports.findNearestInitializedTickIndex = findNearestInitializedTickIndex;
|
|
8
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
-
const iface_1 = require("./iface");
|
|
10
|
-
const price_1 = require("./math/price");
|
|
11
|
-
const swap_1 = require("./math/swap");
|
|
12
|
-
const tick_1 = require("./math/tick");
|
|
13
|
-
const utils_1 = require("./utils");
|
|
14
|
-
const GAS_COST_OF_ONE_CL_SWAP = 24_000;
|
|
15
|
-
const GAS_COST_OF_ONE_INITIALIZED_TICK_CROSSED = 9_400;
|
|
16
|
-
const GAS_COST_OF_ONE_TICK_SPACING_CROSSED = 4_000;
|
|
17
|
-
class BasePool extends iface_1.EkuboPool {
|
|
18
|
-
dataFetcher;
|
|
19
|
-
constructor(parentName, dexHelper, logger, contracts, key) {
|
|
20
|
-
const { contract: { address }, interface: iface, dataFetcher, } = contracts.core;
|
|
21
|
-
super(parentName, dexHelper, logger, key, {
|
|
22
|
-
[address]: new iface_1.NamedEventHandlers(iface, {
|
|
23
|
-
PositionUpdated: (args, oldState) => {
|
|
24
|
-
if (key.num_id !== BigInt(args.poolId)) {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
const params = args.params;
|
|
28
|
-
return BasePoolState.fromPositionUpdatedEvent(oldState, [params.bounds.lower, params.bounds.upper], params.liquidityDelta.toBigInt());
|
|
29
|
-
},
|
|
30
|
-
}),
|
|
31
|
-
}, {
|
|
32
|
-
[address]: (data, oldState) => {
|
|
33
|
-
const ev = (0, utils_1.parseSwappedEvent)(data);
|
|
34
|
-
if (key.num_id !== ev.poolId) {
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
return BasePoolState.fromSwappedEvent(oldState, ev);
|
|
38
|
-
},
|
|
39
|
-
}, quote);
|
|
40
|
-
this.dataFetcher = dataFetcher;
|
|
41
|
-
}
|
|
42
|
-
async generateState(blockNumber) {
|
|
43
|
-
const data = await this.dataFetcher.getQuoteData([this.key.toAbi()], 10, {
|
|
44
|
-
blockTag: blockNumber,
|
|
45
|
-
});
|
|
46
|
-
return BasePoolState.fromQuoter(data[0]);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
exports.BasePool = BasePool;
|
|
50
|
-
function quote(amount, isToken1, state) {
|
|
51
|
-
const isIncreasing = (0, swap_1.isPriceIncreasing)(amount, isToken1);
|
|
52
|
-
let { sqrtRatio, liquidity, activeTickIndex, sortedTicks } = state;
|
|
53
|
-
const sqrtRatioLimit = isIncreasing ? tick_1.MAX_SQRT_RATIO : tick_1.MIN_SQRT_RATIO;
|
|
54
|
-
let calculatedAmount = 0n;
|
|
55
|
-
let initializedTicksCrossed = 0;
|
|
56
|
-
let amountRemaining = amount;
|
|
57
|
-
const startingSqrtRatio = sqrtRatio;
|
|
58
|
-
while (amountRemaining !== 0n && sqrtRatio !== sqrtRatioLimit) {
|
|
59
|
-
const nextInitializedTick = (isIncreasing
|
|
60
|
-
? sortedTicks[activeTickIndex === null ? 0 : activeTickIndex + 1]
|
|
61
|
-
: activeTickIndex === null
|
|
62
|
-
? null
|
|
63
|
-
: sortedTicks[activeTickIndex]) ?? null;
|
|
64
|
-
const nextInitializedTickSqrtRatio = nextInitializedTick
|
|
65
|
-
? (0, tick_1.toSqrtRatio)(nextInitializedTick.number)
|
|
66
|
-
: null;
|
|
67
|
-
const stepSqrtRatioLimit = nextInitializedTickSqrtRatio === null
|
|
68
|
-
? sqrtRatioLimit
|
|
69
|
-
: nextInitializedTickSqrtRatio < sqrtRatioLimit === isIncreasing
|
|
70
|
-
? nextInitializedTickSqrtRatio
|
|
71
|
-
: sqrtRatioLimit;
|
|
72
|
-
const step = (0, swap_1.computeStep)({
|
|
73
|
-
fee: this.key.config.fee,
|
|
74
|
-
sqrtRatio,
|
|
75
|
-
liquidity,
|
|
76
|
-
isToken1,
|
|
77
|
-
sqrtRatioLimit: stepSqrtRatioLimit,
|
|
78
|
-
amount: amountRemaining,
|
|
79
|
-
});
|
|
80
|
-
amountRemaining -= step.consumedAmount;
|
|
81
|
-
calculatedAmount += step.calculatedAmount;
|
|
82
|
-
sqrtRatio = step.sqrtRatioNext;
|
|
83
|
-
// Cross the tick if the price moved all the way to the next initialized tick price
|
|
84
|
-
if (nextInitializedTick && sqrtRatio === nextInitializedTickSqrtRatio) {
|
|
85
|
-
activeTickIndex = isIncreasing
|
|
86
|
-
? activeTickIndex === null
|
|
87
|
-
? 0
|
|
88
|
-
: activeTickIndex + 1
|
|
89
|
-
: activeTickIndex
|
|
90
|
-
? activeTickIndex - 1
|
|
91
|
-
: null;
|
|
92
|
-
initializedTicksCrossed++;
|
|
93
|
-
liquidity += isIncreasing
|
|
94
|
-
? nextInitializedTick.liquidityDelta
|
|
95
|
-
: -nextInitializedTick.liquidityDelta;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
const tickSpacingsCrossed = (0, tick_1.approximateNumberOfTickSpacingsCrossed)(startingSqrtRatio, sqrtRatio, this.key.config.tickSpacing);
|
|
99
|
-
return {
|
|
100
|
-
consumedAmount: amount - amountRemaining,
|
|
101
|
-
calculatedAmount,
|
|
102
|
-
gasConsumed: GAS_COST_OF_ONE_CL_SWAP +
|
|
103
|
-
initializedTicksCrossed * GAS_COST_OF_ONE_INITIALIZED_TICK_CROSSED +
|
|
104
|
-
tickSpacingsCrossed * GAS_COST_OF_ONE_TICK_SPACING_CROSSED,
|
|
105
|
-
skipAhead: initializedTicksCrossed === 0
|
|
106
|
-
? 0
|
|
107
|
-
: Math.floor(tickSpacingsCrossed / initializedTicksCrossed),
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Returns the index in the sorted tick array that has the greatest value of tick that is not greater than the given tick
|
|
112
|
-
* @param sortedTicks the sorted list of ticks to search in
|
|
113
|
-
* @param tick the tick to search for
|
|
114
|
-
*/
|
|
115
|
-
function findNearestInitializedTickIndex(sortedTicks, tick) {
|
|
116
|
-
let l = 0, r = sortedTicks.length;
|
|
117
|
-
while (l < r) {
|
|
118
|
-
const mid = Math.floor((l + r) / 2);
|
|
119
|
-
const midTick = sortedTicks[mid].number;
|
|
120
|
-
if (midTick <= tick) {
|
|
121
|
-
// If it's the last index, or the next tick is greater, we've found our index
|
|
122
|
-
if (mid === sortedTicks.length - 1 ||
|
|
123
|
-
sortedTicks[mid + 1].number > tick) {
|
|
124
|
-
return mid;
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
// Otherwise our value is to the right of this one
|
|
128
|
-
l = mid;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
// The mid tick is greater than the one we want, so we know it's not mid
|
|
133
|
-
r = mid;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
var BasePoolState;
|
|
139
|
-
(function (BasePoolState) {
|
|
140
|
-
function fromQuoter(data) {
|
|
141
|
-
const sortedTicks = data.ticks.map(({ number, liquidityDelta }) => ({
|
|
142
|
-
number,
|
|
143
|
-
liquidityDelta: liquidityDelta.toBigInt(),
|
|
144
|
-
}));
|
|
145
|
-
const liquidity = data.liquidity.toBigInt();
|
|
146
|
-
const sqrtRatioFloat = data.sqrtRatio.toBigInt();
|
|
147
|
-
const state = {
|
|
148
|
-
sqrtRatio: (0, price_1.floatSqrtRatioToFixed)(sqrtRatioFloat),
|
|
149
|
-
liquidity,
|
|
150
|
-
activeTick: data.tick,
|
|
151
|
-
sortedTicks,
|
|
152
|
-
activeTickIndex: null, // This will be filled in
|
|
153
|
-
checkedTicksBounds: [data.minTick, data.maxTick],
|
|
154
|
-
};
|
|
155
|
-
addLiquidityCutoffs(state);
|
|
156
|
-
return state;
|
|
157
|
-
}
|
|
158
|
-
BasePoolState.fromQuoter = fromQuoter;
|
|
159
|
-
function fromSwappedEvent(oldState, ev) {
|
|
160
|
-
const sortedTicks = oldState.sortedTicks;
|
|
161
|
-
const clonedTicks = lodash_1.default.cloneDeep(sortedTicks);
|
|
162
|
-
return {
|
|
163
|
-
sqrtRatio: ev.sqrtRatioAfter,
|
|
164
|
-
liquidity: ev.liquidityAfter,
|
|
165
|
-
activeTick: ev.tickAfter,
|
|
166
|
-
sortedTicks: clonedTicks,
|
|
167
|
-
activeTickIndex: findNearestInitializedTickIndex(clonedTicks, ev.tickAfter),
|
|
168
|
-
checkedTicksBounds: oldState.checkedTicksBounds,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
BasePoolState.fromSwappedEvent = fromSwappedEvent;
|
|
172
|
-
function fromPositionUpdatedEvent(oldState, [lowTick, highTick], liquidityDelta) {
|
|
173
|
-
if (liquidityDelta === 0n) {
|
|
174
|
-
return null;
|
|
175
|
-
}
|
|
176
|
-
const clonedState = lodash_1.default.cloneDeep(oldState);
|
|
177
|
-
updateTick(clonedState, lowTick, liquidityDelta, false, false);
|
|
178
|
-
updateTick(clonedState, highTick, liquidityDelta, true, false);
|
|
179
|
-
if (clonedState.activeTick >= lowTick &&
|
|
180
|
-
clonedState.activeTick < highTick) {
|
|
181
|
-
clonedState.liquidity += liquidityDelta;
|
|
182
|
-
}
|
|
183
|
-
return clonedState;
|
|
184
|
-
}
|
|
185
|
-
BasePoolState.fromPositionUpdatedEvent = fromPositionUpdatedEvent;
|
|
186
|
-
function addLiquidityCutoffs(state) {
|
|
187
|
-
const { sortedTicks, liquidity, activeTick } = state;
|
|
188
|
-
let activeTickIndex = undefined;
|
|
189
|
-
let currentLiquidity = 0n;
|
|
190
|
-
// The liquidity added/removed by out-of-range initialized ticks (i.e. lower than minCheckedTickNumber)
|
|
191
|
-
let liquidityDeltaMin = 0n;
|
|
192
|
-
for (let i = 0; i < sortedTicks.length; i++) {
|
|
193
|
-
const tick = sortedTicks[i];
|
|
194
|
-
if (typeof activeTickIndex === 'undefined' && activeTick < tick.number) {
|
|
195
|
-
activeTickIndex = i === 0 ? null : i - 1;
|
|
196
|
-
liquidityDeltaMin = liquidity - currentLiquidity;
|
|
197
|
-
// We now need to switch to tracking the liquidity that needs to be cut off at maxCheckedTickNumber, therefore reset to the actual liquidity
|
|
198
|
-
currentLiquidity = liquidity;
|
|
199
|
-
}
|
|
200
|
-
currentLiquidity += tick.liquidityDelta;
|
|
201
|
-
}
|
|
202
|
-
if (typeof activeTickIndex === 'undefined') {
|
|
203
|
-
activeTickIndex = sortedTicks.length > 0 ? sortedTicks.length - 1 : null;
|
|
204
|
-
liquidityDeltaMin = liquidity - currentLiquidity;
|
|
205
|
-
currentLiquidity = liquidity;
|
|
206
|
-
}
|
|
207
|
-
state.activeTickIndex = activeTickIndex;
|
|
208
|
-
BasePoolState.updateTick(state, state.checkedTicksBounds[0], liquidityDeltaMin, false, true);
|
|
209
|
-
BasePoolState.updateTick(state, state.checkedTicksBounds[1], currentLiquidity, true, true);
|
|
210
|
-
}
|
|
211
|
-
BasePoolState.addLiquidityCutoffs = addLiquidityCutoffs;
|
|
212
|
-
function updateTick(state, updatedTickNumber, liquidityDelta, upper, forceInsert) {
|
|
213
|
-
const sortedTicks = state.sortedTicks;
|
|
214
|
-
if (upper) {
|
|
215
|
-
liquidityDelta = -liquidityDelta;
|
|
216
|
-
}
|
|
217
|
-
const nearestTickIndex = findNearestInitializedTickIndex(sortedTicks, updatedTickNumber);
|
|
218
|
-
const nearestTick = nearestTickIndex === null ? null : sortedTicks[nearestTickIndex];
|
|
219
|
-
const nearestTickNumber = nearestTick?.number;
|
|
220
|
-
const newTickReferenced = nearestTickNumber !== updatedTickNumber;
|
|
221
|
-
if (newTickReferenced) {
|
|
222
|
-
if (!forceInsert && nearestTickIndex === null) {
|
|
223
|
-
sortedTicks[0].liquidityDelta += liquidityDelta;
|
|
224
|
-
}
|
|
225
|
-
else if (!forceInsert && nearestTickIndex === sortedTicks.length - 1) {
|
|
226
|
-
sortedTicks[sortedTicks.length - 1].liquidityDelta += liquidityDelta;
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
sortedTicks.splice(nearestTickIndex === null ? 0 : nearestTickIndex + 1, 0, {
|
|
230
|
-
number: updatedTickNumber,
|
|
231
|
-
liquidityDelta,
|
|
232
|
-
});
|
|
233
|
-
if (state.activeTick >= updatedTickNumber) {
|
|
234
|
-
state.activeTickIndex =
|
|
235
|
-
state.activeTickIndex === null ? 0 : state.activeTickIndex + 1;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
const newDelta = nearestTick.liquidityDelta + liquidityDelta;
|
|
241
|
-
if (newDelta === 0n &&
|
|
242
|
-
!state.checkedTicksBounds.includes(nearestTickNumber)) {
|
|
243
|
-
sortedTicks.splice(nearestTickIndex, 1);
|
|
244
|
-
if (state.activeTick >= updatedTickNumber) {
|
|
245
|
-
state.activeTickIndex--;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
nearestTick.liquidityDelta = newDelta;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
BasePoolState.updateTick = updateTick;
|
|
254
|
-
/*export function computeTvl(state: DeepReadonly<Object>): [bigint, bigint] {
|
|
255
|
-
const stateSqrtRatio = state.sqrtRatio;
|
|
256
|
-
|
|
257
|
-
let [tvl0, tvl1] = [0n, 0n];
|
|
258
|
-
let liquidity = 0n;
|
|
259
|
-
let sqrtRatio = MIN_SQRT_RATIO;
|
|
260
|
-
|
|
261
|
-
for (const tick of state.sortedTicks) {
|
|
262
|
-
const tickSqrtRatio = toSqrtRatio(tick.number);
|
|
263
|
-
|
|
264
|
-
const minAmount1SqrtRatio =
|
|
265
|
-
stateSqrtRatio > tickSqrtRatio ? tickSqrtRatio : stateSqrtRatio;
|
|
266
|
-
const maxAmount0SqrtRatio =
|
|
267
|
-
stateSqrtRatio > sqrtRatio ? stateSqrtRatio : sqrtRatio;
|
|
268
|
-
|
|
269
|
-
if (sqrtRatio < minAmount1SqrtRatio) {
|
|
270
|
-
tvl1 += amount1Delta(sqrtRatio, minAmount1SqrtRatio, liquidity, false);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
if (maxAmount0SqrtRatio < tickSqrtRatio) {
|
|
274
|
-
tvl0 += amount0Delta(
|
|
275
|
-
maxAmount0SqrtRatio,
|
|
276
|
-
tickSqrtRatio,
|
|
277
|
-
liquidity,
|
|
278
|
-
false,
|
|
279
|
-
);
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
sqrtRatio = tickSqrtRatio;
|
|
283
|
-
liquidity += tick.liquidityDelta;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
return [tvl0, tvl1];
|
|
287
|
-
}*/
|
|
288
|
-
})(BasePoolState || (exports.BasePoolState = BasePoolState = {}));
|
|
289
|
-
//# sourceMappingURL=base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { DeepReadonly } from 'ts-essentials';
|
|
2
|
-
import { IDexHelper } from '../../../dex-helper/idex-helper';
|
|
3
|
-
import { Logger } from '../../../types';
|
|
4
|
-
import { BasicQuoteData, EkuboContracts } from '../types';
|
|
5
|
-
import { EkuboPool, PoolKeyed, Quote, QuoteFn } from './iface';
|
|
6
|
-
import { PoolKey, SwappedEvent } from './utils';
|
|
7
|
-
export declare class FullRangePool extends EkuboPool<FullRangePoolState.Object> {
|
|
8
|
-
private readonly dataFetcher;
|
|
9
|
-
constructor(parentName: string, dexHelper: IDexHelper, logger: Logger, contracts: EkuboContracts, key: PoolKey, quoteFn?: QuoteFn<FullRangePoolState.Object>);
|
|
10
|
-
generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<FullRangePoolState.Object>>;
|
|
11
|
-
}
|
|
12
|
-
export declare namespace FullRangePoolState {
|
|
13
|
-
type Object = {
|
|
14
|
-
sqrtRatio: bigint;
|
|
15
|
-
liquidity: bigint;
|
|
16
|
-
};
|
|
17
|
-
function fromQuoter(data: BasicQuoteData): DeepReadonly<Object>;
|
|
18
|
-
function fromPositionUpdatedEvent(oldState: DeepReadonly<Object>, liquidityDelta: bigint): Object | null;
|
|
19
|
-
function fromSwappedEvent(ev: SwappedEvent): Object;
|
|
20
|
-
}
|
|
21
|
-
export declare function quote(this: PoolKeyed, amount: bigint, isToken1: boolean, state: DeepReadonly<FullRangePoolState.Object>, sqrtRatioLimit?: bigint): Quote & {
|
|
22
|
-
stateAfter: typeof state;
|
|
23
|
-
};
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.FullRangePoolState = exports.FullRangePool = void 0;
|
|
7
|
-
exports.quote = quote;
|
|
8
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
-
const iface_1 = require("./iface");
|
|
10
|
-
const price_1 = require("./math/price");
|
|
11
|
-
const swap_1 = require("./math/swap");
|
|
12
|
-
const tick_1 = require("./math/tick");
|
|
13
|
-
const utils_1 = require("./utils");
|
|
14
|
-
const GAS_COST_OF_ONE_FULL_RANGE_SWAP = 20_000;
|
|
15
|
-
class FullRangePool extends iface_1.EkuboPool {
|
|
16
|
-
dataFetcher;
|
|
17
|
-
constructor(parentName, dexHelper, logger, contracts, key, quoteFn) {
|
|
18
|
-
const { contract: { address }, interface: iface, dataFetcher, } = contracts.core;
|
|
19
|
-
super(parentName, dexHelper, logger, key, {
|
|
20
|
-
[address]: new iface_1.NamedEventHandlers(iface, {
|
|
21
|
-
PositionUpdated: (args, oldState) => {
|
|
22
|
-
if (key.num_id !== BigInt(args.poolId)) {
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
return FullRangePoolState.fromPositionUpdatedEvent(oldState, args.params.liquidityDelta.toBigInt());
|
|
26
|
-
},
|
|
27
|
-
}),
|
|
28
|
-
}, {
|
|
29
|
-
[address]: data => {
|
|
30
|
-
const ev = (0, utils_1.parseSwappedEvent)(data);
|
|
31
|
-
if (key.num_id !== ev.poolId) {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
return FullRangePoolState.fromSwappedEvent(ev);
|
|
35
|
-
},
|
|
36
|
-
}, quoteFn ?? quote);
|
|
37
|
-
this.dataFetcher = dataFetcher;
|
|
38
|
-
}
|
|
39
|
-
async generateState(blockNumber) {
|
|
40
|
-
const data = await this.dataFetcher.getQuoteData([this.key.toAbi()], 0, {
|
|
41
|
-
blockTag: blockNumber,
|
|
42
|
-
});
|
|
43
|
-
return FullRangePoolState.fromQuoter(data[0]);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
exports.FullRangePool = FullRangePool;
|
|
47
|
-
var FullRangePoolState;
|
|
48
|
-
(function (FullRangePoolState) {
|
|
49
|
-
function fromQuoter(data) {
|
|
50
|
-
const liquidity = data.liquidity.toBigInt();
|
|
51
|
-
const sqrtRatioFloat = data.sqrtRatio.toBigInt();
|
|
52
|
-
return {
|
|
53
|
-
sqrtRatio: (0, price_1.floatSqrtRatioToFixed)(sqrtRatioFloat),
|
|
54
|
-
liquidity,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
FullRangePoolState.fromQuoter = fromQuoter;
|
|
58
|
-
function fromPositionUpdatedEvent(oldState, liquidityDelta) {
|
|
59
|
-
if (liquidityDelta === 0n) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
const clonedState = lodash_1.default.cloneDeep(oldState);
|
|
63
|
-
clonedState.liquidity += liquidityDelta;
|
|
64
|
-
return clonedState;
|
|
65
|
-
}
|
|
66
|
-
FullRangePoolState.fromPositionUpdatedEvent = fromPositionUpdatedEvent;
|
|
67
|
-
function fromSwappedEvent(ev) {
|
|
68
|
-
return {
|
|
69
|
-
liquidity: ev.liquidityAfter,
|
|
70
|
-
sqrtRatio: ev.sqrtRatioAfter,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
FullRangePoolState.fromSwappedEvent = fromSwappedEvent;
|
|
74
|
-
})(FullRangePoolState || (exports.FullRangePoolState = FullRangePoolState = {}));
|
|
75
|
-
function quote(amount, isToken1, state, sqrtRatioLimit) {
|
|
76
|
-
const isIncreasing = (0, swap_1.isPriceIncreasing)(amount, isToken1);
|
|
77
|
-
let sqrtRatio = state.sqrtRatio;
|
|
78
|
-
const liquidity = state.liquidity;
|
|
79
|
-
sqrtRatioLimit ??= isIncreasing ? tick_1.MAX_SQRT_RATIO : tick_1.MIN_SQRT_RATIO;
|
|
80
|
-
const step = (0, swap_1.computeStep)({
|
|
81
|
-
fee: this.key.config.fee,
|
|
82
|
-
sqrtRatio,
|
|
83
|
-
liquidity,
|
|
84
|
-
isToken1,
|
|
85
|
-
sqrtRatioLimit,
|
|
86
|
-
amount,
|
|
87
|
-
});
|
|
88
|
-
return {
|
|
89
|
-
consumedAmount: step.consumedAmount,
|
|
90
|
-
calculatedAmount: step.calculatedAmount,
|
|
91
|
-
gasConsumed: GAS_COST_OF_ONE_FULL_RANGE_SWAP,
|
|
92
|
-
skipAhead: 0,
|
|
93
|
-
stateAfter: {
|
|
94
|
-
sqrtRatio: step.sqrtRatioNext,
|
|
95
|
-
liquidity,
|
|
96
|
-
},
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=full-range.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"full-range.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/full-range.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Interface, Result } from '@ethersproject/abi';
|
|
2
|
-
import { Logger } from 'log4js';
|
|
3
|
-
import { DeepReadonly } from 'ts-essentials';
|
|
4
|
-
import { IDexHelper } from '../../../dex-helper/idex-helper';
|
|
5
|
-
import { StatefulEventSubscriber } from '../../../stateful-event-subscriber';
|
|
6
|
-
import { BlockHeader, Log } from '../../../types';
|
|
7
|
-
import { PoolKey } from './utils';
|
|
8
|
-
export interface Quote {
|
|
9
|
-
consumedAmount: bigint;
|
|
10
|
-
calculatedAmount: bigint;
|
|
11
|
-
gasConsumed: number;
|
|
12
|
-
skipAhead: number;
|
|
13
|
-
}
|
|
14
|
-
export interface PoolKeyed {
|
|
15
|
-
key: PoolKey;
|
|
16
|
-
}
|
|
17
|
-
export interface IEkuboPool extends PoolKeyed {
|
|
18
|
-
quote(amount: bigint, token: bigint, blockNumber: number): Quote;
|
|
19
|
-
}
|
|
20
|
-
export type QuoteFn<State> = (amount: bigint, isToken1: boolean, state: DeepReadonly<State>) => Quote;
|
|
21
|
-
export type NamedEventHandler<State> = (args: Result, oldState: DeepReadonly<State>, blockHeader: Readonly<BlockHeader>) => DeepReadonly<State> | null;
|
|
22
|
-
export type AnonymousEventHandler<State> = (data: string, oldState: DeepReadonly<State>, blockHeader: Readonly<BlockHeader>) => DeepReadonly<State> | null;
|
|
23
|
-
export declare class NamedEventHandlers<State> {
|
|
24
|
-
private readonly iface;
|
|
25
|
-
private readonly handlers;
|
|
26
|
-
constructor(iface: Interface, handlers: Record<string, NamedEventHandler<State>>);
|
|
27
|
-
parseLog(log: Readonly<Log>, oldState: DeepReadonly<State>, blockHeader: Readonly<BlockHeader>): DeepReadonly<State> | null;
|
|
28
|
-
}
|
|
29
|
-
export declare abstract class EkuboPool<State> extends StatefulEventSubscriber<State> implements IEkuboPool {
|
|
30
|
-
readonly key: PoolKey;
|
|
31
|
-
private readonly namedEventHandlers;
|
|
32
|
-
private readonly anonymousEventHandlers;
|
|
33
|
-
private readonly quoteFn;
|
|
34
|
-
protected constructor(parentName: string, dexHelper: IDexHelper, logger: Logger, key: PoolKey, namedEventHandlers: Record<string, NamedEventHandlers<State>>, anonymousEventHandlers: Record<string, AnonymousEventHandler<State>>, quoteFn: QuoteFn<State>);
|
|
35
|
-
/**
|
|
36
|
-
* The function is called every time any of the subscribed
|
|
37
|
-
* addresses release log. The function accepts the current
|
|
38
|
-
* state, updates the state according to the log, and returns
|
|
39
|
-
* the updated state.
|
|
40
|
-
* @param state - Current state of event subscriber
|
|
41
|
-
* @param log - Log released by one of the subscribed addresses
|
|
42
|
-
* @returns Updates state of the event subscriber after the log
|
|
43
|
-
*/
|
|
44
|
-
protected processLog(state: DeepReadonly<State>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): DeepReadonly<State> | null;
|
|
45
|
-
quote(amount: bigint, token: bigint, blockNumber: number): Quote;
|
|
46
|
-
}
|