@paraswap/dex-lib 3.8.26 → 3.8.27-dualsync.0
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/dex/idex.d.ts +4 -0
- package/build/dex/uniswap-v2/uniswap-v2.d.ts +11 -4
- package/build/dex/uniswap-v2/uniswap-v2.js +40 -13
- package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3-pool.d.ts +3 -2
- package/build/dex/uniswap-v3/uniswap-v3-pool.js +3 -3
- package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3.d.ts +4 -0
- package/build/dex/uniswap-v3/uniswap-v3.js +11 -2
- package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
- package/build/dex-helper/dummy-dex-helper.d.ts +2 -0
- package/build/dex-helper/dummy-dex-helper.js.map +1 -1
- package/build/dex-helper/idex-helper.d.ts +2 -0
- package/build/dex-utils.d.ts +3 -0
- package/build/dex-utils.js +10 -0
- package/build/dex-utils.js.map +1 -0
- package/build/stateful-dual-synchronizer.d.ts +46 -0
- package/build/stateful-dual-synchronizer.js +300 -0
- package/build/stateful-dual-synchronizer.js.map +1 -0
- package/package.json +1 -1
- package/src/dex/idex.ts +8 -0
- package/src/dex/uniswap-v2/uniswap-v2.ts +66 -16
- package/src/dex/uniswap-v3/uniswap-v3-pool.ts +4 -6
- package/src/dex/uniswap-v3/uniswap-v3.ts +28 -2
- package/src/dex-helper/dummy-dex-helper.ts +2 -0
- package/src/dex-helper/idex-helper.ts +2 -0
- package/src/dex-utils.ts +5 -0
- package/src/stateful-dual-synchronizer.ts +415 -0
- package/.vscode/launch.json +0 -16
- package/.vscode/settings.json +0 -3
- package/build/abi/AaveV1_lending_pool.json +0 -27
- package/build/abi/BProtocol.json +0 -1155
- package/build/abi/Jarvis.json +0 -1172
- package/build/abi/MStableAsset.json +0 -1545
- package/build/abi/OneInchLp.json +0 -1304
- package/build/abi/Onebit.json +0 -736
- package/build/abi/Shell.json +0 -1294
- package/build/abi/TraderJoeV2Router.json +0 -50
- package/build/abi/Uncompressor.json +0 -250
- package/build/abi/integral/factory.json +0 -333
- package/build/abi/integral/oracle.json +0 -501
- package/build/abi/integral/pool.json +0 -1041
- package/build/abi/integral/relayer.json +0 -1536
- package/build/abi/platypus/asset.json +0 -490
- package/build/abi/platypus/avax-pool.json +0 -820
- package/build/abi/platypus/oracle.json +0 -119
- package/build/abi/platypus/pool.json +0 -677
- package/build/abi/smardex/all/smardex-router.json +0 -648
- package/build/abi/smardex/layer-1/smardex-factory.json +0 -242
- package/build/abi/smardex/layer-1/smardex-pool.json +0 -506
- package/build/abi/smardex/layer-2/smardex-factory.json +0 -185
- package/build/abi/smardex/layer-2/smardex-pool.json +0 -578
- package/build/abi/swaap-v1/pool.json +0 -1346
- package/build/abi/zrx.v2.json +0 -1967
- package/build/abi/zrx.v3.json +0 -3454
- package/build/abi/zrx.v4.json +0 -2193
- package/build/dex/OneInchLp.d.ts +0 -24
- package/build/dex/OneInchLp.js +0 -43
- package/build/dex/OneInchLp.js.map +0 -1
- package/build/dex/aave-v1/aave-v1.d.ts +0 -33
- package/build/dex/aave-v1/aave-v1.js +0 -158
- package/build/dex/aave-v1/aave-v1.js.map +0 -1
- package/build/dex/aave-v1/config.d.ts +0 -11
- package/build/dex/aave-v1/config.js +0 -20
- package/build/dex/aave-v1/config.js.map +0 -1
- package/build/dex/aave-v1/tokens-mainnet.json +0 -134
- package/build/dex/aave-v1/tokens.d.ts +0 -3
- package/build/dex/aave-v1/tokens.js +0 -50
- package/build/dex/aave-v1/tokens.js.map +0 -1
- package/build/dex/aave-v1/types.d.ts +0 -12
- package/build/dex/aave-v1/types.js +0 -3
- package/build/dex/aave-v1/types.js.map +0 -1
- package/build/dex/bProtocol/bProtocol.d.ts +0 -15
- package/build/dex/bProtocol/bProtocol.js +0 -56
- package/build/dex/bProtocol/bProtocol.js.map +0 -1
- package/build/dex/bProtocol/types.d.ts +0 -11
- package/build/dex/bProtocol/types.js +0 -8
- package/build/dex/bProtocol/types.js.map +0 -1
- package/build/dex/bProtocol.d.ts +0 -18
- package/build/dex/bProtocol.js +0 -39
- package/build/dex/bProtocol.js.map +0 -1
- package/build/dex/bancor.d.ts +0 -26
- package/build/dex/bancor.js +0 -58
- package/build/dex/bancor.js.map +0 -1
- package/build/dex/compound.d.ts +0 -18
- package/build/dex/compound.js +0 -46
- package/build/dex/compound.js.map +0 -1
- package/build/dex/curve-v2.d.ts +0 -58
- package/build/dex/curve-v2.js +0 -180
- package/build/dex/curve-v2.js.map +0 -1
- package/build/dex/dodo-v1.d.ts +0 -33
- package/build/dex/dodo-v1.js +0 -63
- package/build/dex/dodo-v1.js.map +0 -1
- package/build/dex/etherfi/etherfi.d.ts +0 -26
- package/build/dex/etherfi/etherfi.js +0 -96
- package/build/dex/etherfi/etherfi.js.map +0 -1
- package/build/dex/integral/config.d.ts +0 -4
- package/build/dex/integral/config.js +0 -20
- package/build/dex/integral/config.js.map +0 -1
- package/build/dex/integral/context.d.ts +0 -40
- package/build/dex/integral/context.js +0 -158
- package/build/dex/integral/context.js.map +0 -1
- package/build/dex/integral/helpers.d.ts +0 -17
- package/build/dex/integral/helpers.js +0 -157
- package/build/dex/integral/helpers.js.map +0 -1
- package/build/dex/integral/integral-factory.d.ts +0 -24
- package/build/dex/integral/integral-factory.js +0 -95
- package/build/dex/integral/integral-factory.js.map +0 -1
- package/build/dex/integral/integral-pool.d.ts +0 -50
- package/build/dex/integral/integral-pool.js +0 -149
- package/build/dex/integral/integral-pool.js.map +0 -1
- package/build/dex/integral/integral-pricing.d.ts +0 -18
- package/build/dex/integral/integral-pricing.js +0 -114
- package/build/dex/integral/integral-pricing.js.map +0 -1
- package/build/dex/integral/integral-relayer.d.ts +0 -42
- package/build/dex/integral/integral-relayer.js +0 -192
- package/build/dex/integral/integral-relayer.js.map +0 -1
- package/build/dex/integral/integral-token.d.ts +0 -27
- package/build/dex/integral/integral-token.js +0 -59
- package/build/dex/integral/integral-token.js.map +0 -1
- package/build/dex/integral/integral.d.ts +0 -41
- package/build/dex/integral/integral.js +0 -376
- package/build/dex/integral/integral.js.map +0 -1
- package/build/dex/integral/types.d.ts +0 -85
- package/build/dex/integral/types.js +0 -9
- package/build/dex/integral/types.js.map +0 -1
- package/build/dex/integral/utils-e2e.d.ts +0 -9
- package/build/dex/integral/utils-e2e.js +0 -131
- package/build/dex/integral/utils-e2e.js.map +0 -1
- package/build/dex/integral/utils.d.ts +0 -17
- package/build/dex/integral/utils.js +0 -94
- package/build/dex/integral/utils.js.map +0 -1
- package/build/dex/jarvis.d.ts +0 -56
- package/build/dex/jarvis.js +0 -163
- package/build/dex/jarvis.js.map +0 -1
- package/build/dex/lido.d.ts +0 -19
- package/build/dex/lido.js +0 -42
- package/build/dex/lido.js.map +0 -1
- package/build/dex/mStable.d.ts +0 -44
- package/build/dex/mStable.js +0 -75
- package/build/dex/mStable.js.map +0 -1
- package/build/dex/onebit/onebit.d.ts +0 -16
- package/build/dex/onebit/onebit.js +0 -61
- package/build/dex/onebit/onebit.js.map +0 -1
- package/build/dex/onebit/types.d.ts +0 -14
- package/build/dex/onebit/types.js +0 -8
- package/build/dex/onebit/types.js.map +0 -1
- package/build/dex/onebit.d.ts +0 -25
- package/build/dex/onebit.js +0 -42
- package/build/dex/onebit.js.map +0 -1
- package/build/dex/platypus/asset.d.ts +0 -14
- package/build/dex/platypus/asset.js +0 -97
- package/build/dex/platypus/asset.js.map +0 -1
- package/build/dex/platypus/config.d.ts +0 -11
- package/build/dex/platypus/config.js +0 -69
- package/build/dex/platypus/config.js.map +0 -1
- package/build/dex/platypus/platypus.d.ts +0 -62
- package/build/dex/platypus/platypus.js +0 -442
- package/build/dex/platypus/platypus.js.map +0 -1
- package/build/dex/platypus/pool-avax.d.ts +0 -8
- package/build/dex/platypus/pool-avax.js +0 -54
- package/build/dex/platypus/pool-avax.js.map +0 -1
- package/build/dex/platypus/pool-base.d.ts +0 -19
- package/build/dex/platypus/pool-base.js +0 -86
- package/build/dex/platypus/pool-base.js.map +0 -1
- package/build/dex/platypus/pool-pure.d.ts +0 -8
- package/build/dex/platypus/pool-pure.js +0 -37
- package/build/dex/platypus/pool-pure.js.map +0 -1
- package/build/dex/platypus/pool-subscriber.d.ts +0 -14
- package/build/dex/platypus/pool-subscriber.js +0 -167
- package/build/dex/platypus/pool-subscriber.js.map +0 -1
- package/build/dex/platypus/pool.d.ts +0 -8
- package/build/dex/platypus/pool.js +0 -58
- package/build/dex/platypus/pool.js.map +0 -1
- package/build/dex/platypus/types.d.ts +0 -92
- package/build/dex/platypus/types.js +0 -10
- package/build/dex/platypus/types.js.map +0 -1
- package/build/dex/quickswap/spiritswap-v3.d.ts +0 -6
- package/build/dex/quickswap/spiritswap-v3.js +0 -19
- package/build/dex/quickswap/spiritswap-v3.js.map +0 -1
- package/build/dex/sdai/config.d.ts +0 -11
- package/build/dex/sdai/config.js +0 -21
- package/build/dex/sdai/config.js.map +0 -1
- package/build/dex/sdai/constants.d.ts +0 -2
- package/build/dex/sdai/constants.js +0 -6
- package/build/dex/sdai/constants.js.map +0 -1
- package/build/dex/sdai/scripts/validate-state.d.ts +0 -1
- package/build/dex/sdai/scripts/validate-state.js +0 -102
- package/build/dex/sdai/scripts/validate-state.js.map +0 -1
- package/build/dex/sdai/sdai-pool.d.ts +0 -16
- package/build/dex/sdai/sdai-pool.js +0 -85
- package/build/dex/sdai/sdai-pool.js.map +0 -1
- package/build/dex/sdai/sdai.d.ts +0 -51
- package/build/dex/sdai/sdai.js +0 -172
- package/build/dex/sdai/sdai.js.map +0 -1
- package/build/dex/sdai/types.d.ts +0 -21
- package/build/dex/sdai/types.js +0 -11
- package/build/dex/sdai/types.js.map +0 -1
- package/build/dex/sdai/utils.d.ts +0 -4
- package/build/dex/sdai/utils.js +0 -39
- package/build/dex/sdai/utils.js.map +0 -1
- package/build/dex/shell.d.ts +0 -25
- package/build/dex/shell.js +0 -41
- package/build/dex/shell.js.map +0 -1
- package/build/dex/smardex/config.d.ts +0 -4
- package/build/dex/smardex/config.js +0 -64
- package/build/dex/smardex/config.js.map +0 -1
- package/build/dex/smardex/constants.d.ts +0 -18
- package/build/dex/smardex/constants.js +0 -33
- package/build/dex/smardex/constants.js.map +0 -1
- package/build/dex/smardex/sdk/constants.d.ts +0 -6
- package/build/dex/smardex/sdk/constants.js +0 -13
- package/build/dex/smardex/sdk/constants.js.map +0 -1
- package/build/dex/smardex/sdk/core.d.ts +0 -113
- package/build/dex/smardex/sdk/core.js +0 -499
- package/build/dex/smardex/sdk/core.js.map +0 -1
- package/build/dex/smardex/sdk/errors.d.ts +0 -15
- package/build/dex/smardex/sdk/errors.js +0 -22
- package/build/dex/smardex/sdk/errors.js.map +0 -1
- package/build/dex/smardex/sdk/types.d.ts +0 -62
- package/build/dex/smardex/sdk/types.js +0 -3
- package/build/dex/smardex/sdk/types.js.map +0 -1
- package/build/dex/smardex/sdk/utils.d.ts +0 -44
- package/build/dex/smardex/sdk/utils.js +0 -133
- package/build/dex/smardex/sdk/utils.js.map +0 -1
- package/build/dex/smardex/smardex-event-pool.d.ts +0 -28
- package/build/dex/smardex/smardex-event-pool.js +0 -119
- package/build/dex/smardex/smardex-event-pool.js.map +0 -1
- package/build/dex/smardex/smardex.d.ts +0 -65
- package/build/dex/smardex/smardex.js +0 -519
- package/build/dex/smardex/smardex.js.map +0 -1
- package/build/dex/smardex/types.d.ts +0 -55
- package/build/dex/smardex/types.js +0 -3
- package/build/dex/smardex/types.js.map +0 -1
- package/build/dex/smoothy.d.ts +0 -26
- package/build/dex/smoothy.js +0 -48
- package/build/dex/smoothy.js.map +0 -1
- package/build/dex/solidly/forks-override/cone.d.ts +0 -22
- package/build/dex/solidly/forks-override/cone.js +0 -53
- package/build/dex/solidly/forks-override/cone.js.map +0 -1
- package/build/dex/solidly/forks-override/solisnek.d.ts +0 -8
- package/build/dex/solidly/forks-override/solisnek.js +0 -15
- package/build/dex/solidly/forks-override/solisnek.js.map +0 -1
- package/build/dex/stable-pool.d.ts +0 -28
- package/build/dex/stable-pool.js +0 -62
- package/build/dex/stable-pool.js.map +0 -1
- package/build/dex/swaap-v1/config.d.ts +0 -17
- package/build/dex/swaap-v1/config.js +0 -56
- package/build/dex/swaap-v1/config.js.map +0 -1
- package/build/dex/swaap-v1/constants.d.ts +0 -6
- package/build/dex/swaap-v1/constants.js +0 -17
- package/build/dex/swaap-v1/constants.js.map +0 -1
- package/build/dex/swaap-v1/libraries/ChainlinkUtils.d.ts +0 -25
- package/build/dex/swaap-v1/libraries/ChainlinkUtils.js +0 -62
- package/build/dex/swaap-v1/libraries/ChainlinkUtils.js.map +0 -1
- package/build/dex/swaap-v1/libraries/Const.d.ts +0 -18
- package/build/dex/swaap-v1/libraries/Const.js +0 -26
- package/build/dex/swaap-v1/libraries/Const.js.map +0 -1
- package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.d.ts +0 -77
- package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js +0 -316
- package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js.map +0 -1
- package/build/dex/swaap-v1/libraries/LogExpMath.d.ts +0 -75
- package/build/dex/swaap-v1/libraries/LogExpMath.js +0 -418
- package/build/dex/swaap-v1/libraries/LogExpMath.js.map +0 -1
- package/build/dex/swaap-v1/libraries/MathMMM.d.ts +0 -185
- package/build/dex/swaap-v1/libraries/MathMMM.js +0 -453
- package/build/dex/swaap-v1/libraries/MathMMM.js.map +0 -1
- package/build/dex/swaap-v1/libraries/Num.d.ts +0 -31
- package/build/dex/swaap-v1/libraries/Num.js +0 -167
- package/build/dex/swaap-v1/libraries/Num.js.map +0 -1
- package/build/dex/swaap-v1/libraries/PoolQuotations.d.ts +0 -23
- package/build/dex/swaap-v1/libraries/PoolQuotations.js +0 -131
- package/build/dex/swaap-v1/libraries/PoolQuotations.js.map +0 -1
- package/build/dex/swaap-v1/libraries/Struct.d.ts +0 -56
- package/build/dex/swaap-v1/libraries/Struct.js +0 -3
- package/build/dex/swaap-v1/libraries/Struct.js.map +0 -1
- package/build/dex/swaap-v1/swaap-v1-pool.d.ts +0 -45
- package/build/dex/swaap-v1/swaap-v1-pool.js +0 -656
- package/build/dex/swaap-v1/swaap-v1-pool.js.map +0 -1
- package/build/dex/swaap-v1/swaap-v1.d.ts +0 -61
- package/build/dex/swaap-v1/swaap-v1.js +0 -369
- package/build/dex/swaap-v1/swaap-v1.js.map +0 -1
- package/build/dex/swaap-v1/types.d.ts +0 -106
- package/build/dex/swaap-v1/types.js +0 -9
- package/build/dex/swaap-v1/types.js.map +0 -1
- package/build/dex/trader-joe-v2.1/optimizer.d.ts +0 -2
- package/build/dex/trader-joe-v2.1/optimizer.js +0 -44
- package/build/dex/trader-joe-v2.1/optimizer.js.map +0 -1
- package/build/dex/trader-joe-v2.1.d.ts +0 -43
- package/build/dex/trader-joe-v2.1.js +0 -79
- package/build/dex/trader-joe-v2.1.js.map +0 -1
- package/build/dex/trader-joe-v2.d.ts +0 -40
- package/build/dex/trader-joe-v2.js +0 -74
- package/build/dex/trader-joe-v2.js.map +0 -1
- package/build/dex/zerox/config.d.ts +0 -2
- package/build/dex/zerox/config.js +0 -33
- package/build/dex/zerox/config.js.map +0 -1
- package/build/dex/zerox/index.d.ts +0 -22
- package/build/dex/zerox/index.js +0 -225
- package/build/dex/zerox/index.js.map +0 -1
- package/build/dex/zerox/order.d.ts +0 -88
- package/build/dex/zerox/order.js +0 -53
- package/build/dex/zerox/order.js.map +0 -1
- package/build/dex/zerox/types.d.ts +0 -73
- package/build/dex/zerox/types.js +0 -21
- package/build/dex/zerox/types.js.map +0 -1
- package/build/executor/compressor/Compressor.d.ts +0 -23
- package/build/executor/compressor/Compressor.js +0 -144
- package/build/executor/compressor/Compressor.js.map +0 -1
- package/build/executor/compressor/compress.d.ts +0 -17
- package/build/executor/compressor/compress.js +0 -187
- package/build/executor/compressor/compress.js.map +0 -1
- package/build/executor/compressor/compress_functions/addressSubstitution.d.ts +0 -6
- package/build/executor/compressor/compress_functions/addressSubstitution.js +0 -29
- package/build/executor/compressor/compress_functions/addressSubstitution.js.map +0 -1
- package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.d.ts +0 -10
- package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js +0 -40
- package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js.map +0 -1
- package/build/executor/compressor/compress_functions/byteSubstitution.d.ts +0 -11
- package/build/executor/compressor/compress_functions/byteSubstitution.js +0 -64
- package/build/executor/compressor/compress_functions/byteSubstitution.js.map +0 -1
- package/build/executor/compressor/compress_functions/ffSubstitution.d.ts +0 -7
- package/build/executor/compressor/compress_functions/ffSubstitution.js +0 -54
- package/build/executor/compressor/compress_functions/ffSubstitution.js.map +0 -1
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute.d.ts +0 -8
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js +0 -67
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js.map +0 -1
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.d.ts +0 -8
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js +0 -61
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js.map +0 -1
- package/build/executor/compressor/compress_functions/reverseAddressSubstitution.d.ts +0 -6
- package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js +0 -37
- package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js.map +0 -1
- package/build/executor/compressor/compress_functions/searchUnusedBytes.d.ts +0 -9
- package/build/executor/compressor/compress_functions/searchUnusedBytes.js +0 -33
- package/build/executor/compressor/compress_functions/searchUnusedBytes.js.map +0 -1
- package/build/executor/compressor/fetchSaved.d.ts +0 -0
- package/build/executor/compressor/fetchSaved.js +0 -17
- package/build/executor/compressor/fetchSaved.js.map +0 -1
- package/build/executor/compressor/utils/computeCostL2.d.ts +0 -2
- package/build/executor/compressor/utils/computeCostL2.js +0 -14
- package/build/executor/compressor/utils/computeCostL2.js.map +0 -1
- package/build/executor/compressor/utils/findLongestDuplicatedString.d.ts +0 -2
- package/build/executor/compressor/utils/findLongestDuplicatedString.js +0 -30
- package/build/executor/compressor/utils/findLongestDuplicatedString.js.map +0 -1
- package/build/executor/compressor/utils/getAllIndexes.d.ts +0 -2
- package/build/executor/compressor/utils/getAllIndexes.js +0 -12
- package/build/executor/compressor/utils/getAllIndexes.js.map +0 -1
- package/build/executor/compressor/utils/getByteForAddress.d.ts +0 -2
- package/build/executor/compressor/utils/getByteForAddress.js +0 -14
- package/build/executor/compressor/utils/getByteForAddress.js.map +0 -1
- package/build/executor/compressor/utils/intTo2Bytes.d.ts +0 -2
- package/build/executor/compressor/utils/intTo2Bytes.js +0 -14
- package/build/executor/compressor/utils/intTo2Bytes.js.map +0 -1
- package/build/executor/compressor/utils/intTo3Bytes.d.ts +0 -2
- package/build/executor/compressor/utils/intTo3Bytes.js +0 -18
- package/build/executor/compressor/utils/intTo3Bytes.js.map +0 -1
- package/build/executor/compressor/utils/intToByte.d.ts +0 -2
- package/build/executor/compressor/utils/intToByte.js +0 -10
- package/build/executor/compressor/utils/intToByte.js.map +0 -1
|
@@ -39,6 +39,8 @@ export declare class DummyDexHelper implements IDexHelper {
|
|
|
39
39
|
getLogger: LoggerConstructor;
|
|
40
40
|
web3Provider: Web3;
|
|
41
41
|
getTokenUSDPrice: (token: Token, amount: bigint) => Promise<number>;
|
|
42
|
+
dexStatePublisher: any;
|
|
43
|
+
dexStateSubscriber: any;
|
|
42
44
|
constructor(network: number, rpcUrl?: string);
|
|
43
45
|
replaceProviderWithRPC(rpcUrl: string): void;
|
|
44
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dummy-dex-helper.js","sourceRoot":"","sources":["../../src/dex-helper/dummy-dex-helper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dummy-dex-helper.js","sourceRoot":"","sources":["../../src/dex-helper/dummy-dex-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DexPoolNotFoundError = void 0;
|
|
4
|
+
class DexPoolNotFoundError extends Error {
|
|
5
|
+
constructor(dexKey, poolIdentifier) {
|
|
6
|
+
super(`Pool ${poolIdentifier} not found for DEX ${dexKey}`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.DexPoolNotFoundError = DexPoolNotFoundError;
|
|
10
|
+
//# sourceMappingURL=dex-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dex-utils.js","sourceRoot":"","sources":["../src/dex-utils.ts"],"names":[],"mappings":";;;AAAA,MAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,MAAc,EAAE,cAAsB;QAChD,KAAK,CAAC,QAAQ,cAAc,sBAAsB,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF;AAJD,oDAIC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { AsyncOrSync, DeepReadonly } from 'ts-essentials';
|
|
2
|
+
import { Log, Logger } from './types';
|
|
3
|
+
import { BlockHeader } from 'web3-eth';
|
|
4
|
+
import { EventSubscriber } from './dex-helper/iblock-manager';
|
|
5
|
+
import { IDexHelper } from './dex-helper';
|
|
6
|
+
export declare type InitializeStateOptions<State> = {
|
|
7
|
+
state?: DeepReadonly<State>;
|
|
8
|
+
initCallback?: (state: DeepReadonly<State>) => void;
|
|
9
|
+
forceRegenerate?: boolean;
|
|
10
|
+
};
|
|
11
|
+
declare type ObjectOrString<State> = DeepReadonly<State> | string;
|
|
12
|
+
declare type ObjectOrStringOrNull<State> = ObjectOrString<State> | null;
|
|
13
|
+
export declare abstract class StatefulDualSynchronizer<State> implements EventSubscriber {
|
|
14
|
+
dexKey: string;
|
|
15
|
+
poolIdentifier: string;
|
|
16
|
+
protected dexHelper: IDexHelper;
|
|
17
|
+
protected logger: Logger;
|
|
18
|
+
protected state: ObjectOrStringOrNull<State>;
|
|
19
|
+
protected stateBlockNumber: number;
|
|
20
|
+
protected stateHistory: {
|
|
21
|
+
[blockNumber: number]: ObjectOrString<State>;
|
|
22
|
+
};
|
|
23
|
+
protected invalid: boolean;
|
|
24
|
+
isTracking: () => boolean;
|
|
25
|
+
addressesSubscribed: string[];
|
|
26
|
+
parentName: string;
|
|
27
|
+
name: string;
|
|
28
|
+
isInitialized: boolean;
|
|
29
|
+
constructor(dexKey: string, poolIdentifier: string, dexHelper: IDexHelper, logger: Logger);
|
|
30
|
+
getStateBlockNumber(): Readonly<number>;
|
|
31
|
+
initialize(blockNumber: number, options?: InitializeStateOptions<State>): Promise<void>;
|
|
32
|
+
protected abstract processLog(state: DeepReadonly<State>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): AsyncOrSync<DeepReadonly<State> | null>;
|
|
33
|
+
protected processBlockLogs(state: DeepReadonly<State>, logs: Readonly<Log>[], blockHeader: Readonly<BlockHeader>): Promise<DeepReadonly<State> | null>;
|
|
34
|
+
abstract generateState(blockNumber?: number | 'latest'): AsyncOrSync<DeepReadonly<State>>;
|
|
35
|
+
restart(blockNumber: number): void;
|
|
36
|
+
update(logs: Readonly<Log>[], blockHeaders: Readonly<{
|
|
37
|
+
[blockNumber: number]: Readonly<BlockHeader>;
|
|
38
|
+
}>): Promise<void>;
|
|
39
|
+
rollback(blockNumber: number): void;
|
|
40
|
+
invalidate(): void;
|
|
41
|
+
getState(minBlockNumber: number): DeepReadonly<State> | null;
|
|
42
|
+
getStaleState(): DeepReadonly<State> | null;
|
|
43
|
+
_setState(state: ObjectOrStringOrNull<State>, blockNumber: number): void;
|
|
44
|
+
setState(state: ObjectOrString<State>, blockNumber: number): void;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StatefulDualSynchronizer = void 0;
|
|
4
|
+
const ts_essentials_1 = require("ts-essentials");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
// TODO: make sure that we can get either state object or string
|
|
8
|
+
class StatefulDualSynchronizer {
|
|
9
|
+
constructor(dexKey, poolIdentifier, dexHelper, logger) {
|
|
10
|
+
this.dexKey = dexKey;
|
|
11
|
+
this.poolIdentifier = poolIdentifier;
|
|
12
|
+
this.dexHelper = dexHelper;
|
|
13
|
+
this.logger = logger;
|
|
14
|
+
//The current state and its block number
|
|
15
|
+
//Derived classes should not set these directly, and instead use setState()
|
|
16
|
+
this.state = null;
|
|
17
|
+
this.stateBlockNumber = 0;
|
|
18
|
+
//Derived classes should use setState() to record a new entry
|
|
19
|
+
this.stateHistory = {};
|
|
20
|
+
//Invalid flag - indicates that the currently stored state might not be valid
|
|
21
|
+
this.invalid = false;
|
|
22
|
+
this.isTracking = () => false;
|
|
23
|
+
this.addressesSubscribed = [];
|
|
24
|
+
this.isInitialized = false;
|
|
25
|
+
this.dexKey = dexKey.toLowerCase();
|
|
26
|
+
this.poolIdentifier = poolIdentifier.toLowerCase();
|
|
27
|
+
// parentName and Name are imposed by the interface. Prefer dexKey and poolIdentifier
|
|
28
|
+
this.parentName = this.dexKey;
|
|
29
|
+
this.name = this.poolIdentifier;
|
|
30
|
+
if (!this.dexHelper.config.isSlave) {
|
|
31
|
+
this.dexHelper.dexStatePublisher.registerPool(this.dexKey, this.poolIdentifier, this);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
getStateBlockNumber() {
|
|
35
|
+
return this.stateBlockNumber;
|
|
36
|
+
}
|
|
37
|
+
//Function which set the initial state and bounded it to blockNumber
|
|
38
|
+
//There is multiple possible case:
|
|
39
|
+
// 1. You provide a state in options object the function will initialize with the provided state
|
|
40
|
+
// with blockNumber and subscribe to logs.
|
|
41
|
+
// 2. if you are a master instance of dex-lib and no state is provided in options object
|
|
42
|
+
// then the function generate a new state with blockNumber as height and set the state with
|
|
43
|
+
// the result.
|
|
44
|
+
// 3. if you are a slave instance of dex-lib
|
|
45
|
+
// either:
|
|
46
|
+
// - If a state is found in the cache and the state is not null we set our state with the
|
|
47
|
+
// cache state and cache blockNumber. Subscribe to logs with the cache blockNumber
|
|
48
|
+
// or:
|
|
49
|
+
// - If no valid state found in cache, we generate a new state with blockNumber
|
|
50
|
+
// and se state with blockNumber. Subscribe to logs with blockNumber. The function
|
|
51
|
+
// will also publish a message to cache to tell one master version of dex-lib that this slave
|
|
52
|
+
// instance subscribed to a pool from dex this.parentName and name this.name.
|
|
53
|
+
async initialize(blockNumber, options) {
|
|
54
|
+
let masterBn = undefined;
|
|
55
|
+
if (options && options.state) {
|
|
56
|
+
this.setState(options.state, blockNumber);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if (this.dexHelper.config.isSlave) {
|
|
60
|
+
let updatedState = await this.dexHelper.dexStateSubscriber.requestDEXPoolState(this.dexKey, this.poolIdentifier, blockNumber);
|
|
61
|
+
this.setState(updatedState, blockNumber);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// if you are not a slave instance always generate new state
|
|
65
|
+
this.logger.info(`${this.dexKey}: ${this.poolIdentifier}: cache generating state`);
|
|
66
|
+
const state = await this.generateState(blockNumber);
|
|
67
|
+
this.setState(state, blockNumber);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// apply a callback on the state
|
|
71
|
+
if (options && options.initCallback) {
|
|
72
|
+
if (this.state) {
|
|
73
|
+
(0, ts_essentials_1.assert)(typeof this.state !== 'string', 'LOGIC ERROR: state is serialised');
|
|
74
|
+
options.initCallback(this.state);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (this.dexHelper.config.isSlave) {
|
|
78
|
+
this.dexHelper.dexStateSubscriber.subscribeToDEXPoolUpdates(this.dexKey, this.poolIdentifier, (state, blockNumber) => {
|
|
79
|
+
this.setState(state, blockNumber);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.dexHelper.blockManager.subscribeToLogs(this, this.addressesSubscribed, masterBn || blockNumber);
|
|
84
|
+
}
|
|
85
|
+
this.isInitialized = true;
|
|
86
|
+
}
|
|
87
|
+
//This function processes all logs for a single block (the block number is
|
|
88
|
+
//contained in each of the logs). It is not allowed to call this function
|
|
89
|
+
//with an empty logs array. The default implementation here will just call
|
|
90
|
+
//processLog for each of the logs; it may be overridden, if block specific
|
|
91
|
+
//handling or handling multiple logs at once is needed. Null should be
|
|
92
|
+
//returned if none of the provided logs affect the state.
|
|
93
|
+
async processBlockLogs(state, logs, blockHeader) {
|
|
94
|
+
let nextState = null;
|
|
95
|
+
for (const log of logs) {
|
|
96
|
+
const retState = await this.processLog(nextState || state, log, blockHeader);
|
|
97
|
+
if (retState)
|
|
98
|
+
nextState = retState;
|
|
99
|
+
}
|
|
100
|
+
return nextState;
|
|
101
|
+
}
|
|
102
|
+
restart(blockNumber) {
|
|
103
|
+
for (const _bn of Object.keys(this.stateHistory)) {
|
|
104
|
+
const bn = +_bn;
|
|
105
|
+
if (bn >= blockNumber)
|
|
106
|
+
break;
|
|
107
|
+
delete this.stateHistory[bn];
|
|
108
|
+
}
|
|
109
|
+
if (this.state && this.stateBlockNumber < blockNumber) {
|
|
110
|
+
this.logger.info(`StatefulDualSynchronizer restart, bn: ${blockNumber}, state_bn: ${this.stateBlockNumber}: ${this.dexKey}: ${this.poolIdentifier}`);
|
|
111
|
+
this._setState(null, blockNumber);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//Implementation must call setState() for every block in which the state
|
|
115
|
+
//changes and must ignore any logs that aren't newer than the oldest state
|
|
116
|
+
//stored. If state is not set or null, then the implementation should derive
|
|
117
|
+
//the state by another method for the block number of the first log, ignore
|
|
118
|
+
//all logs with that block number and then proceed as normal for the remaining
|
|
119
|
+
//logs. Remember to clear the invalid flag, even if there are no logs!
|
|
120
|
+
//A default implementation is provided here, but could be overridden.
|
|
121
|
+
async update(logs, blockHeaders) {
|
|
122
|
+
if (this.dexHelper.config.isSlave) {
|
|
123
|
+
throw new Error('LOGIC ERROR: we should expect to listen to events on slave instances');
|
|
124
|
+
}
|
|
125
|
+
let index = 0;
|
|
126
|
+
let lastBlockNumber;
|
|
127
|
+
while (index < logs.length) {
|
|
128
|
+
const blockNumber = logs[index].blockNumber;
|
|
129
|
+
if (index && blockNumber <= lastBlockNumber) {
|
|
130
|
+
this.logger.error('update() received blocks out of order!');
|
|
131
|
+
}
|
|
132
|
+
const blockHeader = blockHeaders[blockNumber];
|
|
133
|
+
if (!blockHeader) {
|
|
134
|
+
this.logger.error('update() missing block header!');
|
|
135
|
+
}
|
|
136
|
+
let lastLogIndex = logs[index].logIndex;
|
|
137
|
+
let indexBlockEnd = index + 1;
|
|
138
|
+
while (indexBlockEnd < logs.length &&
|
|
139
|
+
logs[indexBlockEnd].blockNumber === blockNumber) {
|
|
140
|
+
if (logs[indexBlockEnd].logIndex <= lastLogIndex) {
|
|
141
|
+
this.logger.error('update() received logs out of order!');
|
|
142
|
+
}
|
|
143
|
+
lastLogIndex = logs[indexBlockEnd].logIndex;
|
|
144
|
+
++indexBlockEnd;
|
|
145
|
+
}
|
|
146
|
+
if (!this.state) {
|
|
147
|
+
const freshState = await this.generateState(blockNumber);
|
|
148
|
+
this.setState(freshState, blockNumber);
|
|
149
|
+
}
|
|
150
|
+
//Find the last state before the blockNumber of the logs
|
|
151
|
+
let stateBeforeLog;
|
|
152
|
+
for (const _bn of Object.keys(this.stateHistory)) {
|
|
153
|
+
const bn = +_bn;
|
|
154
|
+
if (bn >= blockNumber)
|
|
155
|
+
break;
|
|
156
|
+
stateBeforeLog = this.stateHistory[bn];
|
|
157
|
+
}
|
|
158
|
+
//Ignoring logs if there's no older state to play them onto
|
|
159
|
+
if (stateBeforeLog) {
|
|
160
|
+
(0, ts_essentials_1.assert)(typeof stateBeforeLog !== 'string', 'LOGIC ERROR: state is serialised');
|
|
161
|
+
const nextState = await this.processBlockLogs(stateBeforeLog, logs.slice(index, indexBlockEnd), blockHeader);
|
|
162
|
+
if (nextState)
|
|
163
|
+
this.setState(nextState, blockNumber);
|
|
164
|
+
}
|
|
165
|
+
lastBlockNumber = blockNumber;
|
|
166
|
+
index = indexBlockEnd;
|
|
167
|
+
}
|
|
168
|
+
this.invalid = false;
|
|
169
|
+
if (!this.dexHelper.config.isSlave && this.state === null) {
|
|
170
|
+
const network = this.dexHelper.config.data.network;
|
|
171
|
+
const createNewState = async () => {
|
|
172
|
+
if (this.state !== null) {
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
const latestBlockNumber = this.dexHelper.blockManager.getLatestBlockNumber();
|
|
176
|
+
this.logger.warn(`${network}: ${this.dexKey}: ${this.poolIdentifier}: master generate (latest: ${latestBlockNumber}) new state because state is null`);
|
|
177
|
+
try {
|
|
178
|
+
const state = await this.generateState(latestBlockNumber);
|
|
179
|
+
this.setState(state, latestBlockNumber);
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
catch (e) {
|
|
183
|
+
this.logger.error(`${network}: ${this.dexKey} ${this.poolIdentifier}: (${latestBlockNumber}) failed fetch state:`, e);
|
|
184
|
+
}
|
|
185
|
+
return false;
|
|
186
|
+
};
|
|
187
|
+
this.dexHelper.promiseScheduler.addPromise(createNewState);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//Removes all states that are beyond the given block number and sets the
|
|
191
|
+
//current state to the latest one that is left, if any, unless the invalid
|
|
192
|
+
//flag is not set, in which case the most recent state can be kept.
|
|
193
|
+
rollback(blockNumber) {
|
|
194
|
+
if (this.invalid) {
|
|
195
|
+
let lastBn = undefined;
|
|
196
|
+
//loop in the ascending order of the blockNumber. V8 property when object keys are number.
|
|
197
|
+
for (const bn of Object.keys(this.stateHistory)) {
|
|
198
|
+
const bnAsNumber = +bn;
|
|
199
|
+
if (bnAsNumber > blockNumber) {
|
|
200
|
+
delete this.stateHistory[+bn];
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
lastBn = bnAsNumber;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
if (lastBn) {
|
|
207
|
+
this._setState(this.stateHistory[lastBn], lastBn);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
this.logger.info(`StatefulDualSynchronizer rollback, bn: ${blockNumber}: ${this.dexKey}: ${this.poolIdentifier}`);
|
|
211
|
+
this._setState(null, blockNumber);
|
|
212
|
+
// TODO: explore generating new state on invalidation
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
//Keep the current state in this.state and in the history
|
|
217
|
+
for (const _bn of Object.keys(this.stateHistory)) {
|
|
218
|
+
const bn = +_bn;
|
|
219
|
+
if (+bn > blockNumber && +bn !== this.stateBlockNumber) {
|
|
220
|
+
delete this.stateHistory[bn];
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
invalidate() {
|
|
226
|
+
this.logger.info(`StatefulDualSynchronizer invalidate: ${this.dexKey}: ${this.poolIdentifier}`);
|
|
227
|
+
this.invalid = true;
|
|
228
|
+
// TODO: explore generating new state on invalidation
|
|
229
|
+
}
|
|
230
|
+
//May return a state that is more recent than the block number specified, or
|
|
231
|
+
//will return null if a recent enough state cannot be found, in which case the
|
|
232
|
+
//caller should derive a state using another method (at an exact block
|
|
233
|
+
//number), possibly using generateState(), and set it on this object using
|
|
234
|
+
//setState. In case isTracking() returns true, it is assumed that the stored
|
|
235
|
+
//state is current and so the minBlockNumber will be disregarded.
|
|
236
|
+
getState(minBlockNumber) {
|
|
237
|
+
if (!this.state || this.invalid)
|
|
238
|
+
return null;
|
|
239
|
+
if (this.dexHelper.config.isSlave) {
|
|
240
|
+
if (this.dexHelper.dexStateSubscriber.isSynced(minBlockNumber) ||
|
|
241
|
+
this.stateBlockNumber >= minBlockNumber) {
|
|
242
|
+
if (typeof this.state === 'string') {
|
|
243
|
+
this.state = utils_1.Utils.Parse(this.state);
|
|
244
|
+
}
|
|
245
|
+
(0, ts_essentials_1.assert)(typeof this.state !== 'string', 'LOGIC ERROR: state is serialised');
|
|
246
|
+
return this.state;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
if (this.isTracking() || this.stateBlockNumber >= minBlockNumber) {
|
|
251
|
+
if (typeof this.state === 'string') {
|
|
252
|
+
this.state = utils_1.Utils.Parse(this.state);
|
|
253
|
+
}
|
|
254
|
+
(0, ts_essentials_1.assert)(typeof this.state !== 'string', 'LOGIC ERROR: state is serialised');
|
|
255
|
+
return this.state;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return null; // DEX need to implement an fallback strategy here
|
|
259
|
+
}
|
|
260
|
+
// Returns the last set state. The state might be invalid or not updated.
|
|
261
|
+
getStaleState() {
|
|
262
|
+
if (typeof this.state === 'string') {
|
|
263
|
+
this.state = utils_1.Utils.Parse(this.state);
|
|
264
|
+
}
|
|
265
|
+
(0, ts_essentials_1.assert)(typeof this.state !== 'string', 'LOGIC ERROR: state is serialised');
|
|
266
|
+
return this.state;
|
|
267
|
+
}
|
|
268
|
+
_setState(state, blockNumber) {
|
|
269
|
+
this.state = state;
|
|
270
|
+
this.stateBlockNumber = blockNumber;
|
|
271
|
+
}
|
|
272
|
+
//Saves the state into the stateHistory, and cleans up any old state that is
|
|
273
|
+
//no longer needed. If the blockNumber is greater than or equal to the
|
|
274
|
+
//current state, then the current state will be updated and the invalid flag
|
|
275
|
+
//can be reset.
|
|
276
|
+
setState(state, blockNumber) {
|
|
277
|
+
if (!blockNumber) {
|
|
278
|
+
this.logger.error('setState() with blockNumber', blockNumber);
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
this.stateHistory[blockNumber] = state;
|
|
282
|
+
if (!this.state || blockNumber >= this.stateBlockNumber) {
|
|
283
|
+
this._setState(state, blockNumber);
|
|
284
|
+
this.invalid = false;
|
|
285
|
+
}
|
|
286
|
+
const minBlockNumberToKeep = this.stateBlockNumber - constants_1.MAX_BLOCKS_HISTORY;
|
|
287
|
+
let lastBlockNumber;
|
|
288
|
+
for (const bn of Object.keys(this.stateHistory)) {
|
|
289
|
+
if (+bn <= minBlockNumberToKeep) {
|
|
290
|
+
if (lastBlockNumber)
|
|
291
|
+
delete this.stateHistory[lastBlockNumber];
|
|
292
|
+
}
|
|
293
|
+
if (+bn >= minBlockNumberToKeep)
|
|
294
|
+
break;
|
|
295
|
+
lastBlockNumber = +bn;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
exports.StatefulDualSynchronizer = StatefulDualSynchronizer;
|
|
300
|
+
//# sourceMappingURL=stateful-dual-synchronizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateful-dual-synchronizer.js","sourceRoot":"","sources":["../src/stateful-dual-synchronizer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/dex/idex.ts
CHANGED
|
@@ -207,6 +207,14 @@ export interface IDexPricing<ExchangeData> {
|
|
|
207
207
|
// useful for RFQ system
|
|
208
208
|
isBlacklisted?(userAddress?: Address): AsyncOrSync<boolean>;
|
|
209
209
|
|
|
210
|
+
addPoolGenerateState?({
|
|
211
|
+
poolIdentifier,
|
|
212
|
+
blockNumber,
|
|
213
|
+
}: {
|
|
214
|
+
poolIdentifier: string;
|
|
215
|
+
blockNumber: number;
|
|
216
|
+
}): AsyncOrSync<null | unknown>;
|
|
217
|
+
|
|
210
218
|
// blacklist a specific userAddress from exchange
|
|
211
219
|
setBlacklist?(userAddress?: Address): AsyncOrSync<boolean>;
|
|
212
220
|
}
|
|
@@ -3,7 +3,6 @@ import { pack } from '@ethersproject/solidity';
|
|
|
3
3
|
import _ from 'lodash';
|
|
4
4
|
import { AsyncOrSync, DeepReadonly } from 'ts-essentials';
|
|
5
5
|
import erc20ABI from '../../abi/erc20.json';
|
|
6
|
-
import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
|
|
7
6
|
import {
|
|
8
7
|
AdapterExchangeParam,
|
|
9
8
|
Address,
|
|
@@ -69,6 +68,7 @@ import {
|
|
|
69
68
|
hexConcat,
|
|
70
69
|
} from 'ethers/lib/utils';
|
|
71
70
|
import { BigNumber } from 'ethers';
|
|
71
|
+
import { StatefulDualSynchronizer } from '../../stateful-dual-synchronizer';
|
|
72
72
|
|
|
73
73
|
const rebaseTokens = _rebaseTokens as { chainId: number; address: string }[];
|
|
74
74
|
|
|
@@ -124,11 +124,12 @@ export interface UniswapV2Pair {
|
|
|
124
124
|
pool?: UniswapV2EventPool;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
export class UniswapV2EventPool extends
|
|
127
|
+
export class UniswapV2EventPool extends StatefulDualSynchronizer<UniswapV2PoolState> {
|
|
128
128
|
decoder = (log: Log) => this.iface.parseLog(log);
|
|
129
129
|
|
|
130
130
|
constructor(
|
|
131
|
-
parentName: string,
|
|
131
|
+
public parentName: string,
|
|
132
|
+
public poolIdentifier: string,
|
|
132
133
|
protected dexHelper: IDexHelper,
|
|
133
134
|
private poolAddress: Address,
|
|
134
135
|
private token0: Token,
|
|
@@ -142,15 +143,7 @@ export class UniswapV2EventPool extends StatefulEventSubscriber<UniswapV2PoolSta
|
|
|
142
143
|
private feesMultiCallDecoder?: (values: any[]) => number,
|
|
143
144
|
private iface: Interface = uniswapV2PoolIface,
|
|
144
145
|
) {
|
|
145
|
-
super(
|
|
146
|
-
parentName,
|
|
147
|
-
(token0.symbol || token0.address) +
|
|
148
|
-
'-' +
|
|
149
|
-
(token1.symbol || token1.address) +
|
|
150
|
-
' pool',
|
|
151
|
-
dexHelper,
|
|
152
|
-
logger,
|
|
153
|
-
);
|
|
146
|
+
super(parentName, poolIdentifier, dexHelper, logger);
|
|
154
147
|
}
|
|
155
148
|
|
|
156
149
|
protected processLog(
|
|
@@ -301,10 +294,11 @@ export class UniswapV2
|
|
|
301
294
|
reserves1: string,
|
|
302
295
|
feeCode: number,
|
|
303
296
|
blockNumber: number,
|
|
304
|
-
) {
|
|
297
|
+
): Promise<UniswapV2EventPool | null> {
|
|
305
298
|
const { callEntry, callDecoder } = this.getFeesMultiCallData(pair) || {};
|
|
306
299
|
pair.pool = new UniswapV2EventPool(
|
|
307
300
|
this.dexKey,
|
|
301
|
+
this._getPoolIdentifier(pair.token0, pair.token1),
|
|
308
302
|
this.dexHelper,
|
|
309
303
|
pair.exchange!,
|
|
310
304
|
pair.token0,
|
|
@@ -318,9 +312,50 @@ export class UniswapV2
|
|
|
318
312
|
);
|
|
319
313
|
pair.pool.addressesSubscribed.push(pair.exchange!);
|
|
320
314
|
|
|
321
|
-
|
|
315
|
+
try {
|
|
316
|
+
await pair.pool.initialize(
|
|
317
|
+
blockNumber,
|
|
318
|
+
/*, {
|
|
322
319
|
state: { reserves0, reserves1, feeCode },
|
|
323
|
-
}
|
|
320
|
+
}
|
|
321
|
+
*/
|
|
322
|
+
);
|
|
323
|
+
return pair.pool;
|
|
324
|
+
} catch (e) {
|
|
325
|
+
this.logger.error(`Error_addPool could not add pool with error:`, e);
|
|
326
|
+
delete pair.pool;
|
|
327
|
+
return null;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
async addPoolGenerateState({
|
|
332
|
+
poolIdentifier,
|
|
333
|
+
blockNumber,
|
|
334
|
+
}: {
|
|
335
|
+
poolIdentifier: string;
|
|
336
|
+
blockNumber: number;
|
|
337
|
+
}): Promise<UniswapV2PoolState | null> {
|
|
338
|
+
// poolIdentifier is in the format of 'uniswapv2_<token0>_<token1>'
|
|
339
|
+
const [, token0, token1] = poolIdentifier.split('_');
|
|
340
|
+
const pair = await this.findPair(
|
|
341
|
+
{ address: token0, decimals: 0 },
|
|
342
|
+
{ address: token1, decimals: 0 },
|
|
343
|
+
);
|
|
344
|
+
if (!(pair && pair.exchange)) return null;
|
|
345
|
+
|
|
346
|
+
const [pairState] = await this.getManyPoolReserves([pair], blockNumber);
|
|
347
|
+
|
|
348
|
+
const pool = await this.addPool(
|
|
349
|
+
pair,
|
|
350
|
+
pairState.reserves0,
|
|
351
|
+
pairState.reserves1,
|
|
352
|
+
pairState.feeCode,
|
|
353
|
+
blockNumber,
|
|
354
|
+
);
|
|
355
|
+
|
|
356
|
+
if (!pool) return null;
|
|
357
|
+
|
|
358
|
+
return pool.getState(blockNumber);
|
|
324
359
|
}
|
|
325
360
|
|
|
326
361
|
async getBuyPrice(
|
|
@@ -479,7 +514,9 @@ export class UniswapV2
|
|
|
479
514
|
pairState.feeCode,
|
|
480
515
|
blockNumber,
|
|
481
516
|
);
|
|
482
|
-
} else
|
|
517
|
+
} else {
|
|
518
|
+
// pair.pool.setState(pairState, blockNumber); // TEMP: temporarily disabled to prevent confusions with new system
|
|
519
|
+
}
|
|
483
520
|
}
|
|
484
521
|
}
|
|
485
522
|
|
|
@@ -525,6 +562,19 @@ export class UniswapV2
|
|
|
525
562
|
};
|
|
526
563
|
}
|
|
527
564
|
|
|
565
|
+
_getPoolIdentifier(_from: Token, _to: Token) {
|
|
566
|
+
const from = this.dexHelper.config.wrapETH(_from);
|
|
567
|
+
const to = this.dexHelper.config.wrapETH(_to);
|
|
568
|
+
|
|
569
|
+
const tokenAddress = [from.address.toLowerCase(), to.address.toLowerCase()]
|
|
570
|
+
.sort((a, b) => (a > b ? 1 : -1))
|
|
571
|
+
.join('_');
|
|
572
|
+
|
|
573
|
+
const poolIdentifier = `${this.dexKey}_${tokenAddress}`;
|
|
574
|
+
|
|
575
|
+
return poolIdentifier.toLowerCase();
|
|
576
|
+
}
|
|
577
|
+
|
|
528
578
|
async getPoolIdentifiers(
|
|
529
579
|
_from: Token,
|
|
530
580
|
_to: Token,
|
|
@@ -4,10 +4,7 @@ import { Interface } from '@ethersproject/abi';
|
|
|
4
4
|
import { ethers } from 'ethers';
|
|
5
5
|
import { assert, DeepReadonly } from 'ts-essentials';
|
|
6
6
|
import { Log, Logger, BlockHeader, Address } from '../../types';
|
|
7
|
-
import {
|
|
8
|
-
InitializeStateOptions,
|
|
9
|
-
StatefulEventSubscriber,
|
|
10
|
-
} from '../../stateful-event-subscriber';
|
|
7
|
+
import { InitializeStateOptions } from '../../stateful-event-subscriber';
|
|
11
8
|
import { IDexHelper } from '../../dex-helper/idex-helper';
|
|
12
9
|
import {
|
|
13
10
|
PoolState,
|
|
@@ -27,8 +24,9 @@ import { TickBitMap } from './contract-math/TickBitMap';
|
|
|
27
24
|
import { uint256ToBigInt } from '../../lib/decoders';
|
|
28
25
|
import { decodeStateMultiCallResultWithRelativeBitmaps } from './utils';
|
|
29
26
|
import { _reduceTickBitmap, _reduceTicks } from './contract-math/utils';
|
|
27
|
+
import { StatefulDualSynchronizer } from '../../stateful-dual-synchronizer';
|
|
30
28
|
|
|
31
|
-
export class UniswapV3EventPool extends
|
|
29
|
+
export class UniswapV3EventPool extends StatefulDualSynchronizer<PoolState> {
|
|
32
30
|
handlers: {
|
|
33
31
|
[event: string]: (
|
|
34
32
|
event: any,
|
|
@@ -79,7 +77,7 @@ export class UniswapV3EventPool extends StatefulEventSubscriber<PoolState> {
|
|
|
79
77
|
poolKey = `${poolKey}_${tickSpacing}`;
|
|
80
78
|
}
|
|
81
79
|
|
|
82
|
-
super(parentName, poolKey, dexHelper, logger
|
|
80
|
+
super(parentName, poolKey, dexHelper, logger);
|
|
83
81
|
this.feeCodeAsString = feeCode.toString();
|
|
84
82
|
this.token0 = token0.toLowerCase();
|
|
85
83
|
this.token1 = token1.toLowerCase();
|