@paraswap/dex-lib 5.1.8 → 5.1.9
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/idle-dao/idle-cdo-factory.json +38 -0
- package/build/abi/idle-dao/idle-cdo.json +1245 -0
- package/build/abi/infusion/InfusionFactory.json +147 -0
- package/build/abi/infusion/InfusionPair.json +658 -0
- package/build/abi/infusion/InfusionRouter.json +442 -0
- package/build/abi/maker-psm/pot.json +322 -0
- package/build/abi/maker-psm/psm.json +243 -0
- package/build/abi/maker-psm/vat.json +363 -0
- package/build/abi/nomiswap-v2/nomiswap-v2-pool.json +773 -0
- package/build/abi/quick-perps/fast-price-events.json +70 -0
- package/build/abi/quick-perps/fast-price-feed.json +741 -0
- package/build/abi/quick-perps/reader.json +313 -0
- package/build/abi/quick-perps/vault-price-feed.json +323 -0
- package/build/abi/quick-perps/vault.json +1953 -0
- package/build/abi/uniswap-v2/excalibur-pool.json +881 -0
- package/build/abi/uniswap-v2/mdex-factory.json +759 -0
- 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/dex/OneInchLp.d.ts +24 -0
- package/build/dex/OneInchLp.js +43 -0
- package/build/dex/OneInchLp.js.map +1 -0
- package/build/dex/algebra/algebra.js +2 -1
- package/build/dex/algebra/algebra.js.map +1 -1
- 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/camelot/camelot.js +3 -1
- package/build/dex/camelot/camelot.js.map +1 -1
- package/build/dex/dexalot/dexalot.js +7 -3
- package/build/dex/dexalot/dexalot.js.map +1 -1
- package/build/dex/ekubo/ekubo.d.ts +1 -0
- package/build/dex/ekubo/ekubo.js +20 -20
- package/build/dex/ekubo/ekubo.js.map +1 -1
- package/build/dex/ekubo/pools/base-pool.d.ts +47 -0
- package/build/dex/ekubo/pools/base-pool.js +184 -0
- package/build/dex/ekubo/pools/base-pool.js.map +1 -0
- package/build/dex/ekubo/pools/iface.d.ts +46 -0
- package/build/dex/ekubo/pools/iface.js +75 -0
- package/build/dex/ekubo/pools/iface.js.map +1 -0
- package/build/dex/ekubo/pools/math/price.d.ts +7 -0
- package/build/dex/ekubo/pools/math/price.js +112 -0
- package/build/dex/ekubo/pools/math/price.js.map +1 -0
- package/build/dex/ekubo/pools/oracle-pool.d.ts +10 -0
- package/build/dex/ekubo/pools/oracle-pool.js +19 -0
- package/build/dex/ekubo/pools/oracle-pool.js.map +1 -0
- package/build/dex/ekubo/pools/pool-utils.d.ts +44 -0
- package/build/dex/ekubo/pools/pool-utils.js +240 -0
- package/build/dex/ekubo/pools/pool-utils.js.map +1 -0
- package/build/dex/generic-rfq/generic-rfq.js +1 -1
- package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
- package/build/dex/idle-dao/config.d.ts +5 -0
- package/build/dex/idle-dao/config.js +24 -0
- package/build/dex/idle-dao/config.js.map +1 -0
- package/build/dex/idle-dao/idle-dao.d.ts +42 -0
- package/build/dex/idle-dao/idle-dao.js +279 -0
- package/build/dex/idle-dao/idle-dao.js.map +1 -0
- package/build/dex/idle-dao/token_list.d.ts +4 -0
- package/build/dex/idle-dao/token_list.js +289 -0
- package/build/dex/idle-dao/token_list.js.map +1 -0
- package/build/dex/idle-dao/tokens.d.ts +9 -0
- package/build/dex/idle-dao/tokens.js +68 -0
- package/build/dex/idle-dao/tokens.js.map +1 -0
- package/build/dex/idle-dao/types.d.ts +35 -0
- package/build/dex/idle-dao/types.js +11 -0
- package/build/dex/idle-dao/types.js.map +1 -0
- package/build/dex/idle-dao/utils.d.ts +8 -0
- package/build/dex/idle-dao/utils.js +149 -0
- package/build/dex/idle-dao/utils.js.map +1 -0
- package/build/dex/infusion/config.d.ts +3 -0
- package/build/dex/infusion/config.js +20 -0
- package/build/dex/infusion/config.js.map +1 -0
- package/build/dex/infusion/infusion-stable-pool.d.ts +4 -0
- package/build/dex/infusion/infusion-stable-pool.js +74 -0
- package/build/dex/infusion/infusion-stable-pool.js.map +1 -0
- package/build/dex/infusion/infusion.d.ts +51 -0
- package/build/dex/infusion/infusion.js +500 -0
- package/build/dex/infusion/infusion.js.map +1 -0
- package/build/dex/infusion/types.d.ts +45 -0
- package/build/dex/infusion/types.js.map +1 -0
- package/build/dex/infusion/utils/isStablePair.d.ts +2 -0
- package/build/dex/infusion/utils/isStablePair.js +18 -0
- package/build/dex/infusion/utils/isStablePair.js.map +1 -0
- 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/maker-psm/config.d.ts +11 -0
- package/build/dex/maker-psm/config.js +53 -0
- package/build/dex/maker-psm/config.js.map +1 -0
- package/build/dex/maker-psm/maker-psm.d.ts +103 -0
- package/build/dex/maker-psm/maker-psm.js +493 -0
- package/build/dex/maker-psm/maker-psm.js.map +1 -0
- package/build/dex/maker-psm/types.d.ts +39 -0
- package/build/{generic-swap-transaction-builder/dex-encoder/ports.js → dex/maker-psm/types.js} +1 -1
- package/build/dex/maker-psm/types.js.map +1 -0
- 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/quick-perps/config.d.ts +11 -0
- package/build/dex/quick-perps/config.js +27 -0
- package/build/dex/quick-perps/config.js.map +1 -0
- package/build/dex/quick-perps/fast-price-feed.d.ts +26 -0
- package/build/dex/quick-perps/fast-price-feed.js +184 -0
- package/build/dex/quick-perps/fast-price-feed.js.map +1 -0
- package/build/dex/quick-perps/pool.d.ts +21 -0
- package/build/dex/quick-perps/pool.js +229 -0
- package/build/dex/quick-perps/pool.js.map +1 -0
- package/build/dex/quick-perps/quick-perps.d.ts +53 -0
- package/build/dex/quick-perps/quick-perps.js +247 -0
- package/build/dex/quick-perps/quick-perps.js.map +1 -0
- package/build/dex/quick-perps/types.d.ts +98 -0
- package/build/{executor/encoding-types.js → dex/quick-perps/types.js} +1 -1
- package/build/dex/quick-perps/types.js.map +1 -0
- package/build/dex/quick-perps/usdq.d.ts +15 -0
- package/build/dex/quick-perps/usdq.js +62 -0
- package/build/dex/quick-perps/usdq.js.map +1 -0
- package/build/dex/quick-perps/vault-price-feed.d.ts +43 -0
- package/build/dex/quick-perps/vault-price-feed.js +203 -0
- package/build/dex/quick-perps/vault-price-feed.js.map +1 -0
- package/build/dex/quick-perps/vault-utils.d.ts +8 -0
- package/build/dex/quick-perps/vault-utils.js +42 -0
- package/build/dex/quick-perps/vault-utils.js.map +1 -0
- package/build/dex/quick-perps/vault.d.ts +46 -0
- package/build/dex/quick-perps/vault.js +182 -0
- package/build/dex/quick-perps/vault.js.map +1 -0
- package/build/dex/se-vlr/config.d.ts +3 -0
- package/build/dex/se-vlr/config.js +24 -0
- package/build/dex/se-vlr/config.js.map +1 -0
- package/build/dex/se-vlr/se-vlr-pool.d.ts +39 -0
- package/build/dex/se-vlr/se-vlr-pool.js +70 -0
- package/build/dex/se-vlr/se-vlr-pool.js.map +1 -0
- package/build/dex/se-vlr/se-vlr.d.ts +35 -0
- package/build/dex/se-vlr/se-vlr.js +131 -0
- package/build/dex/se-vlr/se-vlr.js.map +1 -0
- package/build/dex/se-vlr/types.d.ts +6 -0
- package/build/dex/se-vlr/types.js +3 -0
- package/build/dex/se-vlr/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/solidly/forks-override/aerodrome.d.ts +14 -0
- package/build/dex/solidly/forks-override/aerodrome.js +46 -0
- package/build/dex/solidly/forks-override/aerodrome.js.map +1 -0
- package/build/dex/solidly/forks-override/chronos.d.ts +23 -0
- package/build/dex/solidly/forks-override/chronos.js +141 -0
- package/build/dex/solidly/forks-override/chronos.js.map +1 -0
- package/build/dex/solidly/forks-override/usdfi.d.ts +8 -0
- package/build/dex/solidly/forks-override/usdfi.js +15 -0
- package/build/dex/solidly/forks-override/usdfi.js.map +1 -0
- package/build/dex/solidly/forks-override/velocimeter.d.ts +23 -0
- package/build/dex/solidly/forks-override/velocimeter.js +77 -0
- package/build/dex/solidly/forks-override/velocimeter.js.map +1 -0
- package/build/dex/tessera/types.d.ts +3 -0
- package/build/dex/tessera/types.js +3 -0
- package/build/dex/tessera/types.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/dfyn.d.ts +19 -0
- package/build/dex/uniswap-v2/dfyn.js +61 -0
- package/build/dex/uniswap-v2/dfyn.js.map +1 -0
- package/build/dex/uniswap-v2/excalibur.d.ts +24 -0
- package/build/dex/uniswap-v2/excalibur.js +47 -0
- package/build/dex/uniswap-v2/excalibur.js.map +1 -0
- package/build/dex/uniswap-v2/mdex.d.ts +24 -0
- package/build/dex/uniswap-v2/mdex.js +50 -0
- package/build/dex/uniswap-v2/mdex.js.map +1 -0
- package/build/dex/uniswap-v2/nomiswap-v2.d.ts +24 -0
- package/build/dex/uniswap-v2/nomiswap-v2.js +57 -0
- package/build/dex/uniswap-v2/nomiswap-v2.js.map +1 -0
- package/build/dex/uniswap-v3/scripts/bench-all-dexes.js +160 -0
- package/build/dex/uniswap-v3/scripts/bench-all-dexes.js.map +1 -0
- 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-v4/contract-math/Position.d.ts +3 -0
- package/build/dex/uniswap-v4/contract-math/Position.js +10 -0
- package/build/dex/uniswap-v4/contract-math/Position.js.map +1 -0
- 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/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/generic-swap-transaction-builder.js +2 -2
- package/build/generic-swap-transaction-builder.js.map +1 -1
- package/package.json +15 -13
- package/build/abi/pancakeswap-infinity/cl-pool-manager.json +0 -80
- package/build/dex/fluid-dex/scripts/measure-calc-time.js +0 -178
- package/build/dex/fluid-dex/scripts/measure-calc-time.js.map +0 -1
- package/build/dex/uniswap-v4/api-go/compare-pricing.d.ts +0 -1
- package/build/dex/uniswap-v4/api-go/compare-pricing.js +0 -187
- package/build/dex/uniswap-v4/api-go/compare-pricing.js.map +0 -1
- package/build/dex/uniswap-v4/api-go/compare-states.d.ts +0 -1
- package/build/dex/uniswap-v4/api-go/compare-states.js +0 -149
- package/build/dex/uniswap-v4/api-go/compare-states.js.map +0 -1
- package/build/dex/uniswap-v4/api-go/fetch-pool-key.d.ts +0 -0
- package/build/dex/uniswap-v4/api-go/fetch-pool-key.js +0 -140
- package/build/dex/uniswap-v4/api-go/fetch-pool-key.js.map +0 -1
- package/build/executor/__test-utils__/snapshot-test-helpers.d.ts +0 -10
- package/build/executor/__test-utils__/snapshot-test-helpers.js +0 -72
- package/build/executor/__test-utils__/snapshot-test-helpers.js.map +0 -1
- package/build/executor/address-utils.d.ts +0 -2
- package/build/executor/address-utils.js +0 -7
- package/build/executor/address-utils.js.map +0 -1
- package/build/executor/approval.d.ts +0 -9
- package/build/executor/approval.js +0 -29
- package/build/executor/approval.js.map +0 -1
- package/build/executor/encoding-context.d.ts +0 -4
- package/build/executor/encoding-context.js +0 -54
- package/build/executor/encoding-context.js.map +0 -1
- package/build/executor/encoding-types.d.ts +0 -75
- package/build/executor/encoding-types.js.map +0 -1
- package/build/executor/factory.d.ts +0 -4
- package/build/executor/factory.js +0 -23
- package/build/executor/factory.js.map +0 -1
- package/build/executor/route-plan.d.ts +0 -8
- package/build/executor/route-plan.js +0 -109
- package/build/executor/route-plan.js.map +0 -1
- package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.d.ts +0 -6
- package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js +0 -39
- package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js.map +0 -1
- package/build/generic-swap-transaction-builder/dex-encoder/index.d.ts +0 -4
- package/build/generic-swap-transaction-builder/dex-encoder/index.js +0 -21
- package/build/generic-swap-transaction-builder/dex-encoder/index.js.map +0 -1
- package/build/generic-swap-transaction-builder/dex-encoder/ports.d.ts +0 -26
- package/build/generic-swap-transaction-builder/dex-encoder/ports.js.map +0 -1
- package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.d.ts +0 -22
- package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js +0 -299
- package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js.map +0 -1
- package/build/generic-swap-transaction-builder/dex-encoder/types.d.ts +0 -207
- package/build/generic-swap-transaction-builder/dex-encoder/types.js +0 -194
- package/build/generic-swap-transaction-builder/dex-encoder/types.js.map +0 -1
- package/build/generic-swap-transaction-builder/orchestration.d.ts +0 -65
- package/build/generic-swap-transaction-builder/orchestration.js +0 -198
- package/build/generic-swap-transaction-builder/orchestration.js.map +0 -1
- package/build/generic-swap-transaction-builder/resolved/build-transaction.d.ts +0 -13
- package/build/generic-swap-transaction-builder/resolved/build-transaction.js +0 -343
- package/build/generic-swap-transaction-builder/resolved/build-transaction.js.map +0 -1
- package/build/generic-swap-transaction-builder/resolved/index.d.ts +0 -4
- package/build/generic-swap-transaction-builder/resolved/index.js +0 -21
- package/build/generic-swap-transaction-builder/resolved/index.js.map +0 -1
- package/build/generic-swap-transaction-builder/resolved/route-plan.d.ts +0 -2
- package/build/generic-swap-transaction-builder/resolved/route-plan.js +0 -11
- package/build/generic-swap-transaction-builder/resolved/route-plan.js.map +0 -1
- package/build/generic-swap-transaction-builder/resolved/types.d.ts +0 -67
- package/build/generic-swap-transaction-builder/resolved/types.js.map +0 -1
- package/build/generic-swap-transaction-builder/resolved/validation.d.ts +0 -10
- package/build/generic-swap-transaction-builder/resolved/validation.js +0 -69
- package/build/generic-swap-transaction-builder/resolved/validation.js.map +0 -1
- /package/build/{generic-swap-transaction-builder/resolved → dex/infusion}/types.js +0 -0
- /package/build/dex/{fluid-dex/scripts/measure-calc-time.d.ts → uniswap-v3/scripts/bench-all-dexes.d.ts} +0 -0
package/build/dex/ekubo/ekubo.js
CHANGED
|
@@ -239,6 +239,12 @@ class Ekubo extends simple_exchange_1.SimpleExchange {
|
|
|
239
239
|
}
|
|
240
240
|
async getPoolIdentifiers(srcToken, destToken, _side, _blockNumber) {
|
|
241
241
|
const [token0, token1] = (0, utils_2.convertAndSortTokens)(srcToken, destToken);
|
|
242
|
+
return this.poolStringIdsForPair(token0, token1);
|
|
243
|
+
}
|
|
244
|
+
// Tracked pools for the pair. While the pool keys couldn't be fetched from
|
|
245
|
+
// the API, the most common pool parameters are assumed to exist so that
|
|
246
|
+
// pricing can fall back to initializing them on demand.
|
|
247
|
+
poolStringIdsForPair(token0, token1) {
|
|
242
248
|
const stringIds = new Set(this.pools
|
|
243
249
|
.entries()
|
|
244
250
|
.filter(([_, pool]) => pool.key.token0 === token0 && pool.key.token1 === token1)
|
|
@@ -426,27 +432,21 @@ class Ekubo extends simple_exchange_1.SimpleExchange {
|
|
|
426
432
|
}
|
|
427
433
|
async getPools(tokenA, tokenB, blockNumber, limitPools) {
|
|
428
434
|
const [token0, token1] = (0, utils_2.convertAndSortTokens)(tokenA, tokenB);
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
let pool = this.pools.get(stringId);
|
|
437
|
-
if (typeof pool === 'undefined') {
|
|
438
|
-
try {
|
|
439
|
-
pool = await this.initializeUntrackedPool(stringId, blockNumber);
|
|
440
|
-
}
|
|
441
|
-
catch (err) {
|
|
442
|
-
this.logger.error(`Initializing pool ${stringId} failed: ${err}`);
|
|
443
|
-
return;
|
|
444
|
-
}
|
|
435
|
+
const stringIds = limitPools ?? this.poolStringIdsForPair(token0, token1);
|
|
436
|
+
const unfilteredPools = [];
|
|
437
|
+
await Promise.all(stringIds.map(async (stringId) => {
|
|
438
|
+
let pool = this.pools.get(stringId);
|
|
439
|
+
if (typeof pool === 'undefined') {
|
|
440
|
+
try {
|
|
441
|
+
pool = await this.initializeUntrackedPool(stringId, blockNumber);
|
|
445
442
|
}
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
443
|
+
catch (err) {
|
|
444
|
+
this.logger.error(`Initializing pool ${stringId} failed: ${err}`);
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
unfilteredPools.push(pool);
|
|
449
|
+
}));
|
|
450
450
|
return unfilteredPools.filter(pool => pool.key.token0 === token0 && pool.key.token1 === token1);
|
|
451
451
|
}
|
|
452
452
|
async initializeUntrackedPool(stringId, blockNumber) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ekubo.js","sourceRoot":"","sources":["../../../src/dex/ekubo/ekubo.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ekubo.js","sourceRoot":"","sources":["../../../src/dex/ekubo/ekubo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Interface, Result } from '@ethersproject/abi';
|
|
2
|
+
import { DeepReadonly } from 'ts-essentials';
|
|
3
|
+
import { Log, Logger } from '../../../types';
|
|
4
|
+
import { StatefulEventSubscriber } from '../../../stateful-event-subscriber';
|
|
5
|
+
import { IDexHelper } from '../../../dex-helper/idex-helper';
|
|
6
|
+
import { Contract } from 'ethers';
|
|
7
|
+
import { PoolState, PoolKey } from './pool-utils';
|
|
8
|
+
export interface Quote {
|
|
9
|
+
consumedAmount: bigint;
|
|
10
|
+
calculatedAmount: bigint;
|
|
11
|
+
gasConsumed: number;
|
|
12
|
+
skipAhead: number;
|
|
13
|
+
}
|
|
14
|
+
export declare class BasePool extends StatefulEventSubscriber<PoolState.Object> {
|
|
15
|
+
readonly parentName: string;
|
|
16
|
+
protected network: number;
|
|
17
|
+
protected dexHelper: IDexHelper;
|
|
18
|
+
private readonly coreIface;
|
|
19
|
+
private readonly dataFetcher;
|
|
20
|
+
readonly key: PoolKey;
|
|
21
|
+
readonly addressesSubscribed: string[];
|
|
22
|
+
constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, coreIface: Interface, dataFetcher: Contract, key: PoolKey, core: Contract);
|
|
23
|
+
/**
|
|
24
|
+
* The function is called every time any of the subscribed
|
|
25
|
+
* addresses release log. The function accepts the current
|
|
26
|
+
* state, updates the state according to the log, and returns
|
|
27
|
+
* the updated state.
|
|
28
|
+
* @param state - Current state of event subscriber
|
|
29
|
+
* @param log - Log released by one of the subscribed addresses
|
|
30
|
+
* @returns Updates state of the event subscriber after the log
|
|
31
|
+
*/
|
|
32
|
+
protected processLog(state: DeepReadonly<PoolState.Object>, log: Readonly<Log>): DeepReadonly<PoolState.Object> | null;
|
|
33
|
+
/**
|
|
34
|
+
* The function generates state using on-chain calls. This
|
|
35
|
+
* function is called to regenerate state if the event based
|
|
36
|
+
* system fails to fetch events and the local state is no
|
|
37
|
+
* more correct.
|
|
38
|
+
* @param blockNumber - Blocknumber for which the state should
|
|
39
|
+
* should be generated
|
|
40
|
+
* @returns state of the event subscriber at blocknumber
|
|
41
|
+
*/
|
|
42
|
+
generateState(blockNumber: number): Promise<DeepReadonly<PoolState.Object>>;
|
|
43
|
+
handleSwappedEvent(data: string, oldState: DeepReadonly<PoolState.Object>): DeepReadonly<PoolState.Object> | null;
|
|
44
|
+
handlePositionUpdatedEvent(args: Result, oldState: DeepReadonly<PoolState.Object>): DeepReadonly<PoolState.Object> | null;
|
|
45
|
+
quote(amount: bigint, token: bigint, blockNumber: number): Quote;
|
|
46
|
+
computeTvl(): [bigint, bigint] | null;
|
|
47
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BasePool = void 0;
|
|
4
|
+
const utils_1 = require("../../../utils");
|
|
5
|
+
const stateful_event_subscriber_1 = require("../../../stateful-event-subscriber");
|
|
6
|
+
const swap_1 = require("./math/swap");
|
|
7
|
+
const tick_1 = require("./math/tick");
|
|
8
|
+
const price_1 = require("./math/price");
|
|
9
|
+
const pool_utils_1 = require("./pool-utils");
|
|
10
|
+
const BASE_GAS_COST = 46_000;
|
|
11
|
+
const GAS_COST_OF_ONE_INITIALIZED_TICK_CROSSED = 9_400;
|
|
12
|
+
const GAS_COST_OF_ONE_TICK_SPACING_CROSSED = 4_000;
|
|
13
|
+
class BasePool extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
14
|
+
parentName;
|
|
15
|
+
network;
|
|
16
|
+
dexHelper;
|
|
17
|
+
coreIface;
|
|
18
|
+
dataFetcher;
|
|
19
|
+
key;
|
|
20
|
+
addressesSubscribed;
|
|
21
|
+
constructor(parentName, network, dexHelper, logger, coreIface, dataFetcher, key, core) {
|
|
22
|
+
super(parentName, key.string_id, dexHelper, logger);
|
|
23
|
+
this.parentName = parentName;
|
|
24
|
+
this.network = network;
|
|
25
|
+
this.dexHelper = dexHelper;
|
|
26
|
+
this.coreIface = coreIface;
|
|
27
|
+
this.dataFetcher = dataFetcher;
|
|
28
|
+
this.key = key;
|
|
29
|
+
this.addressesSubscribed = [core.address];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The function is called every time any of the subscribed
|
|
33
|
+
* addresses release log. The function accepts the current
|
|
34
|
+
* state, updates the state according to the log, and returns
|
|
35
|
+
* the updated state.
|
|
36
|
+
* @param state - Current state of event subscriber
|
|
37
|
+
* @param log - Log released by one of the subscribed addresses
|
|
38
|
+
* @returns Updates state of the event subscriber after the log
|
|
39
|
+
*/
|
|
40
|
+
processLog(state, log) {
|
|
41
|
+
if (log.topics.length === 0) {
|
|
42
|
+
return this.handleSwappedEvent(log.data, state);
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const event = this.coreIface.parseLog(log);
|
|
46
|
+
if (event.name === 'PositionUpdated') {
|
|
47
|
+
return this.handlePositionUpdatedEvent(event.args, state);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
(0, utils_1.catchParseLogError)(e, this.logger);
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The function generates state using on-chain calls. This
|
|
57
|
+
* function is called to regenerate state if the event based
|
|
58
|
+
* system fails to fetch events and the local state is no
|
|
59
|
+
* more correct.
|
|
60
|
+
* @param blockNumber - Blocknumber for which the state should
|
|
61
|
+
* should be generated
|
|
62
|
+
* @returns state of the event subscriber at blocknumber
|
|
63
|
+
*/
|
|
64
|
+
async generateState(blockNumber) {
|
|
65
|
+
const data = await this.dataFetcher.getQuoteData([this.key.toAbi()], 10, {
|
|
66
|
+
blockTag: blockNumber,
|
|
67
|
+
});
|
|
68
|
+
return pool_utils_1.PoolState.fromQuoter(data[0], this.key.config.tickSpacing === tick_1.FULL_RANGE_TICK_SPACING);
|
|
69
|
+
}
|
|
70
|
+
handleSwappedEvent(data, oldState) {
|
|
71
|
+
let n = BigInt(data);
|
|
72
|
+
const poolId = (n >> 512n) & ((1n << 256n) - 1n);
|
|
73
|
+
if (this.key.num_id !== poolId) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
// tick: int32 (4 bytes)
|
|
77
|
+
const tickRaw = n & ((1n << 32n) - 1n);
|
|
78
|
+
const tickAfter = Number(toSigned(tickRaw, 32));
|
|
79
|
+
n >>= 32n;
|
|
80
|
+
// sqrtRatio: uint96 (12 bytes)
|
|
81
|
+
const sqrtRatioAfterCompact = n & ((1n << 96n) - 1n);
|
|
82
|
+
n >>= 96n;
|
|
83
|
+
const sqrtRatioAfter = (0, price_1.floatSqrtRatioToFixed)(sqrtRatioAfterCompact);
|
|
84
|
+
// liquidity: uint128 (16 bytes)
|
|
85
|
+
const liquidityAfter = n & ((1n << 128n) - 1n);
|
|
86
|
+
return pool_utils_1.PoolState.fromSwappedEvent(oldState, sqrtRatioAfter, liquidityAfter, tickAfter);
|
|
87
|
+
}
|
|
88
|
+
handlePositionUpdatedEvent(args, oldState) {
|
|
89
|
+
if (this.key.num_id !== BigInt(args.poolId)) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
const params = args.params;
|
|
93
|
+
return pool_utils_1.PoolState.fromPositionUpdatedEvent(oldState, [params.bounds.lower, params.bounds.upper], params.liquidityDelta.toBigInt());
|
|
94
|
+
}
|
|
95
|
+
quote(amount, token, blockNumber) {
|
|
96
|
+
const isToken1 = token === this.key.token1;
|
|
97
|
+
if (!isToken1 && this.key.token0 !== token) {
|
|
98
|
+
throw new Error('Invalid token');
|
|
99
|
+
}
|
|
100
|
+
if (amount === 0n) {
|
|
101
|
+
return {
|
|
102
|
+
consumedAmount: 0n,
|
|
103
|
+
calculatedAmount: 0n,
|
|
104
|
+
gasConsumed: 0,
|
|
105
|
+
skipAhead: 0,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const isIncreasing = (0, swap_1.isPriceIncreasing)(amount, isToken1);
|
|
109
|
+
let state = this.getState(blockNumber);
|
|
110
|
+
if (state === null) {
|
|
111
|
+
throw new Error(`Quote for block number ${blockNumber} requested but state is not recent enough`);
|
|
112
|
+
}
|
|
113
|
+
let { sqrtRatio, liquidity, activeTickIndex, sortedTicks } = state;
|
|
114
|
+
const sqrtRatioLimit = isIncreasing ? tick_1.MAX_SQRT_RATIO : tick_1.MIN_SQRT_RATIO;
|
|
115
|
+
let calculatedAmount = 0n;
|
|
116
|
+
let initializedTicksCrossed = 0;
|
|
117
|
+
let amountRemaining = amount;
|
|
118
|
+
const startingSqrtRatio = sqrtRatio;
|
|
119
|
+
while (amountRemaining !== 0n && sqrtRatio !== sqrtRatioLimit) {
|
|
120
|
+
const nextInitializedTick = (isIncreasing
|
|
121
|
+
? sortedTicks[activeTickIndex === null ? 0 : activeTickIndex + 1]
|
|
122
|
+
: activeTickIndex === null
|
|
123
|
+
? null
|
|
124
|
+
: sortedTicks[activeTickIndex]) ?? null;
|
|
125
|
+
const nextInitializedTickSqrtRatio = nextInitializedTick
|
|
126
|
+
? (0, tick_1.toSqrtRatio)(nextInitializedTick.number)
|
|
127
|
+
: null;
|
|
128
|
+
const stepSqrtRatioLimit = nextInitializedTickSqrtRatio === null
|
|
129
|
+
? sqrtRatioLimit
|
|
130
|
+
: nextInitializedTickSqrtRatio < sqrtRatioLimit === isIncreasing
|
|
131
|
+
? nextInitializedTickSqrtRatio
|
|
132
|
+
: sqrtRatioLimit;
|
|
133
|
+
const step = (0, swap_1.computeStep)({
|
|
134
|
+
fee: this.key.config.fee,
|
|
135
|
+
sqrtRatio,
|
|
136
|
+
liquidity,
|
|
137
|
+
isToken1,
|
|
138
|
+
sqrtRatioLimit: stepSqrtRatioLimit,
|
|
139
|
+
amount: amountRemaining,
|
|
140
|
+
});
|
|
141
|
+
amountRemaining -= step.consumedAmount;
|
|
142
|
+
calculatedAmount += step.calculatedAmount;
|
|
143
|
+
sqrtRatio = step.sqrtRatioNext;
|
|
144
|
+
// cross the tick if the price moved all the way to the next initialized tick price
|
|
145
|
+
if (nextInitializedTick && sqrtRatio === nextInitializedTickSqrtRatio) {
|
|
146
|
+
activeTickIndex = isIncreasing
|
|
147
|
+
? activeTickIndex === null
|
|
148
|
+
? 0
|
|
149
|
+
: activeTickIndex + 1
|
|
150
|
+
: activeTickIndex
|
|
151
|
+
? activeTickIndex - 1
|
|
152
|
+
: null;
|
|
153
|
+
initializedTicksCrossed++;
|
|
154
|
+
liquidity += isIncreasing
|
|
155
|
+
? nextInitializedTick.liquidityDelta
|
|
156
|
+
: -nextInitializedTick.liquidityDelta;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const tickSpacingsCrossed = (0, tick_1.approximateNumberOfTickSpacingsCrossed)(startingSqrtRatio, sqrtRatio, this.key.config.tickSpacing);
|
|
160
|
+
return {
|
|
161
|
+
consumedAmount: amount - amountRemaining,
|
|
162
|
+
calculatedAmount,
|
|
163
|
+
gasConsumed: BASE_GAS_COST +
|
|
164
|
+
initializedTicksCrossed * GAS_COST_OF_ONE_INITIALIZED_TICK_CROSSED +
|
|
165
|
+
tickSpacingsCrossed * GAS_COST_OF_ONE_TICK_SPACING_CROSSED,
|
|
166
|
+
skipAhead: initializedTicksCrossed === 0
|
|
167
|
+
? 0
|
|
168
|
+
: Math.floor(tickSpacingsCrossed / initializedTicksCrossed),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
computeTvl() {
|
|
172
|
+
const state = this.getStaleState();
|
|
173
|
+
if (state === null) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
return pool_utils_1.PoolState.computeTvl(state);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.BasePool = BasePool;
|
|
180
|
+
function toSigned(value, bits) {
|
|
181
|
+
const half = 1n << BigInt(bits - 1);
|
|
182
|
+
return value >= half ? value - (1n << BigInt(bits)) : value;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=base-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-pool.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/base-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EkuboPool = exports.NamedEventHandlers = void 0;
|
|
4
|
+
const stateful_event_subscriber_1 = require("../../../stateful-event-subscriber");
|
|
5
|
+
class NamedEventHandlers {
|
|
6
|
+
iface;
|
|
7
|
+
handlers;
|
|
8
|
+
constructor(iface, handlers) {
|
|
9
|
+
this.iface = iface;
|
|
10
|
+
this.handlers = handlers;
|
|
11
|
+
}
|
|
12
|
+
parseLog(log, oldState, blockHeader) {
|
|
13
|
+
const event = this.iface.parseLog(log);
|
|
14
|
+
return this.handlers[event.name]?.(event.args, oldState, blockHeader);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.NamedEventHandlers = NamedEventHandlers;
|
|
18
|
+
const BASE_GAS_COST = 22_000;
|
|
19
|
+
class EkuboPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
20
|
+
key;
|
|
21
|
+
namedEventHandlers;
|
|
22
|
+
anonymousEventHandlers;
|
|
23
|
+
quoteFn;
|
|
24
|
+
constructor(parentName, dexHelper, logger, key, namedEventHandlers, anonymousEventHandlers, quoteFn) {
|
|
25
|
+
super(parentName, key.string_id, dexHelper, logger);
|
|
26
|
+
this.key = key;
|
|
27
|
+
this.namedEventHandlers = namedEventHandlers;
|
|
28
|
+
this.anonymousEventHandlers = anonymousEventHandlers;
|
|
29
|
+
this.quoteFn = quoteFn;
|
|
30
|
+
this.addressesSubscribed = [
|
|
31
|
+
...new Set(Object.keys(namedEventHandlers).concat(Object.keys(anonymousEventHandlers))),
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The function is called every time any of the subscribed
|
|
36
|
+
* addresses release log. The function accepts the current
|
|
37
|
+
* state, updates the state according to the log, and returns
|
|
38
|
+
* the updated state.
|
|
39
|
+
* @param state - Current state of event subscriber
|
|
40
|
+
* @param log - Log released by one of the subscribed addresses
|
|
41
|
+
* @returns Updates state of the event subscriber after the log
|
|
42
|
+
*/
|
|
43
|
+
processLog(state, log, blockHeader) {
|
|
44
|
+
const emitter = log.address;
|
|
45
|
+
if (log.topics.length === 0) {
|
|
46
|
+
return this.anonymousEventHandlers[emitter]?.(log.data, state, blockHeader);
|
|
47
|
+
}
|
|
48
|
+
return this.namedEventHandlers[emitter]?.parseLog(log, state, blockHeader);
|
|
49
|
+
}
|
|
50
|
+
quote(amount, token, blockNumber) {
|
|
51
|
+
const isToken1 = token === this.key.token1;
|
|
52
|
+
if (!isToken1 && this.key.token0 !== token) {
|
|
53
|
+
throw new Error('Invalid token');
|
|
54
|
+
}
|
|
55
|
+
if (amount === 0n) {
|
|
56
|
+
return {
|
|
57
|
+
consumedAmount: 0n,
|
|
58
|
+
calculatedAmount: 0n,
|
|
59
|
+
gasConsumed: 0,
|
|
60
|
+
skipAhead: 0,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const state = this.getState(blockNumber);
|
|
64
|
+
if (state === null) {
|
|
65
|
+
throw new Error(`Quote for block number ${blockNumber} requested but state is not recent enough`);
|
|
66
|
+
}
|
|
67
|
+
const quote = this.quoteFn(amount, isToken1, state);
|
|
68
|
+
if (quote.calculatedAmount !== 0n) {
|
|
69
|
+
quote.gasConsumed += BASE_GAS_COST;
|
|
70
|
+
}
|
|
71
|
+
return quote;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.EkuboPool = EkuboPool;
|
|
75
|
+
//# sourceMappingURL=iface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iface.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/iface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
|
+
export declare function floatSqrtRatioToFixed(sqrtRatioFloat: bigint): bigint;
|
|
3
|
+
export declare function fixedSqrtRatioToFloat(sqrtRatioFixed: bigint): bigint;
|
|
4
|
+
export declare const MAX_SQRT_RATIO_FLOAT: BigNumber;
|
|
5
|
+
export declare const MIN_SQRT_RATIO_FLOAT: BigNumber;
|
|
6
|
+
export declare function nextSqrtRatioFromAmount0(sqrtRatio: bigint, liquidity: bigint, amount0: bigint): bigint | null;
|
|
7
|
+
export declare function nextSqrtRatioFromAmount1(sqrtRatio: bigint, liquidity: bigint, amount1: bigint): bigint | null;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MIN_SQRT_RATIO_FLOAT = exports.MAX_SQRT_RATIO_FLOAT = void 0;
|
|
4
|
+
exports.floatSqrtRatioToFixed = floatSqrtRatioToFixed;
|
|
5
|
+
exports.fixedSqrtRatioToFloat = fixedSqrtRatioToFloat;
|
|
6
|
+
exports.nextSqrtRatioFromAmount0 = nextSqrtRatioFromAmount0;
|
|
7
|
+
exports.nextSqrtRatioFromAmount1 = nextSqrtRatioFromAmount1;
|
|
8
|
+
const ethers_1 = require("ethers");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const tick_1 = require("./tick");
|
|
11
|
+
const BIT_MASK = 0xc00000000000000000000000n;
|
|
12
|
+
const NOT_BIT_MASK = 0x3fffffffffffffffffffffffn;
|
|
13
|
+
function floatSqrtRatioToFixed(sqrtRatioFloat) {
|
|
14
|
+
return sqrtRatioFloat === 0n
|
|
15
|
+
? constants_1.TWO_POW_128 // Default value for the case that the passed value comes from an uninitialized pool
|
|
16
|
+
: (sqrtRatioFloat & NOT_BIT_MASK) <<
|
|
17
|
+
(2n + ((sqrtRatioFloat & BIT_MASK) >> 89n));
|
|
18
|
+
}
|
|
19
|
+
function fixedSqrtRatioToFloat(sqrtRatioFixed) {
|
|
20
|
+
if (sqrtRatioFixed >= constants_1.TWO_POW_192) {
|
|
21
|
+
throw new Error('Out of bounds');
|
|
22
|
+
}
|
|
23
|
+
else if (sqrtRatioFixed >= constants_1.TWO_POW_160) {
|
|
24
|
+
return (sqrtRatioFixed >> 98n) + BIT_MASK;
|
|
25
|
+
}
|
|
26
|
+
else if (sqrtRatioFixed >= constants_1.TWO_POW_128) {
|
|
27
|
+
return (sqrtRatioFixed >> 66n) + constants_1.TWO_POW_95;
|
|
28
|
+
}
|
|
29
|
+
else if (sqrtRatioFixed >= constants_1.TWO_POW_96) {
|
|
30
|
+
return (sqrtRatioFixed >> 34n) + constants_1.TWO_POW_94;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return sqrtRatioFixed >> 2n;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.MAX_SQRT_RATIO_FLOAT = ethers_1.BigNumber.from(fixedSqrtRatioToFloat(tick_1.MAX_SQRT_RATIO));
|
|
37
|
+
exports.MIN_SQRT_RATIO_FLOAT = ethers_1.BigNumber.from(fixedSqrtRatioToFloat(tick_1.MIN_SQRT_RATIO));
|
|
38
|
+
function nextSqrtRatioFromAmount0(sqrtRatio, liquidity, amount0) {
|
|
39
|
+
if (amount0 === 0n)
|
|
40
|
+
return sqrtRatio;
|
|
41
|
+
if (liquidity === 0n)
|
|
42
|
+
throw new Error('NO_LIQUIDITY');
|
|
43
|
+
const numerator1 = liquidity << 128n;
|
|
44
|
+
// because quotient is rounded down, this price movement is also rounded towards sqrt_ratio
|
|
45
|
+
if (amount0 < 0n) {
|
|
46
|
+
const product = amount0 * -1n * sqrtRatio;
|
|
47
|
+
if (product >= constants_1.MAX_U256) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const denominator = numerator1 - product;
|
|
51
|
+
if (denominator < 0n) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const num = numerator1 * sqrtRatio;
|
|
55
|
+
const result = num / denominator + (num % denominator === 0n ? 0n : 1n);
|
|
56
|
+
if (result > constants_1.MAX_U256) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const denomP1 = numerator1 / sqrtRatio;
|
|
63
|
+
const denom = denomP1 + amount0;
|
|
64
|
+
const quotient = numerator1 / denom;
|
|
65
|
+
const remainder = numerator1 % denom;
|
|
66
|
+
if (remainder === 0n)
|
|
67
|
+
return quotient;
|
|
68
|
+
const sum = quotient + 1n;
|
|
69
|
+
if (sum > constants_1.MAX_U256)
|
|
70
|
+
return null;
|
|
71
|
+
return sum;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function nextSqrtRatioFromAmount1(sqrtRatio, liquidity, amount1) {
|
|
75
|
+
if (amount1 === 0n)
|
|
76
|
+
return sqrtRatio;
|
|
77
|
+
if (liquidity === 0n)
|
|
78
|
+
throw new Error('NO_LIQUIDITY');
|
|
79
|
+
const amountShifted = amount1 << 128n;
|
|
80
|
+
const quotient = amountShifted / liquidity;
|
|
81
|
+
const remainder = amountShifted % liquidity;
|
|
82
|
+
// because quotient is rounded down, this price movement is also rounded towards sqrt_ratio
|
|
83
|
+
if (amount1 < 0n) {
|
|
84
|
+
// adding amount1, taking out amount0
|
|
85
|
+
const res = sqrtRatio + quotient;
|
|
86
|
+
if (res < 0n) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
if (remainder === 0n) {
|
|
90
|
+
return res;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
if (res != 0n) {
|
|
94
|
+
return res - 1n;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// adding amount1, taking out amount0, price goes up
|
|
103
|
+
const res = sqrtRatio + quotient;
|
|
104
|
+
if (res > constants_1.MAX_U256) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
return res;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=price.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price.js","sourceRoot":"","sources":["../../../../../src/dex/ekubo/pools/math/price.ts"],"names":[],"mappings":"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"}
|