@paraswap/dex-lib 2.28.9-take-surplus.0 → 2.28.9-take-surplus.1
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/RamsesV2StateMulticall.abi.json +891 -0
- package/build/abi/aerodrome/aerodrome-pool-factory.json +586 -0
- package/build/abi/algebra/AlgebraFactory-v1_1.abi.json +250 -0
- package/build/abi/api3-proxy.json +53 -0
- package/build/abi/api3-server-v1.json +463 -0
- package/build/abi/nomiswap-v2/nomiswap-v2-pool.json +773 -0
- package/build/abi/pancakeswap-v3/PancakeswapV3Factory.abi.json +300 -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/quickPerps/fast-price-events.json +70 -0
- package/build/abi/quickPerps/fast-price-feed.json +748 -0
- package/build/abi/quickPerps/reader.json +313 -0
- package/build/abi/quickPerps/vault-price-feed.json +477 -0
- package/build/abi/quickPerps/vault.json +1953 -0
- package/build/abi/ramses-v2/RamsesV2Pool.abi.json +1599 -0
- package/build/abi/uniswap-v3/UniswapV3Factory.abi.json +148 -0
- package/build/abi/uniswap-v3/UniswapV3QuoterV2.abi.json +155 -0
- package/build/composed-event-subscriber.js +8 -2
- package/build/composed-event-subscriber.js.map +1 -1
- package/build/config.d.ts +0 -1
- package/build/config.js +75 -14
- package/build/config.js.map +1 -1
- package/build/constants.d.ts +2 -1
- package/build/constants.js +1 -0
- package/build/constants.js.map +1 -1
- package/build/dex/algebra/algebra-factory.d.ts +25 -0
- package/build/dex/algebra/algebra-factory.js +43 -0
- package/build/dex/algebra/algebra-factory.js.map +1 -0
- package/build/dex/algebra/algebra-pool-v1_1.d.ts +16 -2
- package/build/dex/algebra/algebra-pool-v1_1.js +166 -4
- package/build/dex/algebra/algebra-pool-v1_1.js.map +1 -1
- package/build/dex/algebra/algebra.d.ts +4 -1
- package/build/dex/algebra/algebra.js +42 -21
- package/build/dex/algebra/algebra.js.map +1 -1
- package/build/dex/algebra/config.js +1 -0
- package/build/dex/algebra/config.js.map +1 -1
- package/build/dex/algebra/lib/TickTable.js +51 -40
- package/build/dex/algebra/lib/TickTable.js.map +1 -1
- package/build/dex/algebra/types.d.ts +5 -2
- package/build/dex/algebra/utils.d.ts +3 -1
- package/build/dex/algebra/utils.js +59 -1
- package/build/dex/algebra/utils.js.map +1 -1
- package/build/dex/balancer-v2/balancer-v2.js +79 -6
- package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
- package/build/dex/balancer-v2/config.js +10 -2
- package/build/dex/balancer-v2/config.js.map +1 -1
- package/build/dex/balancer-v2/optimizer.js +38 -51
- package/build/dex/balancer-v2/optimizer.js.map +1 -1
- package/build/dex/balancer-v2/types.d.ts +0 -4
- package/build/dex/balancer-v2/types.js.map +1 -1
- package/build/dex/curve-v1/config.js +40 -38
- package/build/dex/curve-v1/config.js.map +1 -1
- package/build/dex/curve-v1-factory/config.js +17 -9
- package/build/dex/curve-v1-factory/config.js.map +1 -1
- package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +1 -1
- package/build/dex/curve-v1-factory/curve-v1-factory.js +205 -182
- package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
- package/build/dex/curve-v1-factory/curve-v1-pool-manager.d.ts +2 -1
- package/build/dex/curve-v1-factory/curve-v1-pool-manager.js +8 -2
- package/build/dex/curve-v1-factory/curve-v1-pool-manager.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/_rates.js +2 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/_rates.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/_xp.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/_xp.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/_xp_mem.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/_xp_mem.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.js +61 -14
- package/build/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/constants.js +10 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/constants.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/get_D.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/get_D.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/get_D_mem.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/get_D_mem.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/get_dy.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/get_dy.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/get_y.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/get_y.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/get_y_D.js +1 -0
- package/build/dex/curve-v1-factory/price-handlers/functions/get_y_D.js.map +1 -1
- package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js +11 -4
- package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js.map +1 -1
- package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.d.ts +1 -1
- package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js +2 -2
- package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js.map +1 -1
- package/build/dex/curve-v1-factory/types.d.ts +4 -1
- package/build/dex/curve-v1-factory/types.js +1 -0
- package/build/dex/curve-v1-factory/types.js.map +1 -1
- package/build/dex/generic-rfq/generic-rfq.d.ts +2 -1
- package/build/dex/generic-rfq/generic-rfq.js +9 -5
- package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
- package/build/dex/generic-rfq/rate-fetcher.d.ts +1 -1
- package/build/dex/generic-rfq/rate-fetcher.js +2 -1
- package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
- package/build/dex/generic-rfq/types.d.ts +1 -0
- package/build/dex/generic-rfq/types.js.map +1 -1
- package/build/dex/hashflow/hashflow.d.ts +1 -0
- package/build/dex/hashflow/hashflow.js +1 -0
- package/build/dex/hashflow/hashflow.js.map +1 -1
- package/build/dex/idex.d.ts +1 -0
- package/build/dex/index.d.ts +1 -0
- package/build/dex/index.js +21 -0
- package/build/dex/index.js.map +1 -1
- package/build/dex/maverick-v1/config.js +9 -0
- package/build/dex/maverick-v1/config.js.map +1 -1
- package/build/dex/maverick-v1/maverick-v1.js +11 -2
- package/build/dex/maverick-v1/maverick-v1.js.map +1 -1
- package/build/dex/maverick-v1/scripts/event-sequence.d.ts +1 -0
- package/build/dex/maverick-v1/scripts/event-sequence.js +110 -0
- package/build/dex/maverick-v1/scripts/event-sequence.js.map +1 -0
- package/build/dex/pancakeswap-v3/config.js +17 -0
- package/build/dex/pancakeswap-v3/config.js.map +1 -1
- package/build/dex/pancakeswap-v3/pancakeswap-v3-factory.d.ts +26 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3-factory.js +44 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3-factory.js.map +1 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +3 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3.js +26 -2
- package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -1
- 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 +176 -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 +225 -0
- package/build/dex/quick-perps/pool.js.map +1 -0
- package/build/dex/quick-perps/quick-perps.d.ts +52 -0
- package/build/dex/quick-perps/quick-perps.js +211 -0
- package/build/dex/quick-perps/quick-perps.js.map +1 -0
- package/build/dex/quick-perps/types.d.ts +98 -0
- package/build/dex/quick-perps/types.js +3 -0
- 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 +61 -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 +194 -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 +41 -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 +166 -0
- package/build/dex/quick-perps/vault.js.map +1 -0
- package/build/dex/solidly/config.js +52 -2
- package/build/dex/solidly/config.js.map +1 -1
- package/build/dex/solidly/forks-override/aerodrome.d.ts +14 -0
- package/build/dex/solidly/forks-override/aerodrome.js +48 -0
- package/build/dex/solidly/forks-override/aerodrome.js.map +1 -0
- package/build/dex/solidly/forks-override/equalizer.d.ts +20 -0
- package/build/dex/solidly/forks-override/equalizer.js +46 -0
- package/build/dex/solidly/forks-override/equalizer.js.map +1 -0
- package/build/dex/solidly/forks-override/ramses.d.ts +44 -0
- package/build/dex/solidly/forks-override/ramses.js +144 -0
- package/build/dex/solidly/forks-override/ramses.js.map +1 -0
- package/build/dex/solidly/forks-override/velodromeV2.d.ts +20 -0
- package/build/dex/solidly/forks-override/velodromeV2.js +50 -0
- package/build/dex/solidly/forks-override/velodromeV2.js.map +1 -0
- package/build/dex/solidly/solidly.js +4 -0
- package/build/dex/solidly/solidly.js.map +1 -1
- package/build/dex/uniswap-v2/nomiswap-v2.d.ts +24 -0
- package/build/dex/uniswap-v2/nomiswap-v2.js +44 -0
- package/build/dex/uniswap-v2/nomiswap-v2.js.map +1 -0
- package/build/dex/uniswap-v3/config.js +166 -0
- package/build/dex/uniswap-v3/config.js.map +1 -1
- package/build/dex/uniswap-v3/forks/ramses-v2/ramses-v2-pool.d.ts +19 -0
- package/build/dex/uniswap-v3/forks/ramses-v2/ramses-v2-pool.js +99 -0
- package/build/dex/uniswap-v3/forks/ramses-v2/ramses-v2-pool.js.map +1 -0
- package/build/dex/uniswap-v3/forks/ramses-v2/utils.d.ts +4 -0
- package/build/dex/uniswap-v3/forks/ramses-v2/utils.js +63 -0
- package/build/dex/uniswap-v3/forks/ramses-v2/utils.js.map +1 -0
- package/build/dex/uniswap-v3/types.d.ts +10 -1
- package/build/dex/uniswap-v3/types.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3-factory.d.ts +26 -0
- package/build/dex/uniswap-v3/uniswap-v3-factory.js +44 -0
- package/build/dex/uniswap-v3/uniswap-v3-factory.js.map +1 -0
- package/build/dex/uniswap-v3/uniswap-v3-pool.d.ts +8 -6
- package/build/dex/uniswap-v3/uniswap-v3-pool.js +5 -2
- package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3.d.ts +7 -4
- package/build/dex/uniswap-v3/uniswap-v3.js +51 -10
- package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
- package/build/dex/weth/config.js +3 -0
- package/build/dex/weth/config.js.map +1 -1
- package/build/dex/woo-fi-v2/config.js +13 -0
- package/build/dex/woo-fi-v2/config.js.map +1 -1
- package/build/dex-helper/dummy-dex-helper.js +7 -1
- package/build/dex-helper/dummy-dex-helper.js.map +1 -1
- package/build/dex-helper/icache.d.ts +1 -0
- package/build/lib/api3-feed.d.ts +30 -0
- package/build/lib/api3-feed.js +100 -0
- package/build/lib/api3-feed.js.map +1 -0
- package/build/lib/decoders.d.ts +3 -0
- package/build/lib/decoders.js +9 -1
- package/build/lib/decoders.js.map +1 -1
- package/build/stateful-event-subscriber.d.ts +1 -0
- package/build/stateful-event-subscriber.js +6 -0
- package/build/stateful-event-subscriber.js.map +1 -1
- package/build/types.d.ts +2 -0
- package/build/workers.d.ts +0 -0
- package/build/workers.js +2 -0
- package/build/workers.js.map +1 -0
- package/package.json +1 -1
- package/src/abi/RamsesV2Pool.abi.json +1554 -0
- package/src/abi/RamsesV2Quoter.abi.json +274 -0
- package/src/abi/RamsesV2StateMulticall.abi.json +891 -0
- package/src/abi/aerodrome/aerodrome-pool-factory.json +586 -0
- package/src/abi/algebra/AlgebraFactory-v1_1.abi.json +250 -0
- package/src/abi/api3-proxy.json +53 -0
- package/src/abi/api3-server-v1.json +463 -0
- package/src/abi/nomiswap-v2/nomiswap-v2-pool.json +773 -0
- package/src/abi/pancakeswap-v3/PancakeswapV3Factory.abi.json +300 -0
- package/src/abi/quick-perps/fast-price-events.json +70 -0
- package/src/abi/quick-perps/fast-price-feed.json +741 -0
- package/src/abi/quick-perps/reader.json +313 -0
- package/src/abi/quick-perps/vault-price-feed.json +323 -0
- package/src/abi/quick-perps/vault.json +1953 -0
- package/src/abi/ramses-v2/RamsesV2Pool.abi.json +1599 -0
- package/src/composed-event-subscriber.ts +16 -11
- package/src/config.ts +80 -14
- package/src/constants.ts +1 -0
- package/src/dex/algebra/algebra-factory.ts +70 -0
- package/src/dex/algebra/algebra-integration.test.ts +316 -16
- package/src/dex/algebra/algebra-pool-v1_1.ts +259 -8
- package/src/dex/algebra/algebra.ts +73 -22
- package/src/dex/algebra/config.ts +1 -0
- package/src/dex/algebra/lib/TickTable.ts +75 -74
- package/src/dex/algebra/types.ts +6 -2
- package/src/dex/algebra/utils.ts +83 -2
- package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +133 -4
- package/src/dex/balancer-v2/balancer-v2.ts +87 -6
- package/src/dex/balancer-v2/config.ts +11 -2
- package/src/dex/balancer-v2/optimizer.ts +49 -62
- package/src/dex/balancer-v2/types.ts +0 -4
- package/src/dex/curve-v1/config.ts +40 -38
- package/src/dex/curve-v1-factory/config.ts +17 -9
- package/src/dex/curve-v1-factory/curve-v1-factory-e2e.test.ts +19 -0
- package/src/dex/curve-v1-factory/curve-v1-factory-integration.test.ts +165 -45
- package/src/dex/curve-v1-factory/curve-v1-factory.ts +477 -415
- package/src/dex/curve-v1-factory/curve-v1-pool-manager.ts +15 -2
- package/src/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.ts +1 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.ts +1 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/_rates.ts +2 -1
- package/src/dex/curve-v1-factory/price-handlers/functions/_xp.ts +1 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/_xp_mem.ts +1 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.ts +71 -13
- package/src/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.ts +1 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/constants.ts +11 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/get_D.ts +2 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/get_D_mem.ts +1 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.ts +1 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/get_dy.ts +1 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.ts +1 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/get_y.ts +1 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/get_y_D.ts +1 -0
- package/src/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.ts +13 -5
- package/src/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.ts +2 -1
- package/src/dex/curve-v1-factory/types.ts +3 -1
- package/src/dex/generic-rfq/example-api.test.ts +1 -1
- package/src/dex/generic-rfq/generic-rfq.ts +12 -4
- package/src/dex/generic-rfq/rate-fetcher.ts +4 -2
- package/src/dex/generic-rfq/types.ts +1 -0
- package/src/dex/hashflow/hashflow-e2e.test.ts +36 -3
- package/src/dex/hashflow/hashflow.ts +2 -1
- package/src/dex/idex.ts +1 -0
- package/src/dex/index.ts +21 -0
- package/src/dex/maverick-v1/config.ts +10 -0
- package/src/dex/maverick-v1/maverick-v1-e2e.test.ts +115 -1
- package/src/dex/maverick-v1/maverick-v1.ts +12 -2
- package/src/dex/pancakeswap-v3/config.ts +19 -0
- package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +114 -0
- package/src/dex/pancakeswap-v3/pancakeswap-v3-factory.ts +73 -0
- package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +50 -2
- package/src/dex/quick-perps/config.ts +31 -0
- package/src/dex/quick-perps/fast-price-feed.ts +279 -0
- package/src/dex/quick-perps/pool.ts +407 -0
- package/src/dex/quick-perps/quick-perps-e2e.test.ts +65 -0
- package/src/dex/quick-perps/quick-perps-events.test.ts +100 -0
- package/src/dex/quick-perps/quick-perps-integration.test.ts +153 -0
- package/src/dex/quick-perps/quick-perps.ts +302 -0
- package/src/dex/quick-perps/types.ts +97 -0
- package/src/dex/quick-perps/usdq.ts +83 -0
- package/src/dex/quick-perps/vault-price-feed.ts +322 -0
- package/src/dex/quick-perps/vault-utils.ts +53 -0
- package/src/dex/quick-perps/vault.ts +290 -0
- package/src/dex/solidly/config.ts +58 -2
- package/src/dex/solidly/forks-override/aerodrome.ts +53 -0
- package/src/dex/solidly/forks-override/equalizer.ts +58 -0
- package/src/dex/solidly/forks-override/ramses.ts +253 -0
- package/src/dex/solidly/forks-override/velodromeV2.ts +63 -0
- package/src/dex/solidly/solidly-e2e.test.ts +313 -1
- package/src/dex/solidly/solidly-integration.test.ts +540 -41
- package/src/dex/solidly/solidly.ts +5 -0
- package/src/dex/uniswap-v2/nomiswap-v2.ts +63 -0
- package/src/dex/uniswap-v2/uniswap-v2-e2e-bsc.test.ts +120 -1
- package/src/dex/uniswap-v3/config.ts +174 -0
- package/src/dex/uniswap-v3/forks/ramses-v2/ramses-v2-pool.ts +156 -0
- package/src/dex/uniswap-v3/forks/ramses-v2/utils.ts +72 -0
- package/src/dex/uniswap-v3/types.ts +14 -1
- package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +1071 -346
- package/src/dex/uniswap-v3/uniswap-v3-factory.ts +73 -0
- package/src/dex/uniswap-v3/uniswap-v3-integration.test.ts +787 -14
- package/src/dex/uniswap-v3/uniswap-v3-pool.ts +13 -5
- package/src/dex/uniswap-v3/uniswap-v3.ts +87 -20
- package/src/dex/weth/config.ts +3 -0
- package/src/dex/woo-fi-v2/config.ts +13 -0
- package/src/dex/woo-fi-v2/woo-fi-v2-e2e.test.ts +64 -0
- package/src/dex-helper/dummy-dex-helper.ts +8 -1
- package/src/dex-helper/icache.ts +2 -0
- package/src/lib/api3-feed.ts +175 -0
- package/src/lib/decoders.ts +13 -0
- package/src/stateful-event-subscriber.ts +8 -0
- package/src/types.ts +2 -0
- package/tests/constants-e2e.ts +102 -6
- package/tests/tenderly-simulation.ts +48 -4
- package/tests/utils-e2e.ts +21 -11
|
@@ -43,7 +43,7 @@ export class TickTable {
|
|
|
43
43
|
// wordPos
|
|
44
44
|
BigInt.asIntN(16, tick >> 8n),
|
|
45
45
|
// bitPos
|
|
46
|
-
BigInt.asUintN(8, tick &
|
|
46
|
+
BigInt.asUintN(8, tick & 0xffn),
|
|
47
47
|
];
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -56,7 +56,7 @@ export class TickTable {
|
|
|
56
56
|
tick /= tickSpacing;
|
|
57
57
|
}
|
|
58
58
|
const [rowNumber, bitNumber] = TickTable.position(tick);
|
|
59
|
-
const mask = 1n << bitNumber;
|
|
59
|
+
const mask = BigInt.asUintN(256, 1n << bitNumber);
|
|
60
60
|
|
|
61
61
|
// toggleTick is used only in _updatePosition which is always state changing event
|
|
62
62
|
// Therefore it is never used in price query
|
|
@@ -83,20 +83,24 @@ export class TickTable {
|
|
|
83
83
|
tickSpacing?: bigint,
|
|
84
84
|
): [bigint, boolean] {
|
|
85
85
|
if (tickSpacing !== undefined) {
|
|
86
|
-
tick =
|
|
87
|
-
|
|
88
|
-
Yul.
|
|
89
|
-
Yul.
|
|
90
|
-
Yul.
|
|
86
|
+
tick = BigInt.asIntN(
|
|
87
|
+
24,
|
|
88
|
+
Yul.sub(
|
|
89
|
+
Yul.sdiv(tick, tickSpacing),
|
|
90
|
+
Yul.and(
|
|
91
|
+
Yul.slt(tick, 0n),
|
|
92
|
+
Yul.not(Yul.iszero(Yul.smod(tick, tickSpacing))),
|
|
93
|
+
),
|
|
91
94
|
),
|
|
92
95
|
);
|
|
93
96
|
}
|
|
94
|
-
const [rowNumber, bitNumber] = TickTable.position(tick);
|
|
95
|
-
isWordPosOut(rowNumber, state.startTickBitmap, isPriceQuery);
|
|
96
|
-
let tickBitmapValue = state.tickBitmap[rowNumber.toString()];
|
|
97
|
-
tickBitmapValue = tickBitmapValue === undefined ? 0n : tickBitmapValue;
|
|
98
97
|
if (lte) {
|
|
99
|
-
const
|
|
98
|
+
const [rowNumber, bitNumber] = TickTable.position(tick);
|
|
99
|
+
isWordPosOut(rowNumber, state.startTickBitmap, isPriceQuery);
|
|
100
|
+
let tickBitmapValue = state.tickBitmap[rowNumber.toString()];
|
|
101
|
+
tickBitmapValue = tickBitmapValue === undefined ? 0n : tickBitmapValue;
|
|
102
|
+
|
|
103
|
+
const _row = BigInt.asUintN(256, tickBitmapValue << (255n - bitNumber));
|
|
100
104
|
if (_row != 0n) {
|
|
101
105
|
tick -= BigInt.asIntN(24, 255n - TickTable.getMostSignificantBit(_row));
|
|
102
106
|
return [TickTable.boundTick(tick, tickSpacing), true];
|
|
@@ -106,7 +110,13 @@ export class TickTable {
|
|
|
106
110
|
}
|
|
107
111
|
} else {
|
|
108
112
|
tick += 1n;
|
|
109
|
-
|
|
113
|
+
|
|
114
|
+
const [rowNumber, bitNumber] = TickTable.position(tick);
|
|
115
|
+
isWordPosOut(rowNumber, state.startTickBitmap, isPriceQuery);
|
|
116
|
+
let tickBitmapValue = state.tickBitmap[rowNumber.toString()];
|
|
117
|
+
tickBitmapValue = tickBitmapValue === undefined ? 0n : tickBitmapValue;
|
|
118
|
+
|
|
119
|
+
const _row = BigInt.asUintN(256, tickBitmapValue >> bitNumber);
|
|
110
120
|
if (_row !== 0n) {
|
|
111
121
|
tick += BigInt.asIntN(
|
|
112
122
|
24,
|
|
@@ -123,80 +133,71 @@ export class TickTable {
|
|
|
123
133
|
static getSingleSignificantBit(word: bigint): bigint {
|
|
124
134
|
let singleBitPos = 0n;
|
|
125
135
|
singleBitPos = Yul.iszero(
|
|
126
|
-
word
|
|
127
|
-
|
|
128
|
-
'0x5555555555555555555555555555555555555555555555555555555555555555',
|
|
129
|
-
),
|
|
136
|
+
word &
|
|
137
|
+
0x5555555555555555555555555555555555555555555555555555555555555555n,
|
|
130
138
|
);
|
|
131
139
|
singleBitPos =
|
|
132
|
-
singleBitPos
|
|
133
|
-
Yul.iszero(
|
|
134
|
-
word
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
) << 7n;
|
|
140
|
+
singleBitPos |
|
|
141
|
+
(Yul.iszero(
|
|
142
|
+
word &
|
|
143
|
+
0x00000000000000000000000000000000ffffffffffffffffffffffffffffffffn,
|
|
144
|
+
) <<
|
|
145
|
+
7n);
|
|
139
146
|
singleBitPos =
|
|
140
|
-
singleBitPos
|
|
141
|
-
Yul.iszero(
|
|
142
|
-
word
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
) << 6n;
|
|
147
|
+
singleBitPos |
|
|
148
|
+
(Yul.iszero(
|
|
149
|
+
word &
|
|
150
|
+
0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffffn,
|
|
151
|
+
) <<
|
|
152
|
+
6n);
|
|
147
153
|
singleBitPos =
|
|
148
|
-
singleBitPos
|
|
149
|
-
Yul.iszero(
|
|
150
|
-
word
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
) << 5n;
|
|
154
|
+
singleBitPos |
|
|
155
|
+
(Yul.iszero(
|
|
156
|
+
word &
|
|
157
|
+
0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffffn,
|
|
158
|
+
) <<
|
|
159
|
+
5n);
|
|
155
160
|
singleBitPos =
|
|
156
|
-
singleBitPos
|
|
157
|
-
Yul.iszero(
|
|
158
|
-
word
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
) << 4n;
|
|
161
|
+
singleBitPos |
|
|
162
|
+
(Yul.iszero(
|
|
163
|
+
word &
|
|
164
|
+
0x0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffffn,
|
|
165
|
+
) <<
|
|
166
|
+
4n);
|
|
163
167
|
singleBitPos =
|
|
164
|
-
singleBitPos
|
|
165
|
-
Yul.iszero(
|
|
166
|
-
word
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
) << 3n;
|
|
168
|
+
singleBitPos |
|
|
169
|
+
(Yul.iszero(
|
|
170
|
+
word &
|
|
171
|
+
0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ffn,
|
|
172
|
+
) <<
|
|
173
|
+
3n);
|
|
171
174
|
singleBitPos =
|
|
172
|
-
singleBitPos
|
|
173
|
-
Yul.iszero(
|
|
174
|
-
word
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
) << 2n;
|
|
175
|
+
singleBitPos |
|
|
176
|
+
(Yul.iszero(
|
|
177
|
+
word &
|
|
178
|
+
0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0fn,
|
|
179
|
+
) <<
|
|
180
|
+
2n);
|
|
179
181
|
singleBitPos =
|
|
180
|
-
singleBitPos
|
|
181
|
-
Yul.iszero(
|
|
182
|
-
word
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
) << 1n;
|
|
182
|
+
singleBitPos |
|
|
183
|
+
(Yul.iszero(
|
|
184
|
+
word &
|
|
185
|
+
0x3333333333333333333333333333333333333333333333333333333333333333n,
|
|
186
|
+
) <<
|
|
187
|
+
1n);
|
|
187
188
|
|
|
188
189
|
return BigInt.asUintN(8, singleBitPos);
|
|
189
190
|
}
|
|
190
191
|
|
|
191
192
|
static getMostSignificantBit(word: bigint): bigint {
|
|
192
|
-
word = word
|
|
193
|
-
word = word
|
|
194
|
-
word = word
|
|
195
|
-
word = word
|
|
196
|
-
word = word
|
|
197
|
-
word = word
|
|
198
|
-
word = word
|
|
199
|
-
word = word
|
|
193
|
+
word = word | (word >> 1n);
|
|
194
|
+
word = word | (word >> 2n);
|
|
195
|
+
word = word | (word >> 4n);
|
|
196
|
+
word = word | (word >> 8n);
|
|
197
|
+
word = word | (word >> 16n);
|
|
198
|
+
word = word | (word >> 32n);
|
|
199
|
+
word = word | (word >> 64n);
|
|
200
|
+
word = word | (word >> 128n);
|
|
200
201
|
word = word - (word >> 1n);
|
|
201
202
|
return TickTable.getSingleSignificantBit(BigInt.asUintN(256, word));
|
|
202
203
|
}
|
package/src/dex/algebra/types.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { BigNumber } from 'ethers';
|
|
|
2
2
|
import { Address, NumberAsString } from '../../types';
|
|
3
3
|
import { TickInfo } from '../uniswap-v3/types';
|
|
4
4
|
|
|
5
|
-
type GlobalStateV1_1 = {
|
|
5
|
+
export type GlobalStateV1_1 = {
|
|
6
6
|
price: bigint; // The square root of the current price in Q64.96 format
|
|
7
7
|
tick: bigint; // The current tick
|
|
8
8
|
fee: bigint; // The current fee in hundredths of a bip, i.e. 1e-6
|
|
@@ -51,6 +51,8 @@ export type PoolState_v1_9 = {
|
|
|
51
51
|
areTicksCompressed: boolean;
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
+
export type FactoryState = Record<string, never>;
|
|
55
|
+
|
|
54
56
|
export type AlgebraData = {
|
|
55
57
|
path: {
|
|
56
58
|
tokenIn: Address;
|
|
@@ -71,6 +73,8 @@ export type DexParams = {
|
|
|
71
73
|
subgraphURL: string;
|
|
72
74
|
initHash: string;
|
|
73
75
|
version: 'v1.1' | 'v1.9';
|
|
76
|
+
forceRPC?: boolean;
|
|
77
|
+
forceManualStateGenerate?: boolean;
|
|
74
78
|
};
|
|
75
79
|
|
|
76
80
|
export type IAlgebraPoolState = PoolStateV1_1 | PoolState_v1_9;
|
|
@@ -94,7 +98,7 @@ export type TickInfoMappingsWithBigNumber = {
|
|
|
94
98
|
value: TickInfoWithBigNumber;
|
|
95
99
|
};
|
|
96
100
|
|
|
97
|
-
type DecodedGlobalStateV1_1 = {
|
|
101
|
+
export type DecodedGlobalStateV1_1 = {
|
|
98
102
|
price: BigNumber;
|
|
99
103
|
tick: number;
|
|
100
104
|
fee: number;
|
package/src/dex/algebra/utils.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { BytesLike, ethers } from 'ethers';
|
|
1
|
+
import { BigNumber, BytesLike, ethers } from 'ethers';
|
|
2
2
|
import { assert } from 'ts-essentials';
|
|
3
3
|
import { extractSuccessAndValue } from '../../lib/decoders';
|
|
4
4
|
import { MultiResult } from '../../lib/multi-wrapper';
|
|
5
5
|
import {
|
|
6
|
-
|
|
6
|
+
DecodedGlobalStateV1_1,
|
|
7
7
|
DecodedStateMultiCallResultWithRelativeBitmapsV1_1,
|
|
8
8
|
DecodedStateMultiCallResultWithRelativeBitmapsV1_9,
|
|
9
|
+
TickInfoWithBigNumber,
|
|
9
10
|
} from './types';
|
|
10
11
|
|
|
11
12
|
export function decodeStateMultiCallResultWithRelativeBitmapsV1_1(
|
|
@@ -134,3 +135,83 @@ export function decodeStateMultiCallResultWithRelativeBitmapsV1_9(
|
|
|
134
135
|
// But I typed only the ones that are used later
|
|
135
136
|
return decoded as DecodedStateMultiCallResultWithRelativeBitmapsV1_9;
|
|
136
137
|
}
|
|
138
|
+
|
|
139
|
+
export function decodeGlobalStateV1_1(
|
|
140
|
+
result: MultiResult<BytesLike> | BytesLike,
|
|
141
|
+
): DecodedGlobalStateV1_1 {
|
|
142
|
+
const [isSuccess, toDecode] = extractSuccessAndValue(result);
|
|
143
|
+
|
|
144
|
+
assert(
|
|
145
|
+
isSuccess && toDecode !== '0x',
|
|
146
|
+
`decodeGlobalStateV1_1 failed to get decodable result: ${result}`,
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
const results: DecodedGlobalStateV1_1 = {
|
|
150
|
+
price: BigNumber.from(0),
|
|
151
|
+
tick: 0,
|
|
152
|
+
fee: 0,
|
|
153
|
+
communityFeeToken0: 0,
|
|
154
|
+
communityFeeToken1: 0,
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
[
|
|
158
|
+
results.price,
|
|
159
|
+
results.tick,
|
|
160
|
+
results.fee,
|
|
161
|
+
,
|
|
162
|
+
results.communityFeeToken0,
|
|
163
|
+
results.communityFeeToken1,
|
|
164
|
+
] = ethers.utils.defaultAbiCoder.decode(
|
|
165
|
+
[`uint160`, `int24`, `uint16`, `uint16`, `uint8`, `uint8`, `bool`],
|
|
166
|
+
toDecode,
|
|
167
|
+
);
|
|
168
|
+
// This conversion is not precise, because when we decode, we have more values
|
|
169
|
+
// But used later
|
|
170
|
+
return results;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export function decodeTicksV1_1(
|
|
174
|
+
result: MultiResult<BytesLike> | BytesLike,
|
|
175
|
+
): TickInfoWithBigNumber {
|
|
176
|
+
const [isSuccess, toDecode] = extractSuccessAndValue(result);
|
|
177
|
+
|
|
178
|
+
assert(
|
|
179
|
+
isSuccess && toDecode !== '0x',
|
|
180
|
+
`decodeGlobalStateV1_1 failed to get decodable result: ${result}`,
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
const results: TickInfoWithBigNumber = {
|
|
184
|
+
liquidityNet: BigNumber.from(0),
|
|
185
|
+
liquidityGross: BigNumber.from(0),
|
|
186
|
+
secondsOutside: 0,
|
|
187
|
+
secondsPerLiquidityOutsideX128: BigNumber.from(0),
|
|
188
|
+
tickCumulativeOutside: BigNumber.from(0),
|
|
189
|
+
initialized: false,
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
[
|
|
193
|
+
results.liquidityGross,
|
|
194
|
+
results.liquidityNet,
|
|
195
|
+
,
|
|
196
|
+
,
|
|
197
|
+
results.tickCumulativeOutside,
|
|
198
|
+
results.secondsPerLiquidityOutsideX128,
|
|
199
|
+
results.secondsOutside,
|
|
200
|
+
results.initialized,
|
|
201
|
+
] = ethers.utils.defaultAbiCoder.decode(
|
|
202
|
+
[
|
|
203
|
+
`uint128`,
|
|
204
|
+
`int128`,
|
|
205
|
+
`uint256`,
|
|
206
|
+
`uint256`,
|
|
207
|
+
`int256`,
|
|
208
|
+
`uint160`,
|
|
209
|
+
`uint32`,
|
|
210
|
+
`bool`,
|
|
211
|
+
],
|
|
212
|
+
toDecode,
|
|
213
|
+
);
|
|
214
|
+
// This conversion is not precise, because when we decode, we have more values
|
|
215
|
+
// But used later
|
|
216
|
+
return results;
|
|
217
|
+
}
|
|
@@ -2,7 +2,11 @@ import dotenv from 'dotenv';
|
|
|
2
2
|
dotenv.config();
|
|
3
3
|
|
|
4
4
|
import { testE2E } from '../../../tests/utils-e2e';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
Holders,
|
|
7
|
+
NativeTokenSymbols,
|
|
8
|
+
Tokens,
|
|
9
|
+
} from '../../../tests/constants-e2e';
|
|
6
10
|
import { ContractMethod, Network, SwapSide } from '../../constants';
|
|
7
11
|
import { StaticJsonRpcProvider } from '@ethersproject/providers';
|
|
8
12
|
|
|
@@ -10,6 +14,99 @@ import { generateConfig } from '../../config';
|
|
|
10
14
|
|
|
11
15
|
jest.setTimeout(50 * 1000);
|
|
12
16
|
|
|
17
|
+
function testForNetwork(
|
|
18
|
+
network: Network,
|
|
19
|
+
dexKey: string,
|
|
20
|
+
tokenASymbol: string,
|
|
21
|
+
tokenBSymbol: string,
|
|
22
|
+
tokenAAmount: string,
|
|
23
|
+
tokenBAmount: string,
|
|
24
|
+
nativeTokenAmount: string,
|
|
25
|
+
slippage?: number | undefined,
|
|
26
|
+
) {
|
|
27
|
+
const provider = new StaticJsonRpcProvider(
|
|
28
|
+
generateConfig(network).privateHttpProvider,
|
|
29
|
+
network,
|
|
30
|
+
);
|
|
31
|
+
const tokens = Tokens[network];
|
|
32
|
+
const holders = Holders[network];
|
|
33
|
+
const nativeTokenSymbol = NativeTokenSymbols[network];
|
|
34
|
+
|
|
35
|
+
const sideToContractMethods = new Map([
|
|
36
|
+
[
|
|
37
|
+
SwapSide.SELL,
|
|
38
|
+
[
|
|
39
|
+
ContractMethod.simpleSwap,
|
|
40
|
+
ContractMethod.multiSwap,
|
|
41
|
+
ContractMethod.megaSwap,
|
|
42
|
+
],
|
|
43
|
+
],
|
|
44
|
+
[SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
|
|
45
|
+
]);
|
|
46
|
+
|
|
47
|
+
describe(`${network}`, () => {
|
|
48
|
+
sideToContractMethods.forEach((contractMethods, side) =>
|
|
49
|
+
describe(`${side}`, () => {
|
|
50
|
+
contractMethods.forEach((contractMethod: ContractMethod) => {
|
|
51
|
+
describe(`${contractMethod}`, () => {
|
|
52
|
+
it(`${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
|
|
53
|
+
await testE2E(
|
|
54
|
+
tokens[nativeTokenSymbol],
|
|
55
|
+
tokens[tokenASymbol],
|
|
56
|
+
holders[nativeTokenSymbol],
|
|
57
|
+
side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
|
|
58
|
+
side,
|
|
59
|
+
dexKey,
|
|
60
|
+
contractMethod,
|
|
61
|
+
network,
|
|
62
|
+
provider,
|
|
63
|
+
undefined,
|
|
64
|
+
undefined,
|
|
65
|
+
undefined,
|
|
66
|
+
slippage,
|
|
67
|
+
);
|
|
68
|
+
});
|
|
69
|
+
it(`${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
|
|
70
|
+
await testE2E(
|
|
71
|
+
tokens[tokenASymbol],
|
|
72
|
+
tokens[nativeTokenSymbol],
|
|
73
|
+
holders[tokenASymbol],
|
|
74
|
+
side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
|
|
75
|
+
side,
|
|
76
|
+
dexKey,
|
|
77
|
+
contractMethod,
|
|
78
|
+
network,
|
|
79
|
+
provider,
|
|
80
|
+
undefined,
|
|
81
|
+
undefined,
|
|
82
|
+
undefined,
|
|
83
|
+
slippage,
|
|
84
|
+
);
|
|
85
|
+
});
|
|
86
|
+
it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
|
|
87
|
+
await testE2E(
|
|
88
|
+
tokens[tokenASymbol],
|
|
89
|
+
tokens[tokenBSymbol],
|
|
90
|
+
holders[tokenASymbol],
|
|
91
|
+
side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
|
|
92
|
+
side,
|
|
93
|
+
dexKey,
|
|
94
|
+
contractMethod,
|
|
95
|
+
network,
|
|
96
|
+
provider,
|
|
97
|
+
undefined,
|
|
98
|
+
undefined,
|
|
99
|
+
undefined,
|
|
100
|
+
slippage,
|
|
101
|
+
);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
}),
|
|
106
|
+
);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
13
110
|
describe('BalancerV2 E2E', () => {
|
|
14
111
|
describe('BalancerV2 MAINNET', () => {
|
|
15
112
|
const dexKey = 'BalancerV2';
|
|
@@ -96,6 +193,18 @@ describe('BalancerV2 E2E', () => {
|
|
|
96
193
|
buyAmount: '10000000000',
|
|
97
194
|
},
|
|
98
195
|
],
|
|
196
|
+
[
|
|
197
|
+
{
|
|
198
|
+
name: 'USDC',
|
|
199
|
+
sellAmount: '111000000',
|
|
200
|
+
buyAmount: '111000000',
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
name: 'wstETH',
|
|
204
|
+
sellAmount: '100000000000000000',
|
|
205
|
+
buyAmount: '100000000000000000',
|
|
206
|
+
},
|
|
207
|
+
],
|
|
99
208
|
];
|
|
100
209
|
|
|
101
210
|
sideToContractMethods.forEach((contractMethods, side) =>
|
|
@@ -1054,7 +1163,7 @@ describe('BalancerV2 E2E', () => {
|
|
|
1054
1163
|
sellAmount: '200000000',
|
|
1055
1164
|
buyAmount: '2000000000',
|
|
1056
1165
|
},
|
|
1057
|
-
]
|
|
1166
|
+
],
|
|
1058
1167
|
];
|
|
1059
1168
|
|
|
1060
1169
|
sideToContractMethods.forEach((contractMethods, side) =>
|
|
@@ -1137,7 +1246,7 @@ describe('BalancerV2 E2E', () => {
|
|
|
1137
1246
|
sellAmount: '200000000',
|
|
1138
1247
|
buyAmount: '2000000000000000',
|
|
1139
1248
|
},
|
|
1140
|
-
]
|
|
1249
|
+
],
|
|
1141
1250
|
];
|
|
1142
1251
|
|
|
1143
1252
|
sideToContractMethods.forEach((contractMethods, side) =>
|
|
@@ -1181,7 +1290,28 @@ describe('BalancerV2 E2E', () => {
|
|
|
1181
1290
|
}),
|
|
1182
1291
|
);
|
|
1183
1292
|
});
|
|
1293
|
+
});
|
|
1294
|
+
|
|
1295
|
+
describe('BalancerV2 Base', () => {
|
|
1296
|
+
const dexKey = 'BalancerV2';
|
|
1297
|
+
const network = Network.BASE;
|
|
1298
|
+
|
|
1299
|
+
const tokenASymbol: string = 'USDC';
|
|
1300
|
+
const tokenBSymbol: string = 'GOLD';
|
|
1184
1301
|
|
|
1302
|
+
const tokenAAmount: string = '11110010';
|
|
1303
|
+
const tokenBAmount: string = '210000000000000000000';
|
|
1304
|
+
const nativeTokenAmount = '1000000000000000000';
|
|
1305
|
+
|
|
1306
|
+
testForNetwork(
|
|
1307
|
+
network,
|
|
1308
|
+
dexKey,
|
|
1309
|
+
tokenASymbol,
|
|
1310
|
+
tokenBSymbol,
|
|
1311
|
+
tokenAAmount,
|
|
1312
|
+
tokenBAmount,
|
|
1313
|
+
nativeTokenAmount,
|
|
1314
|
+
);
|
|
1185
1315
|
});
|
|
1186
1316
|
|
|
1187
1317
|
describe('BeetsFi OPTIMISM', () => {
|
|
@@ -1436,5 +1566,4 @@ describe('BalancerV2 E2E', () => {
|
|
|
1436
1566
|
});
|
|
1437
1567
|
});
|
|
1438
1568
|
});
|
|
1439
|
-
|
|
1440
1569
|
});
|
|
@@ -72,6 +72,91 @@ import {
|
|
|
72
72
|
} from './constants';
|
|
73
73
|
import { NumberAsString, OptimalSwapExchange } from '@paraswap/core';
|
|
74
74
|
|
|
75
|
+
// If you disable some pool, don't forget to clear the cache, otherwise changes won't be applied immediately
|
|
76
|
+
const enabledPoolTypes = [
|
|
77
|
+
// BalancerPoolTypes.MetaStable, // BOOSTED POOLS Disabled since vulnerability https://github.com/BalancerMaxis/multisig-ops/blob/main/BIPs/00notGov/2023-08-mitigation.md
|
|
78
|
+
BalancerPoolTypes.Stable,
|
|
79
|
+
BalancerPoolTypes.Weighted,
|
|
80
|
+
BalancerPoolTypes.LiquidityBootstrapping,
|
|
81
|
+
BalancerPoolTypes.Investment,
|
|
82
|
+
BalancerPoolTypes.StablePhantom,
|
|
83
|
+
BalancerPoolTypes.AaveLinear,
|
|
84
|
+
BalancerPoolTypes.ERC4626Linear,
|
|
85
|
+
BalancerPoolTypes.Linear,
|
|
86
|
+
BalancerPoolTypes.ComposableStable,
|
|
87
|
+
BalancerPoolTypes.BeefyLinear,
|
|
88
|
+
BalancerPoolTypes.GearboxLinear,
|
|
89
|
+
BalancerPoolTypes.MidasLinear,
|
|
90
|
+
BalancerPoolTypes.ReaperLinear,
|
|
91
|
+
BalancerPoolTypes.SiloLinear,
|
|
92
|
+
BalancerPoolTypes.TetuLinear,
|
|
93
|
+
BalancerPoolTypes.YearnLinear,
|
|
94
|
+
];
|
|
95
|
+
|
|
96
|
+
const disabledPoolIds = [
|
|
97
|
+
// broken ?
|
|
98
|
+
'0xbd482ffb3e6e50dc1c437557c3bea2b68f3683ee0000000000000000000003c6',
|
|
99
|
+
|
|
100
|
+
/* DISABLED POOLS SINCE VULNERABILITY https://github.com/BalancerMaxis/multisig-ops/blob/main/BIPs/00notGov/2023-08-mitigation.md*/
|
|
101
|
+
/* START:2023-08-mitigation */
|
|
102
|
+
//mainnet
|
|
103
|
+
'0xbf2ef8bdc2fc0f3203b3a01778e3ec5009aeef3300000000000000000000058d',
|
|
104
|
+
'0x99c88ad7dc566616548adde8ed3effa730eb6c3400000000000000000000049a',
|
|
105
|
+
'0x60683b05e9a39e3509d8fdb9c959f23170f8a0fa000000000000000000000489',
|
|
106
|
+
'0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d',
|
|
107
|
+
'0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe',
|
|
108
|
+
'0x25accb7943fd73dda5e23ba6329085a3c24bfb6a000200000000000000000387',
|
|
109
|
+
'0x50cf90b954958480b8df7958a9e965752f62712400000000000000000000046f',
|
|
110
|
+
'0x133d241f225750d2c92948e464a5a80111920331000000000000000000000476',
|
|
111
|
+
'0x8a6b25e33b12d1bb6929a8793961076bd1f9d3eb0002000000000000000003e8',
|
|
112
|
+
'0x959216bb492b2efa72b15b7aacea5b5c984c3cca000200000000000000000472',
|
|
113
|
+
'0x9b692f571b256140a39a34676bffa30634c586e100000000000000000000059d',
|
|
114
|
+
|
|
115
|
+
// polygon
|
|
116
|
+
'0xb3d658d5b95bf04e2932370dd1ff976fe18dd66a000000000000000000000ace',
|
|
117
|
+
'0x48e6b98ef6329f8f0a30ebb8c7c960330d64808500000000000000000000075b',
|
|
118
|
+
'0xb54b2125b711cd183edd3dd09433439d5396165200000000000000000000075e',
|
|
119
|
+
|
|
120
|
+
// arbitrum
|
|
121
|
+
'0xa8af146d79ac0bb981e4e0d8b788ec5711b1d5d000000000000000000000047b',
|
|
122
|
+
'0x077794c30afeccdf5ad2abc0588e8cee7197b71a000000000000000000000352',
|
|
123
|
+
'0x519cce718fcd11ac09194cff4517f12d263be067000000000000000000000382',
|
|
124
|
+
|
|
125
|
+
// optimism
|
|
126
|
+
'0x23ca0306b21ea71552b148cf3c4db4fc85ae19290000000000000000000000ac',
|
|
127
|
+
'0x62cf35db540152e94936de63efc90d880d4e241b0000000000000000000000ef',
|
|
128
|
+
'0x098f32d98d0d64dba199fc1923d3bf4192e787190001000000000000000000d2',
|
|
129
|
+
'0x43da214fab3315aa6c02e0b8f2bfb7ef2e3c60a50000000000000000000000ae',
|
|
130
|
+
'0xb1c9ac57594e9b1ec0f3787d9f6744ef4cb0a02400000000000000000000006e',
|
|
131
|
+
'0xde45f101250f2ca1c0f8adfc172576d10c12072d00000000000000000000003f',
|
|
132
|
+
'0x05e7732bf9ae5592e6aa05afe8cd80f7ab0a7bea00020000000000000000005a',
|
|
133
|
+
'0x981fb05b738e981ac532a99e77170ecb4bc27aef00010000000000000000004b',
|
|
134
|
+
'0x6222ae1d2a9f6894da50aa25cb7b303497f9bebd000000000000000000000046',
|
|
135
|
+
'0x3c74c4ed512050eb843d89fb9dcd5ebb4668eb6d0002000000000000000000cc',
|
|
136
|
+
|
|
137
|
+
// fantom
|
|
138
|
+
'0xc0064b291bd3d4ba0e44ccfc81bf8e7f7a579cd200000000000000000000042c',
|
|
139
|
+
'0x6e6dc948ce85c62125ff7a1e543d761a88f0a4cb000000000000000000000743',
|
|
140
|
+
'0x78ab08bf98f90f29a09c9b1d85b3b549369b03a3000100000000000000000354',
|
|
141
|
+
'0x302b8b64795b064cadc32f74993a6372498608070001000000000000000003e0',
|
|
142
|
+
'0x5ddb92a5340fd0ead3987d3661afcd6104c3b757000000000000000000000187',
|
|
143
|
+
'0xdfc65c1f15ad3507754ef0fd4ba67060c108db7e000000000000000000000406',
|
|
144
|
+
'0x6da14f5acd58dd5c8e486cfa1dc1c550f5c61c1c0000000000000000000003cf',
|
|
145
|
+
'0x592fa9f9d58065096f2b7838709c116957d7b5cf00020000000000000000043c',
|
|
146
|
+
'0xf47f4d59c863c02cbfa3eefe6771b9c9fbe7b97800000000000000000000072b',
|
|
147
|
+
'0xff2753aaba51c9f84689b9bd0a21b3cf380a1cff00000000000000000000072e',
|
|
148
|
+
'0x10441785a928040b456a179691141c48356eb3a50001000000000000000002fa',
|
|
149
|
+
'0x64b301e21d640f9bef90458b0987d81fb4cf1b9e00020000000000000000022e',
|
|
150
|
+
'0xba0e9aea8a7fa1daab4edf244191f2387a4e472b000100000000000000000737',
|
|
151
|
+
'0x1e2576344d49779bdbb71b1b76193d27e6f996b700020000000000000000032d',
|
|
152
|
+
'0xa10285f445bcb521f1d623300dc4998b02f11c8f00000000000000000000043b',
|
|
153
|
+
|
|
154
|
+
// zkevm
|
|
155
|
+
'0x6f34a44fce1506352a171232163e7716dd073ade000200000000000000000015',
|
|
156
|
+
'0xe274c9deb6ed34cfe4130f8d0a8a948dea5bb28600000000000000000000000d',
|
|
157
|
+
/* END:2023-08-mitigation */
|
|
158
|
+
];
|
|
159
|
+
|
|
75
160
|
const fetchAllPools = `query ($count: Int) {
|
|
76
161
|
pools: pools(
|
|
77
162
|
first: $count
|
|
@@ -81,7 +166,7 @@ const fetchAllPools = `query ($count: Int) {
|
|
|
81
166
|
totalLiquidity_gt: ${MIN_USD_LIQUIDITY_TO_FETCH.toString()},
|
|
82
167
|
totalShares_not_in: ["0", "0.000000000001"],
|
|
83
168
|
id_not_in: [
|
|
84
|
-
"
|
|
169
|
+
${disabledPoolIds.map(p => `"${p}"`).join(', ')}
|
|
85
170
|
],
|
|
86
171
|
address_not_in: [
|
|
87
172
|
"0x0afbd58beca09545e4fb67772faf3858e610bcd0",
|
|
@@ -93,9 +178,7 @@ const fetchAllPools = `query ($count: Int) {
|
|
|
93
178
|
],
|
|
94
179
|
swapEnabled: true,
|
|
95
180
|
poolType_in: [
|
|
96
|
-
|
|
97
|
-
"ERC4626Linear", "Linear", "ComposableStable", "BeefyLinear", "GearboxLinear", "MidasLinear",
|
|
98
|
-
"ReaperLinear", "SiloLinear", "TetuLinear", "YearnLinear"
|
|
181
|
+
${enabledPoolTypes.map(p => `"${p}"`).join(', ')}
|
|
99
182
|
]
|
|
100
183
|
}
|
|
101
184
|
) {
|
|
@@ -826,8 +909,6 @@ export class BalancerV2
|
|
|
826
909
|
prices: resOut.prices,
|
|
827
910
|
data: {
|
|
828
911
|
poolId: pool.id,
|
|
829
|
-
tokenIn: _from.address.toLowerCase(),
|
|
830
|
-
tokenOut: _to.address.toLowerCase(),
|
|
831
912
|
},
|
|
832
913
|
poolAddresses: [poolAddress],
|
|
833
914
|
exchange: this.dexKey,
|
|
@@ -23,7 +23,12 @@ export const BalancerConfig: DexConfigMap<DexParams> = {
|
|
|
23
23
|
subgraphURL:
|
|
24
24
|
'https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-avalanche-v2',
|
|
25
25
|
vaultAddress: '0xBA12222222228d8Ba445958a75a0704d566BF2C8',
|
|
26
|
-
}
|
|
26
|
+
},
|
|
27
|
+
[Network.BASE]: {
|
|
28
|
+
subgraphURL:
|
|
29
|
+
'https://api.studio.thegraph.com/query/24660/balancer-base-v2/version/latest',
|
|
30
|
+
vaultAddress: '0xBA12222222228d8Ba445958a75a0704d566BF2C8',
|
|
31
|
+
},
|
|
27
32
|
},
|
|
28
33
|
BeetsFi: {
|
|
29
34
|
[Network.FANTOM]: {
|
|
@@ -71,5 +76,9 @@ export const Adapters: Record<number, AdapterMappings> = {
|
|
|
71
76
|
[Network.AVALANCHE]: {
|
|
72
77
|
[SwapSide.SELL]: [{ name: 'AvalancheAdapter01', index: 8 }],
|
|
73
78
|
[SwapSide.BUY]: [{ name: 'AvalancheBuyAdapter', index: 7 }],
|
|
74
|
-
}
|
|
79
|
+
},
|
|
80
|
+
[Network.BASE]: {
|
|
81
|
+
[SwapSide.SELL]: [{ name: 'BaseAdapter01', index: 4 }],
|
|
82
|
+
[SwapSide.BUY]: [{ name: 'BaseBuyAdapter', index: 3 }],
|
|
83
|
+
},
|
|
75
84
|
};
|