@paraswap/dex-lib 2.42.27 → 2.42.29-wombat.2
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/solidly-v3/SolidlyV3Pool.abi.json +738 -0
- package/build/abi/solidly-v3/SolidlyV3StateMulticall.abi.json +375 -0
- package/build/abi/trader-joe-v2_1/FactoryABI.json +0 -0
- package/build/abi/trader-joe-v2_1/PairABI.json +1493 -0
- package/build/abi/trader-joe-v2_1/RouterABI.json +1489 -0
- package/build/abi/wombat/pool-v2.json +1289 -0
- package/build/abi/wombat/pool-v3.json +2013 -0
- package/build/config.js +2 -2
- package/build/dex/index.js +4 -1
- package/build/dex/index.js.map +1 -1
- package/build/dex/solidly-v3/config.d.ts +9 -0
- package/build/dex/solidly-v3/config.js +58 -0
- package/build/dex/solidly-v3/config.js.map +1 -0
- package/build/dex/solidly-v3/constants.d.ts +27 -0
- package/build/dex/solidly-v3/constants.js +34 -0
- package/build/dex/solidly-v3/constants.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/BitMath.d.ts +4 -0
- package/build/dex/solidly-v3/contract-math/BitMath.js +93 -0
- package/build/dex/solidly-v3/contract-math/BitMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint128.d.ts +3 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint128.js +8 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint128.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint96.d.ts +4 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint96.js +9 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint96.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/FullMath.d.ts +4 -0
- package/build/dex/solidly-v3/contract-math/FullMath.js +19 -0
- package/build/dex/solidly-v3/contract-math/FullMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/LiquidityMath.d.ts +3 -0
- package/build/dex/solidly-v3/contract-math/LiquidityMath.js +22 -0
- package/build/dex/solidly-v3/contract-math/LiquidityMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/SqrtPriceMath.d.ts +10 -0
- package/build/dex/solidly-v3/contract-math/SqrtPriceMath.js +91 -0
- package/build/dex/solidly-v3/contract-math/SqrtPriceMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/SwapMath.d.ts +8 -0
- package/build/dex/solidly-v3/contract-math/SwapMath.js +70 -0
- package/build/dex/solidly-v3/contract-math/SwapMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/Tick.d.ts +7 -0
- package/build/dex/solidly-v3/contract-math/Tick.js +36 -0
- package/build/dex/solidly-v3/contract-math/Tick.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/TickBitMap.d.ts +7 -0
- package/build/dex/solidly-v3/contract-math/TickBitMap.js +84 -0
- package/build/dex/solidly-v3/contract-math/TickBitMap.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/TickMath.d.ts +8 -0
- package/build/dex/solidly-v3/contract-math/TickMath.js +162 -0
- package/build/dex/solidly-v3/contract-math/TickMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/UnsafeMath.d.ts +3 -0
- package/build/dex/solidly-v3/contract-math/UnsafeMath.js +10 -0
- package/build/dex/solidly-v3/contract-math/UnsafeMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/uniswap-v3-math.d.ts +31 -0
- package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js +363 -0
- package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/utils.d.ts +7 -0
- package/build/dex/solidly-v3/contract-math/utils.js +39 -0
- package/build/dex/solidly-v3/contract-math/utils.js.map +1 -0
- package/build/dex/solidly-v3/solidly-v3-factory.d.ts +26 -0
- package/build/dex/solidly-v3/solidly-v3-factory.js +44 -0
- package/build/dex/solidly-v3/solidly-v3-factory.js.map +1 -0
- package/build/dex/solidly-v3/solidly-v3-pool.d.ts +44 -0
- package/build/dex/solidly-v3/solidly-v3-pool.js +298 -0
- package/build/dex/solidly-v3/solidly-v3-pool.js.map +1 -0
- package/build/dex/solidly-v3/solidly-v3.d.ts +67 -0
- package/build/dex/solidly-v3/solidly-v3.js +590 -0
- package/build/dex/solidly-v3/solidly-v3.js.map +1 -0
- package/build/dex/solidly-v3/types.d.ts +132 -0
- package/build/dex/solidly-v3/types.js +9 -0
- package/build/dex/solidly-v3/types.js.map +1 -0
- package/build/dex/solidly-v3/utils.d.ts +6 -0
- package/build/dex/solidly-v3/utils.js +53 -0
- package/build/dex/solidly-v3/utils.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/config.d.ts +4 -0
- package/build/dex/trader-joe-v2-1-2/config.js +43 -0
- package/build/dex/trader-joe-v2-1-2/config.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/constants.d.ts +17 -0
- package/build/dex/trader-joe-v2-1-2/constants.js +19 -0
- package/build/dex/trader-joe-v2-1-2/constants.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +60 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +199 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +49 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +269 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/types.d.ts +81 -0
- package/build/dex/trader-joe-v2-1-2/types.js +9 -0
- package/build/dex/trader-joe-v2-1-2/types.js.map +1 -0
- package/build/dex/trader-joe-v2_1/config.d.ts +4 -0
- package/build/dex/trader-joe-v2_1/config.js +43 -0
- package/build/dex/trader-joe-v2_1/config.js.map +1 -0
- package/build/dex/trader-joe-v2_1/constants.d.ts +16 -0
- package/build/dex/trader-joe-v2_1/constants.js +18 -0
- package/build/dex/trader-joe-v2_1/constants.js.map +1 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +384 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +1 -0
- package/build/dex/trader-joe-v2_1/types.d.ts +39 -0
- package/build/dex/trader-joe-v2_1/types.js +3 -0
- package/build/dex/trader-joe-v2_1/types.js.map +1 -0
- package/build/dex/wombat/types.d.ts +2 -0
- package/build/dex/wombat/utils.d.ts +1 -0
- package/build/dex/wombat/utils.js +14 -1
- package/build/dex/wombat/utils.js.map +1 -1
- package/build/dex/wombat/wombat-bmw.d.ts +2 -2
- package/build/dex/wombat/wombat-bmw.js +8 -25
- package/build/dex/wombat/wombat-bmw.js.map +1 -1
- package/build/dex/wombat/wombat-pool-poller.d.ts +22 -0
- package/build/dex/wombat/wombat-pool-poller.js +164 -0
- package/build/dex/wombat/wombat-pool-poller.js.map +1 -0
- package/build/dex/wombat/wombat-pool.d.ts +51 -17
- package/build/dex/wombat/wombat-pool.js +393 -112
- package/build/dex/wombat/wombat-pool.js.map +1 -1
- package/build/dex/wombat/wombat.d.ts +1 -1
- package/build/dex/wombat/wombat.js +12 -18
- package/build/dex/wombat/wombat.js.map +1 -1
- package/package.json +1 -1
- package/src/abi/solidly-v3/SolidlyV3Pool.abi.json +738 -0
- package/src/abi/solidly-v3/SolidlyV3StateMulticall.abi.json +375 -0
- package/src/abi/wombat/pool-v3.json +2013 -0
- package/src/config.ts +2 -2
- package/src/dex/index.ts +4 -1
- package/src/dex/solidly-v3/config.ts +64 -0
- package/src/dex/solidly-v3/constants.ts +42 -0
- package/src/dex/solidly-v3/contract-math/BitMath.ts +90 -0
- package/src/dex/solidly-v3/contract-math/FixedPoint128.ts +3 -0
- package/src/dex/solidly-v3/contract-math/FixedPoint96.ts +4 -0
- package/src/dex/solidly-v3/contract-math/FullMath.ts +30 -0
- package/src/dex/solidly-v3/contract-math/LiquidityMath.ts +17 -0
- package/src/dex/solidly-v3/contract-math/SqrtPriceMath.ts +226 -0
- package/src/dex/solidly-v3/contract-math/SwapMath.ts +139 -0
- package/src/dex/solidly-v3/contract-math/Tick.ts +66 -0
- package/src/dex/solidly-v3/contract-math/TickBitMap.ts +123 -0
- package/src/dex/solidly-v3/contract-math/TickMath.ts +211 -0
- package/src/dex/solidly-v3/contract-math/UnsafeMath.ts +5 -0
- package/src/dex/solidly-v3/contract-math/uniswap-v3-math.ts +570 -0
- package/src/dex/solidly-v3/contract-math/utils.ts +50 -0
- package/src/dex/solidly-v3/solidly-v3-e2e.test.ts +124 -0
- package/src/dex/solidly-v3/solidly-v3-events.test.ts +144 -0
- package/src/dex/solidly-v3/solidly-v3-factory.ts +73 -0
- package/src/dex/solidly-v3/solidly-v3-integration.test.ts +358 -0
- package/src/dex/solidly-v3/solidly-v3-pool.ts +494 -0
- package/src/dex/solidly-v3/solidly-v3.ts +988 -0
- package/src/dex/solidly-v3/types.ts +158 -0
- package/src/dex/solidly-v3/utils.ts +71 -0
- package/src/dex/uniswap-v3/uniswap-v3-events.test.ts +3 -0
- package/src/dex/wombat/types.ts +5 -0
- package/src/dex/wombat/utils.ts +20 -0
- package/src/dex/wombat/wombat-bmw.ts +8 -31
- package/src/dex/wombat/wombat-e2e.test.ts +13 -1
- package/src/dex/wombat/wombat-events.test.ts +147 -0
- package/src/dex/wombat/wombat-integration.test.ts +101 -111
- package/src/dex/wombat/wombat-pool.ts +620 -171
- package/src/dex/wombat/wombat.ts +13 -23
- package/tests/constants-e2e.ts +11 -1
- /package/src/abi/wombat/{pool.json → pool-v2.json} +0 -0
package/build/config.js
CHANGED
|
@@ -21,9 +21,9 @@ const baseConfigs = {
|
|
|
21
21
|
Adapter01: '0x9bE264469eF954c139Da4A45Cf76CbCC5e3A6A73',
|
|
22
22
|
Adapter02: '0xFC2Ba6E830a04C25e207B8214b26d8C713F6881F',
|
|
23
23
|
Adapter03: '0xBAEeb4540f59d30E567a5B563CC0c4587eDd9366',
|
|
24
|
-
Adapter04: '
|
|
24
|
+
Adapter04: '0x369A2FDb910d432f0a07381a5E3d27572c876713',
|
|
25
25
|
BuyAdapter: '0x84bEF12C9931cE12662cc9F2366b6a5029E4BD29',
|
|
26
|
-
BuyAdapter02: '
|
|
26
|
+
BuyAdapter02: '0xe53d24CD81cC81bbf271AD7B02D0d67f851D727c',
|
|
27
27
|
},
|
|
28
28
|
uniswapV2ExchangeRouterAddress: '0xF9234CB08edb93c0d4a4d4c70cC3FfD070e78e07',
|
|
29
29
|
rpcPollingMaxAllowedStateDelayInBlocks: 0,
|
package/build/dex/index.js
CHANGED
|
@@ -37,12 +37,13 @@ const excalibur_1 = require("./uniswap-v2/excalibur");
|
|
|
37
37
|
const maker_psm_1 = require("./maker-psm/maker-psm");
|
|
38
38
|
const kyberdmm_1 = require("./kyberdmm/kyberdmm");
|
|
39
39
|
const platypus_1 = require("./platypus/platypus");
|
|
40
|
-
|
|
40
|
+
//import { Wombat } from './wombat/wombat';
|
|
41
41
|
const gmx_1 = require("./gmx/gmx");
|
|
42
42
|
const woo_fi_v2_1 = require("./woo-fi-v2/woo-fi-v2");
|
|
43
43
|
const paraswap_limit_orders_1 = require("./paraswap-limit-orders/paraswap-limit-orders");
|
|
44
44
|
const augustus_rfq_1 = require("./augustus-rfq");
|
|
45
45
|
const solidly_1 = require("./solidly/solidly");
|
|
46
|
+
const solidly_v3_1 = require("./solidly-v3/solidly-v3");
|
|
46
47
|
const ramses_1 = require("./solidly/forks-override/ramses");
|
|
47
48
|
const thena_1 = require("./solidly/forks-override/thena");
|
|
48
49
|
const chronos_1 = require("./solidly/forks-override/chronos");
|
|
@@ -81,6 +82,7 @@ const quick_perps_1 = require("./quick-perps/quick-perps");
|
|
|
81
82
|
const nomiswap_v2_1 = require("./uniswap-v2/nomiswap-v2");
|
|
82
83
|
const dexalot_1 = require("./dexalot/dexalot");
|
|
83
84
|
const smardex_1 = require("./smardex/smardex");
|
|
85
|
+
const wombat_1 = require("./wombat/wombat");
|
|
84
86
|
const LegacyDexes = [
|
|
85
87
|
curve_v2_1.CurveV2,
|
|
86
88
|
stable_pool_1.StablePool,
|
|
@@ -156,6 +158,7 @@ const Dexes = [
|
|
|
156
158
|
swaap_v2_1.SwaapV2,
|
|
157
159
|
quick_perps_1.QuickPerps,
|
|
158
160
|
nomiswap_v2_1.NomiswapV2,
|
|
161
|
+
solidly_v3_1.SolidlyV3,
|
|
159
162
|
smardex_1.Smardex,
|
|
160
163
|
wombat_1.Wombat,
|
|
161
164
|
];
|
package/build/dex/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dex/index.ts"],"names":[],"mappings":";;;AACA,yCAAqC;AAErC,qCAAkC;AAClC,qDAAiD;AACjD,+CAA2C;AAC3C,sCAAmC;AACnC,0EAAsE;AACtE,mCAAgC;AAChC,wDAAoD;AACpD,2DAAuD;AACvD,uDAA0D;AAC1D,wDAAoD;AACpD,sDAAwD;AACxD,sDAAsD;AACtD,gDAA6C;AAC7C,4CAAyC;AACzC,4CAAyC;AACzC,qCAAkC;AAClC,2CAAwC;AACxC,uCAAoC;AACpC,mCAAgC;AAChC,qCAAkC;AAClC,yCAAsC;AACtC,+CAA2C;AAC3C,+CAA2C;AAC3C,+CAA2C;AAC3C,2CAAwC;AACxC,uCAAmC;AACnC,uCAAmC;AACnC,uCAAoC;AACpC,yCAAsC;AAEtC,4CAAwC;AAExC,iCAA8B;AAC9B,sDAAmD;AACnD,qDAAiD;AACjD,kDAA+C;AAC/C,kDAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dex/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DexParams } from './types';
|
|
2
|
+
import { DexConfigMap, AdapterMappings } from '../../types';
|
|
3
|
+
import { Address } from '../../types';
|
|
4
|
+
export declare const PoolsToPreload: DexConfigMap<{
|
|
5
|
+
token0: Address;
|
|
6
|
+
token1: Address;
|
|
7
|
+
}[]>;
|
|
8
|
+
export declare const SolidlyV3Config: DexConfigMap<DexParams>;
|
|
9
|
+
export declare const Adapters: Record<number, AdapterMappings>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Adapters = exports.SolidlyV3Config = exports.PoolsToPreload = void 0;
|
|
4
|
+
const constants_1 = require("../../constants");
|
|
5
|
+
const SUPPORTED_TICK_SPACINGS = [1n, 10n, 50n, 100n];
|
|
6
|
+
// Pools that will be initialized on app startup
|
|
7
|
+
// They are added for testing
|
|
8
|
+
exports.PoolsToPreload = {
|
|
9
|
+
SolidlyV3: {
|
|
10
|
+
[constants_1.Network.MAINNET]: [
|
|
11
|
+
{
|
|
12
|
+
token0: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'.toLowerCase(),
|
|
13
|
+
token1: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'.toLowerCase(),
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
token0: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'.toLowerCase(),
|
|
17
|
+
token1: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'.toLowerCase(),
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
token0: '0x514910771AF9Ca656af840dff83E8264EcF986CA'.toLowerCase(),
|
|
21
|
+
token1: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'.toLowerCase(),
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
token0: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'.toLowerCase(),
|
|
25
|
+
token1: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'.toLowerCase(),
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
token0: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'.toLowerCase(),
|
|
29
|
+
token1: '0xdAC17F958D2ee523a2206206994597C13D831ec7'.toLowerCase(),
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
token0: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'.toLowerCase(),
|
|
33
|
+
token1: '0xdAC17F958D2ee523a2206206994597C13D831ec7'.toLowerCase(),
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
exports.SolidlyV3Config = {
|
|
39
|
+
SolidlyV3: {
|
|
40
|
+
[constants_1.Network.MAINNET]: {
|
|
41
|
+
factory: '0x70Fe4a44EA505cFa3A57b95cF2862D4fd5F0f687',
|
|
42
|
+
quoter: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',
|
|
43
|
+
supportedTickSpacings: SUPPORTED_TICK_SPACINGS,
|
|
44
|
+
stateMulticall: '0xb229563028302AA693EEaD62F80CC331aEDE4e26',
|
|
45
|
+
chunksCount: 10,
|
|
46
|
+
initRetryFrequency: 10,
|
|
47
|
+
initHash: `0xe9b68c5f77858eecac2e651646e208175e9b1359d68d0e14fc69f8c54e5010bf`,
|
|
48
|
+
subgraphURL: 'https://api.thegraph.com/subgraphs/name/solidlylabs/solidly-v3',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
exports.Adapters = {
|
|
53
|
+
[constants_1.Network.MAINNET]: {
|
|
54
|
+
[constants_1.SwapSide.SELL]: [{ name: 'Adapter04', index: 7 }],
|
|
55
|
+
[constants_1.SwapSide.BUY]: [{ name: 'BuyAdapter02', index: 3 }],
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/solidly-v3/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAGpD,MAAM,uBAAuB,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAErD,gDAAgD;AAChD,6BAA6B;AAChB,QAAA,cAAc,GAEvB;IACF,SAAS,EAAE;QACT,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB;gBACE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;gBAClE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;aACnE;YACD;gBACE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;gBAClE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;aACnE;YACD;gBACE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;gBAClE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;aACnE;YACD;gBACE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;gBAClE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;aACnE;YACD;gBACE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;gBAClE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;aACnE;YACD;gBACE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;gBAClE,MAAM,EAAE,4CAA4C,CAAC,WAAW,EAAE;aACnE;SACF;KACF;CACF,CAAC;AAEW,QAAA,eAAe,GAA4B;IACtD,SAAS,EAAE;QACT,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,OAAO,EAAE,4CAA4C;YACrD,MAAM,EAAE,4CAA4C;YACpD,qBAAqB,EAAE,uBAAuB;YAC9C,cAAc,EAAE,4CAA4C;YAC5D,WAAW,EAAE,EAAE;YACf,kBAAkB,EAAE,EAAE;YACtB,QAAQ,EAAE,oEAAoE;YAC9E,WAAW,EACT,gEAAgE;SACnE;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAAoC;IACvD,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClD,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACrD;CACF,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const UNISWAPV3_TICK_GAS_COST = 10000;
|
|
2
|
+
export declare const UNISWAPV3_TICK_BASE_OVERHEAD = 50000;
|
|
3
|
+
export declare const UNISWAPV3_POOL_SEARCH_OVERHEAD = 0;
|
|
4
|
+
export declare const TICK_BITMAP_TO_USE = 4n;
|
|
5
|
+
export declare const TICK_BITMAP_BUFFER = 8n;
|
|
6
|
+
export declare const MAX_PRICING_COMPUTATION_STEPS_ALLOWED = 128;
|
|
7
|
+
export declare const UNISWAPV3_SUBGRAPH_URL = "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3";
|
|
8
|
+
export declare const UNISWAPV3_EFFICIENCY_FACTOR = 3;
|
|
9
|
+
export declare const ZERO_TICK_INFO: {
|
|
10
|
+
liquidityGross: bigint;
|
|
11
|
+
liquidityNet: bigint;
|
|
12
|
+
initialized: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare const ZERO_ORACLE_OBSERVATION: {
|
|
15
|
+
blockTimestamp: bigint;
|
|
16
|
+
tickCumulative: bigint;
|
|
17
|
+
secondsPerLiquidityCumulativeX128: bigint;
|
|
18
|
+
initialized: boolean;
|
|
19
|
+
};
|
|
20
|
+
export declare const OUT_OF_RANGE_ERROR_POSTFIX = "INVALID_TICK_BIT_MAP_RANGES";
|
|
21
|
+
export declare const DEFAULT_POOL_INIT_CODE_HASH = "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54";
|
|
22
|
+
export declare enum DirectMethods {
|
|
23
|
+
directSell = "directUniV3Swap",
|
|
24
|
+
directBuy = "directUniV3Buy"
|
|
25
|
+
}
|
|
26
|
+
export declare const MIN_SQRT_RATIO: bigint;
|
|
27
|
+
export declare const MAX_SQRT_RATIO: bigint;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_SQRT_RATIO = exports.MIN_SQRT_RATIO = exports.DirectMethods = exports.DEFAULT_POOL_INIT_CODE_HASH = exports.OUT_OF_RANGE_ERROR_POSTFIX = exports.ZERO_ORACLE_OBSERVATION = exports.ZERO_TICK_INFO = exports.UNISWAPV3_EFFICIENCY_FACTOR = exports.UNISWAPV3_SUBGRAPH_URL = exports.MAX_PRICING_COMPUTATION_STEPS_ALLOWED = exports.TICK_BITMAP_BUFFER = exports.TICK_BITMAP_TO_USE = exports.UNISWAPV3_POOL_SEARCH_OVERHEAD = exports.UNISWAPV3_TICK_BASE_OVERHEAD = exports.UNISWAPV3_TICK_GAS_COST = void 0;
|
|
4
|
+
exports.UNISWAPV3_TICK_GAS_COST = 10000; // Ceiled
|
|
5
|
+
exports.UNISWAPV3_TICK_BASE_OVERHEAD = 50000;
|
|
6
|
+
exports.UNISWAPV3_POOL_SEARCH_OVERHEAD = 0;
|
|
7
|
+
// This is used for price calculation. If out of scope, return 0n
|
|
8
|
+
exports.TICK_BITMAP_TO_USE = 4n;
|
|
9
|
+
// This is used to check if the state is still valid.
|
|
10
|
+
exports.TICK_BITMAP_BUFFER = 8n;
|
|
11
|
+
exports.MAX_PRICING_COMPUTATION_STEPS_ALLOWED = 128;
|
|
12
|
+
exports.UNISWAPV3_SUBGRAPH_URL = 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3';
|
|
13
|
+
exports.UNISWAPV3_EFFICIENCY_FACTOR = 3;
|
|
14
|
+
exports.ZERO_TICK_INFO = {
|
|
15
|
+
liquidityGross: 0n,
|
|
16
|
+
liquidityNet: 0n,
|
|
17
|
+
initialized: false,
|
|
18
|
+
};
|
|
19
|
+
exports.ZERO_ORACLE_OBSERVATION = {
|
|
20
|
+
blockTimestamp: 0n,
|
|
21
|
+
tickCumulative: 0n,
|
|
22
|
+
secondsPerLiquidityCumulativeX128: 0n,
|
|
23
|
+
initialized: false,
|
|
24
|
+
};
|
|
25
|
+
exports.OUT_OF_RANGE_ERROR_POSTFIX = `INVALID_TICK_BIT_MAP_RANGES`;
|
|
26
|
+
exports.DEFAULT_POOL_INIT_CODE_HASH = `0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54`;
|
|
27
|
+
var DirectMethods;
|
|
28
|
+
(function (DirectMethods) {
|
|
29
|
+
DirectMethods["directSell"] = "directUniV3Swap";
|
|
30
|
+
DirectMethods["directBuy"] = "directUniV3Buy";
|
|
31
|
+
})(DirectMethods = exports.DirectMethods || (exports.DirectMethods = {}));
|
|
32
|
+
exports.MIN_SQRT_RATIO = BigInt('4295128739');
|
|
33
|
+
exports.MAX_SQRT_RATIO = BigInt('1461446703485210103287273052203988822378723970342');
|
|
34
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/solidly-v3/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,uBAAuB,GAAG,KAAM,CAAC,CAAC,SAAS;AAC3C,QAAA,4BAA4B,GAAG,KAAM,CAAC;AACtC,QAAA,8BAA8B,GAAG,CAAC,CAAC;AAEhD,iEAAiE;AACpD,QAAA,kBAAkB,GAAG,EAAE,CAAC;AAErC,qDAAqD;AACxC,QAAA,kBAAkB,GAAG,EAAE,CAAC;AAExB,QAAA,qCAAqC,GAAG,GAAG,CAAC;AAE5C,QAAA,sBAAsB,GACjC,4DAA4D,CAAC;AAElD,QAAA,2BAA2B,GAAG,CAAC,CAAC;AAEhC,QAAA,cAAc,GAAG;IAC5B,cAAc,EAAE,EAAE;IAClB,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,KAAK;CACnB,CAAC;AAEW,QAAA,uBAAuB,GAAG;IACrC,cAAc,EAAE,EAAE;IAClB,cAAc,EAAE,EAAE;IAClB,iCAAiC,EAAE,EAAE;IACrC,WAAW,EAAE,KAAK;CACnB,CAAC;AAEW,QAAA,0BAA0B,GAAG,6BAA6B,CAAC;AAE3D,QAAA,2BAA2B,GAAG,oEAAoE,CAAC;AAEhH,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,+CAA8B,CAAA;IAC9B,6CAA4B,CAAA;AAC9B,CAAC,EAHW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAGxB;AACY,QAAA,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACtC,QAAA,cAAc,GAAG,MAAM,CAClC,mDAAmD,CACpD,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BitMath = void 0;
|
|
4
|
+
const bigint_constants_1 = require("../../../bigint-constants");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
class BitMath {
|
|
7
|
+
static mostSignificantBit(x) {
|
|
8
|
+
(0, utils_1._require)(x > 0, '', { x }, 'x > 0');
|
|
9
|
+
let r = 0n;
|
|
10
|
+
if (x >= 0x100000000000000000000000000000000n) {
|
|
11
|
+
x >>= 128n;
|
|
12
|
+
r += 128n;
|
|
13
|
+
}
|
|
14
|
+
if (x >= 0x10000000000000000n) {
|
|
15
|
+
x >>= 64n;
|
|
16
|
+
r += 64n;
|
|
17
|
+
}
|
|
18
|
+
if (x >= 0x100000000n) {
|
|
19
|
+
x >>= 32n;
|
|
20
|
+
r += 32n;
|
|
21
|
+
}
|
|
22
|
+
if (x >= 0x10000n) {
|
|
23
|
+
x >>= 16n;
|
|
24
|
+
r += 16n;
|
|
25
|
+
}
|
|
26
|
+
if (x >= 0x100n) {
|
|
27
|
+
x >>= 8n;
|
|
28
|
+
r += 8n;
|
|
29
|
+
}
|
|
30
|
+
if (x >= 0x10n) {
|
|
31
|
+
x >>= 4n;
|
|
32
|
+
r += 4n;
|
|
33
|
+
}
|
|
34
|
+
if (x >= 0x4n) {
|
|
35
|
+
x >>= 2n;
|
|
36
|
+
r += 2n;
|
|
37
|
+
}
|
|
38
|
+
if (x >= 0x2n)
|
|
39
|
+
r += 1n;
|
|
40
|
+
return r;
|
|
41
|
+
}
|
|
42
|
+
static leastSignificantBit(x) {
|
|
43
|
+
(0, utils_1._require)(x > 0, '', { x }, 'x > 0');
|
|
44
|
+
let r = 255n;
|
|
45
|
+
if ((x & bigint_constants_1.BI_MAX_UINT128) > 0n) {
|
|
46
|
+
r -= 128n;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
x >>= 128n;
|
|
50
|
+
}
|
|
51
|
+
if ((x & bigint_constants_1.BI_MAX_UINT64) > 0n) {
|
|
52
|
+
r -= 64n;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
x >>= 64n;
|
|
56
|
+
}
|
|
57
|
+
if ((x & bigint_constants_1.BI_MAX_UINT32) > 0n) {
|
|
58
|
+
r -= 32n;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
x >>= 32n;
|
|
62
|
+
}
|
|
63
|
+
if ((x & bigint_constants_1.BI_MAX_UINT16) > 0n) {
|
|
64
|
+
r -= 16n;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
x >>= 16n;
|
|
68
|
+
}
|
|
69
|
+
if ((x & bigint_constants_1.BI_MAX_UINT8) > 0n) {
|
|
70
|
+
r -= 8n;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
x >>= 8n;
|
|
74
|
+
}
|
|
75
|
+
if ((x & 0xfn) > 0n) {
|
|
76
|
+
r -= 4n;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
x >>= 4n;
|
|
80
|
+
}
|
|
81
|
+
if ((x & 0x3n) > 0n) {
|
|
82
|
+
r -= 2n;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
x >>= 2n;
|
|
86
|
+
}
|
|
87
|
+
if ((x & 0x1n) > 0n)
|
|
88
|
+
r -= 1n;
|
|
89
|
+
return r;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.BitMath = BitMath;
|
|
93
|
+
//# sourceMappingURL=BitMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BitMath.js","sourceRoot":"","sources":["../../../../src/dex/solidly-v3/contract-math/BitMath.ts"],"names":[],"mappings":";;;AAAA,gEAMmC;AACnC,0CAA0C;AAE1C,MAAa,OAAO;IAClB,MAAM,CAAC,kBAAkB,CAAC,CAAS;QACjC,IAAA,gBAAQ,EAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QAEX,IAAI,CAAC,IAAI,oCAAoC,EAAE;YAC7C,CAAC,KAAK,IAAI,CAAC;YACX,CAAC,IAAI,IAAI,CAAC;SACX;QACD,IAAI,CAAC,IAAI,oBAAoB,EAAE;YAC7B,CAAC,KAAK,GAAG,CAAC;YACV,CAAC,IAAI,GAAG,CAAC;SACV;QACD,IAAI,CAAC,IAAI,YAAY,EAAE;YACrB,CAAC,KAAK,GAAG,CAAC;YACV,CAAC,IAAI,GAAG,CAAC;SACV;QACD,IAAI,CAAC,IAAI,QAAQ,EAAE;YACjB,CAAC,KAAK,GAAG,CAAC;YACV,CAAC,IAAI,GAAG,CAAC;SACV;QACD,IAAI,CAAC,IAAI,MAAM,EAAE;YACf,CAAC,KAAK,EAAE,CAAC;YACT,CAAC,IAAI,EAAE,CAAC;SACT;QACD,IAAI,CAAC,IAAI,KAAK,EAAE;YACd,CAAC,KAAK,EAAE,CAAC;YACT,CAAC,IAAI,EAAE,CAAC;SACT;QACD,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,CAAC,KAAK,EAAE,CAAC;YACT,CAAC,IAAI,EAAE,CAAC;SACT;QACD,IAAI,CAAC,IAAI,IAAI;YAAE,CAAC,IAAI,EAAE,CAAC;QAEvB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,CAAS;QAClC,IAAA,gBAAQ,EAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAEpC,IAAI,CAAC,GAAG,IAAI,CAAC;QACb,IAAI,CAAC,CAAC,GAAG,iCAAc,CAAC,GAAG,EAAE,EAAE;YAC7B,CAAC,IAAI,IAAI,CAAC;SACX;aAAM;YACL,CAAC,KAAK,IAAI,CAAC;SACZ;QACD,IAAI,CAAC,CAAC,GAAG,gCAAa,CAAC,GAAG,EAAE,EAAE;YAC5B,CAAC,IAAI,GAAG,CAAC;SACV;aAAM;YACL,CAAC,KAAK,GAAG,CAAC;SACX;QACD,IAAI,CAAC,CAAC,GAAG,gCAAa,CAAC,GAAG,EAAE,EAAE;YAC5B,CAAC,IAAI,GAAG,CAAC;SACV;aAAM;YACL,CAAC,KAAK,GAAG,CAAC;SACX;QACD,IAAI,CAAC,CAAC,GAAG,gCAAa,CAAC,GAAG,EAAE,EAAE;YAC5B,CAAC,IAAI,GAAG,CAAC;SACV;aAAM;YACL,CAAC,KAAK,GAAG,CAAC;SACX;QACD,IAAI,CAAC,CAAC,GAAG,+BAAY,CAAC,GAAG,EAAE,EAAE;YAC3B,CAAC,IAAI,EAAE,CAAC;SACT;aAAM;YACL,CAAC,KAAK,EAAE,CAAC;SACV;QACD,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;YACnB,CAAC,IAAI,EAAE,CAAC;SACT;aAAM;YACL,CAAC,KAAK,EAAE,CAAC;SACV;QACD,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;YACnB,CAAC,IAAI,EAAE,CAAC;SACT;aAAM;YACL,CAAC,KAAK,EAAE,CAAC;SACV;QACD,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YAAE,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AAhFD,0BAgFC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FixedPoint128 = void 0;
|
|
4
|
+
class FixedPoint128 {
|
|
5
|
+
}
|
|
6
|
+
exports.FixedPoint128 = FixedPoint128;
|
|
7
|
+
FixedPoint128.Q128 = 0x100000000000000000000000000000000n;
|
|
8
|
+
//# sourceMappingURL=FixedPoint128.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FixedPoint128.js","sourceRoot":"","sources":["../../../../src/dex/solidly-v3/contract-math/FixedPoint128.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAa;;AAA1B,sCAEC;AADiB,kBAAI,GAAG,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FixedPoint96 = void 0;
|
|
4
|
+
class FixedPoint96 {
|
|
5
|
+
}
|
|
6
|
+
exports.FixedPoint96 = FixedPoint96;
|
|
7
|
+
FixedPoint96.RESOLUTION = 96n;
|
|
8
|
+
FixedPoint96.Q96 = 0x1000000000000000000000000n;
|
|
9
|
+
//# sourceMappingURL=FixedPoint96.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FixedPoint96.js","sourceRoot":"","sources":["../../../../src/dex/solidly-v3/contract-math/FixedPoint96.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;;AAAzB,oCAGC;AAFiB,uBAAU,GAAG,GAAG,CAAC;AACjB,gBAAG,GAAG,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FullMath = void 0;
|
|
4
|
+
const bigint_constants_1 = require("../../../bigint-constants");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
class FullMath {
|
|
7
|
+
static mulDiv(a, b, denominator) {
|
|
8
|
+
const result = (a * b) / denominator;
|
|
9
|
+
(0, utils_1._require)(result <= bigint_constants_1.BI_MAX_UINT256, '', { result, BI_MAX_UINT: bigint_constants_1.BI_MAX_UINT256 }, 'result <= BI_MAX_UINT');
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
static mulDivRoundingUp(a, b, denominator) {
|
|
13
|
+
const result = (a * b + denominator - 1n) / denominator;
|
|
14
|
+
(0, utils_1._require)(result <= bigint_constants_1.BI_MAX_UINT256, '', { result, BI_MAX_UINT: bigint_constants_1.BI_MAX_UINT256 }, 'result <= BI_MAX_UINT');
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.FullMath = FullMath;
|
|
19
|
+
//# sourceMappingURL=FullMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FullMath.js","sourceRoot":"","sources":["../../../../src/dex/solidly-v3/contract-math/FullMath.ts"],"names":[],"mappings":";;;AAAA,gEAA2D;AAC3D,0CAA0C;AAE1C,MAAa,QAAQ;IACnB,MAAM,CAAC,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,WAAmB;QACrD,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;QAErC,IAAA,gBAAQ,EACN,MAAM,IAAI,iCAAc,EACxB,EAAE,EACF,EAAE,MAAM,EAAE,WAAW,EAAE,iCAAc,EAAE,EACvC,uBAAuB,CACxB,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,CAAS,EAAE,CAAS,EAAE,WAAmB;QAC/D,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC;QAExD,IAAA,gBAAQ,EACN,MAAM,IAAI,iCAAc,EACxB,EAAE,EACF,EAAE,MAAM,EAAE,WAAW,EAAE,iCAAc,EAAE,EACvC,uBAAuB,CACxB,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA1BD,4BA0BC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LiquidityMath = void 0;
|
|
4
|
+
const utils_1 = require("../../../utils");
|
|
5
|
+
class LiquidityMath {
|
|
6
|
+
static addDelta(x, y) {
|
|
7
|
+
let z;
|
|
8
|
+
if (y < 0) {
|
|
9
|
+
const _y = BigInt.asUintN(128, -y);
|
|
10
|
+
z = x - _y;
|
|
11
|
+
(0, utils_1._require)(z < x, 'LS', { z, x, y, _y }, 'z < x');
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
const _y = BigInt.asUintN(128, y);
|
|
15
|
+
z = x + _y;
|
|
16
|
+
(0, utils_1._require)(z >= x, 'LA', { z, x, y, _y }, 'z >= x');
|
|
17
|
+
}
|
|
18
|
+
return z;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.LiquidityMath = LiquidityMath;
|
|
22
|
+
//# sourceMappingURL=LiquidityMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiquidityMath.js","sourceRoot":"","sources":["../../../../src/dex/solidly-v3/contract-math/LiquidityMath.ts"],"names":[],"mappings":";;;AAAA,0CAA0C;AAE1C,MAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,CAAS,EAAE,CAAS;QAClC,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACX,IAAA,gBAAQ,EAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;SACjD;aAAM;YACL,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACX,IAAA,gBAAQ,EAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;SACnD;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AAdD,sCAcC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class SqrtPriceMath {
|
|
2
|
+
static getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96: bigint, liquidity: bigint, amount: bigint, add: boolean): bigint;
|
|
3
|
+
static getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96: bigint, liquidity: bigint, amount: bigint, add: boolean): bigint;
|
|
4
|
+
static getNextSqrtPriceFromInput(sqrtPX96: bigint, liquidity: bigint, amountIn: bigint, zeroForOne: boolean): bigint;
|
|
5
|
+
static getNextSqrtPriceFromOutput(sqrtPX96: bigint, liquidity: bigint, amountOut: bigint, zeroForOne: boolean): bigint;
|
|
6
|
+
static getAmount0Delta(sqrtRatioAX96: bigint, sqrtRatioBX96: bigint, liquidity: bigint, roundUp: boolean): bigint;
|
|
7
|
+
static getAmount1Delta(sqrtRatioAX96: bigint, sqrtRatioBX96: bigint, liquidity: bigint, roundUp: boolean): bigint;
|
|
8
|
+
static _getAmount0DeltaO(sqrtRatioAX96: bigint, sqrtRatioBX96: bigint, liquidity: bigint): bigint;
|
|
9
|
+
static _getAmount1DeltaO(sqrtRatioAX96: bigint, sqrtRatioBX96: bigint, liquidity: bigint): bigint;
|
|
10
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SqrtPriceMath = void 0;
|
|
4
|
+
const bigint_constants_1 = require("../../../bigint-constants");
|
|
5
|
+
const FixedPoint96_1 = require("./FixedPoint96");
|
|
6
|
+
const FullMath_1 = require("./FullMath");
|
|
7
|
+
const UnsafeMath_1 = require("./UnsafeMath");
|
|
8
|
+
const utils_1 = require("../../../utils");
|
|
9
|
+
class SqrtPriceMath {
|
|
10
|
+
static getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96, liquidity, amount, add) {
|
|
11
|
+
if (amount === 0n)
|
|
12
|
+
return sqrtPX96;
|
|
13
|
+
const numerator1 = BigInt.asUintN(256, liquidity) << FixedPoint96_1.FixedPoint96.RESOLUTION;
|
|
14
|
+
const product = amount * sqrtPX96;
|
|
15
|
+
if (add) {
|
|
16
|
+
if (product / amount === sqrtPX96) {
|
|
17
|
+
const denominator = numerator1 + product;
|
|
18
|
+
if (denominator >= numerator1) {
|
|
19
|
+
return BigInt.asUintN(160, FullMath_1.FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return BigInt.asUintN(160, UnsafeMath_1.UnsafeMath.divRoundingUp(numerator1, numerator1 / sqrtPX96 + amount));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
(0, utils_1._require)(product / amount === sqrtPX96 && numerator1 > product, '', { product, amount, sqrtPX96, numerator1 }, 'product / amount === sqrtPX96 && numerator1 > product');
|
|
26
|
+
const denominator = numerator1 - product;
|
|
27
|
+
return BigInt.asUintN(160, FullMath_1.FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
static getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96, liquidity, amount, add) {
|
|
31
|
+
if (add) {
|
|
32
|
+
const quotient = amount <= bigint_constants_1.BI_MAX_UINT160
|
|
33
|
+
? (amount << FixedPoint96_1.FixedPoint96.RESOLUTION) / liquidity
|
|
34
|
+
: FullMath_1.FullMath.mulDiv(amount, FixedPoint96_1.FixedPoint96.Q96, liquidity);
|
|
35
|
+
return BigInt.asUintN(160, BigInt.asUintN(256, sqrtPX96) + quotient);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const quotient = amount <= bigint_constants_1.BI_MAX_UINT160
|
|
39
|
+
? UnsafeMath_1.UnsafeMath.divRoundingUp(amount << FixedPoint96_1.FixedPoint96.RESOLUTION, liquidity)
|
|
40
|
+
: FullMath_1.FullMath.mulDivRoundingUp(amount, FixedPoint96_1.FixedPoint96.Q96, liquidity);
|
|
41
|
+
(0, utils_1._require)(sqrtPX96 > quotient, '', { sqrtPX96, quotient }, 'sqrtPX96 > quotient');
|
|
42
|
+
return BigInt.asUintN(160, sqrtPX96 - quotient);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
static getNextSqrtPriceFromInput(sqrtPX96, liquidity, amountIn, zeroForOne) {
|
|
46
|
+
(0, utils_1._require)(sqrtPX96 > 0n, '', { sqrtPX96 }, 'sqrtPX96 > 0n');
|
|
47
|
+
(0, utils_1._require)(liquidity > 0n, '', { liquidity }, 'liquidity > 0n');
|
|
48
|
+
return zeroForOne
|
|
49
|
+
? SqrtPriceMath.getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96, liquidity, amountIn, true)
|
|
50
|
+
: SqrtPriceMath.getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96, liquidity, amountIn, true);
|
|
51
|
+
}
|
|
52
|
+
static getNextSqrtPriceFromOutput(sqrtPX96, liquidity, amountOut, zeroForOne) {
|
|
53
|
+
(0, utils_1._require)(sqrtPX96 > 0n, '', { sqrtPX96 }, 'sqrtPX96 > 0n');
|
|
54
|
+
(0, utils_1._require)(liquidity > 0n, '', { liquidity }, 'liquidity > 0n');
|
|
55
|
+
return zeroForOne
|
|
56
|
+
? SqrtPriceMath.getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96, liquidity, amountOut, false)
|
|
57
|
+
: SqrtPriceMath.getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96, liquidity, amountOut, false);
|
|
58
|
+
}
|
|
59
|
+
static getAmount0Delta(sqrtRatioAX96, sqrtRatioBX96, liquidity, roundUp) {
|
|
60
|
+
if (sqrtRatioAX96 > sqrtRatioBX96) {
|
|
61
|
+
[sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];
|
|
62
|
+
}
|
|
63
|
+
const numerator1 = BigInt.asUintN(256, liquidity) << FixedPoint96_1.FixedPoint96.RESOLUTION;
|
|
64
|
+
const numerator2 = sqrtRatioBX96 - sqrtRatioAX96;
|
|
65
|
+
(0, utils_1._require)(sqrtRatioAX96 > 0, '', { sqrtRatioAX96 }, 'sqrtRatioAX96 > 0');
|
|
66
|
+
return roundUp
|
|
67
|
+
? UnsafeMath_1.UnsafeMath.divRoundingUp(FullMath_1.FullMath.mulDivRoundingUp(numerator1, numerator2, sqrtRatioBX96), sqrtRatioAX96)
|
|
68
|
+
: FullMath_1.FullMath.mulDiv(numerator1, numerator2, sqrtRatioBX96) / sqrtRatioAX96;
|
|
69
|
+
}
|
|
70
|
+
static getAmount1Delta(sqrtRatioAX96, sqrtRatioBX96, liquidity, roundUp) {
|
|
71
|
+
if (sqrtRatioAX96 > sqrtRatioBX96)
|
|
72
|
+
[sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];
|
|
73
|
+
return roundUp
|
|
74
|
+
? FullMath_1.FullMath.mulDivRoundingUp(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96_1.FixedPoint96.Q96)
|
|
75
|
+
: FullMath_1.FullMath.mulDiv(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96_1.FixedPoint96.Q96);
|
|
76
|
+
}
|
|
77
|
+
// Overloaded with different argument numbers
|
|
78
|
+
static _getAmount0DeltaO(sqrtRatioAX96, sqrtRatioBX96, liquidity) {
|
|
79
|
+
return liquidity < 0
|
|
80
|
+
? -BigInt.asIntN(256, SqrtPriceMath.getAmount0Delta(sqrtRatioAX96, sqrtRatioBX96, BigInt.asUintN(128, -liquidity), false))
|
|
81
|
+
: BigInt.asIntN(256, SqrtPriceMath.getAmount0Delta(sqrtRatioAX96, sqrtRatioBX96, BigInt.asUintN(128, liquidity), true));
|
|
82
|
+
}
|
|
83
|
+
// Overloaded with different argument numbers
|
|
84
|
+
static _getAmount1DeltaO(sqrtRatioAX96, sqrtRatioBX96, liquidity) {
|
|
85
|
+
return liquidity < 0
|
|
86
|
+
? -BigInt.asIntN(256, SqrtPriceMath.getAmount1Delta(sqrtRatioAX96, sqrtRatioBX96, BigInt.asUintN(128, -liquidity), false))
|
|
87
|
+
: BigInt.asIntN(256, SqrtPriceMath.getAmount1Delta(sqrtRatioAX96, sqrtRatioBX96, BigInt.asUintN(128, liquidity), true));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.SqrtPriceMath = SqrtPriceMath;
|
|
91
|
+
//# sourceMappingURL=SqrtPriceMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqrtPriceMath.js","sourceRoot":"","sources":["../../../../src/dex/solidly-v3/contract-math/SqrtPriceMath.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class SwapMath {
|
|
2
|
+
static computeSwapStep(sqrtRatioCurrentX96: bigint, sqrtRatioTargetX96: bigint, liquidity: bigint, amountRemaining: bigint, feePips: bigint): {
|
|
3
|
+
sqrtRatioNextX96: bigint;
|
|
4
|
+
amountIn: bigint;
|
|
5
|
+
amountOut: bigint;
|
|
6
|
+
feeAmount: bigint;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwapMath = void 0;
|
|
4
|
+
const bigint_constants_1 = require("../../../bigint-constants");
|
|
5
|
+
const FullMath_1 = require("./FullMath");
|
|
6
|
+
const SqrtPriceMath_1 = require("./SqrtPriceMath");
|
|
7
|
+
class SwapMath {
|
|
8
|
+
static computeSwapStep(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, amountRemaining, feePips) {
|
|
9
|
+
const zeroForOne = sqrtRatioCurrentX96 >= sqrtRatioTargetX96;
|
|
10
|
+
const exactIn = amountRemaining >= 0n;
|
|
11
|
+
let sqrtRatioNextX96 = 0n;
|
|
12
|
+
let amountIn = 0n;
|
|
13
|
+
let amountOut = 0n;
|
|
14
|
+
let feeAmount = 0n;
|
|
15
|
+
if (exactIn) {
|
|
16
|
+
const amountRemainingLessFee = FullMath_1.FullMath.mulDiv(BigInt.asUintN(256, amountRemaining), bigint_constants_1.BI_POWS[6] - feePips, bigint_constants_1.BI_POWS[6]);
|
|
17
|
+
amountIn = zeroForOne
|
|
18
|
+
? SqrtPriceMath_1.SqrtPriceMath.getAmount0Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, true)
|
|
19
|
+
: SqrtPriceMath_1.SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, true);
|
|
20
|
+
if (amountRemainingLessFee >= amountIn)
|
|
21
|
+
sqrtRatioNextX96 = sqrtRatioTargetX96;
|
|
22
|
+
else
|
|
23
|
+
sqrtRatioNextX96 = SqrtPriceMath_1.SqrtPriceMath.getNextSqrtPriceFromInput(sqrtRatioCurrentX96, liquidity, amountRemainingLessFee, zeroForOne);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
amountOut = zeroForOne
|
|
27
|
+
? SqrtPriceMath_1.SqrtPriceMath.getAmount1Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, false)
|
|
28
|
+
: SqrtPriceMath_1.SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, false);
|
|
29
|
+
if (BigInt.asUintN(256, -amountRemaining) >= amountOut)
|
|
30
|
+
sqrtRatioNextX96 = sqrtRatioTargetX96;
|
|
31
|
+
else
|
|
32
|
+
sqrtRatioNextX96 = SqrtPriceMath_1.SqrtPriceMath.getNextSqrtPriceFromOutput(sqrtRatioCurrentX96, liquidity, BigInt.asUintN(256, -amountRemaining), zeroForOne);
|
|
33
|
+
}
|
|
34
|
+
const max = sqrtRatioTargetX96 == sqrtRatioNextX96;
|
|
35
|
+
if (zeroForOne) {
|
|
36
|
+
amountIn =
|
|
37
|
+
max && exactIn
|
|
38
|
+
? amountIn
|
|
39
|
+
: SqrtPriceMath_1.SqrtPriceMath.getAmount0Delta(sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, true);
|
|
40
|
+
amountOut =
|
|
41
|
+
max && !exactIn
|
|
42
|
+
? amountOut
|
|
43
|
+
: SqrtPriceMath_1.SqrtPriceMath.getAmount1Delta(sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, false);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
amountIn =
|
|
47
|
+
max && exactIn
|
|
48
|
+
? amountIn
|
|
49
|
+
: SqrtPriceMath_1.SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, sqrtRatioNextX96, liquidity, true);
|
|
50
|
+
amountOut =
|
|
51
|
+
max && !exactIn
|
|
52
|
+
? amountOut
|
|
53
|
+
: SqrtPriceMath_1.SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, sqrtRatioNextX96, liquidity, false);
|
|
54
|
+
}
|
|
55
|
+
// cap the output amount to not exceed the remaining output amount
|
|
56
|
+
if (!exactIn && amountOut > BigInt.asUintN(256, -amountRemaining)) {
|
|
57
|
+
amountOut = BigInt.asUintN(256, -amountRemaining);
|
|
58
|
+
}
|
|
59
|
+
if (exactIn && sqrtRatioNextX96 != sqrtRatioTargetX96) {
|
|
60
|
+
// we didn't reach the target, so take the remainder of the maximum input as fee
|
|
61
|
+
feeAmount = BigInt.asUintN(256, amountRemaining) - amountIn;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
feeAmount = FullMath_1.FullMath.mulDivRoundingUp(amountIn, feePips, bigint_constants_1.BI_POWS[6] - feePips);
|
|
65
|
+
}
|
|
66
|
+
return { sqrtRatioNextX96, amountIn, amountOut, feeAmount };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.SwapMath = SwapMath;
|
|
70
|
+
//# sourceMappingURL=SwapMath.js.map
|