sushi 3.2.4 → 4.0.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/dist/_cjs/calculate/fee.js +2 -2
- package/dist/_cjs/calculate/fee.js.map +1 -1
- package/dist/_cjs/index.js +0 -3
- package/dist/_cjs/index.js.map +1 -1
- package/dist/_cjs/math/functions/get-big-int.js +15 -0
- package/dist/_cjs/math/functions/get-big-int.js.map +1 -0
- package/dist/_cjs/math/functions/index.js +3 -1
- package/dist/_cjs/math/functions/index.js.map +1 -1
- package/dist/_cjs/router/index.js +27 -11
- package/dist/_cjs/router/index.js.map +1 -1
- package/dist/_cjs/router/pool-type.js +14 -0
- package/dist/_cjs/router/pool-type.js.map +1 -0
- package/dist/_cjs/router/route-status.js +10 -0
- package/dist/_cjs/router/route-status.js.map +1 -0
- package/dist/_cjs/router/router-liquidity-source.js +9 -0
- package/dist/_cjs/router/router-liquidity-source.js.map +1 -0
- package/dist/_cjs/validate/index.js +1 -0
- package/dist/_cjs/validate/index.js.map +1 -1
- package/dist/_cjs/{serializer/AddressValidation.js → validate/isAddressFast.js} +1 -1
- package/dist/_cjs/validate/isAddressFast.js.map +1 -0
- package/dist/_esm/calculate/fee.js +1 -1
- package/dist/_esm/calculate/fee.js.map +1 -1
- package/dist/_esm/index.js +0 -3
- package/dist/_esm/index.js.map +1 -1
- package/dist/_esm/math/functions/get-big-int.js +12 -0
- package/dist/_esm/math/functions/get-big-int.js.map +1 -0
- package/dist/_esm/math/functions/index.js +1 -0
- package/dist/_esm/math/functions/index.js.map +1 -1
- package/dist/_esm/router/get-currency-combinations.js +0 -2
- package/dist/_esm/router/get-currency-combinations.js.map +1 -1
- package/dist/_esm/router/index.js +21 -11
- package/dist/_esm/router/index.js.map +1 -1
- package/dist/_esm/router/pool-type.js +11 -0
- package/dist/_esm/router/pool-type.js.map +1 -0
- package/dist/_esm/router/route-status.js +7 -0
- package/dist/_esm/router/route-status.js.map +1 -0
- package/dist/_esm/router/router-liquidity-source.js +6 -0
- package/dist/_esm/router/router-liquidity-source.js.map +1 -0
- package/dist/_esm/validate/index.js +1 -0
- package/dist/_esm/validate/index.js.map +1 -1
- package/dist/_esm/{serializer/AddressValidation.js → validate/isAddressFast.js} +1 -1
- package/dist/_esm/validate/isAddressFast.js.map +1 -0
- package/dist/_types/index.d.ts +0 -3
- package/dist/_types/index.d.ts.map +1 -1
- package/dist/_types/math/functions/get-big-int.d.ts +2 -0
- package/dist/_types/math/functions/get-big-int.d.ts.map +1 -0
- package/dist/_types/math/functions/index.d.ts +1 -0
- package/dist/_types/math/functions/index.d.ts.map +1 -1
- package/dist/_types/router/get-currency-combinations.d.ts +2 -2
- package/dist/_types/router/get-currency-combinations.d.ts.map +1 -1
- package/dist/_types/router/index.d.ts +24 -11
- package/dist/_types/router/index.d.ts.map +1 -1
- package/dist/_types/router/pool-type.d.ts +10 -0
- package/dist/_types/router/pool-type.d.ts.map +1 -0
- package/dist/_types/router/route-status.d.ts +6 -0
- package/dist/_types/router/route-status.d.ts.map +1 -0
- package/dist/_types/router/router-liquidity-source.d.ts +5 -0
- package/dist/_types/router/router-liquidity-source.d.ts.map +1 -0
- package/dist/_types/validate/index.d.ts +1 -0
- package/dist/_types/validate/index.d.ts.map +1 -1
- package/dist/_types/{serializer/AddressValidation.d.ts → validate/isAddressFast.d.ts} +1 -1
- package/dist/_types/validate/isAddressFast.d.ts.map +1 -0
- package/package.json +1 -25
- package/dist/_cjs/pricing/IncrementalPricer.js +0 -375
- package/dist/_cjs/pricing/IncrementalPricer.js.map +0 -1
- package/dist/_cjs/pricing/PoolTokenGraph.js +0 -58
- package/dist/_cjs/pricing/PoolTokenGraph.js.map +0 -1
- package/dist/_cjs/pricing/index.js +0 -18
- package/dist/_cjs/pricing/index.js.map +0 -1
- package/dist/_cjs/router/HEXer.js +0 -112
- package/dist/_cjs/router/HEXer.js.map +0 -1
- package/dist/_cjs/router/PoolBinarySerialization.js +0 -466
- package/dist/_cjs/router/PoolBinarySerialization.js.map +0 -1
- package/dist/_cjs/router/Sankey.AnyChart.js +0 -25
- package/dist/_cjs/router/Sankey.AnyChart.js.map +0 -1
- package/dist/_cjs/router/curve-sdk.js +0 -204
- package/dist/_cjs/router/curve-sdk.js.map +0 -1
- package/dist/_cjs/router/data-fetcher.js +0 -159
- package/dist/_cjs/router/data-fetcher.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/ApeSwap.js +0 -31
- package/dist/_cjs/router/liquidity-providers/ApeSwap.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/Biswap.js +0 -26
- package/dist/_cjs/router/liquidity-providers/Biswap.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/CurvePoolsWhitelist.js +0 -3983
- package/dist/_cjs/router/liquidity-providers/CurvePoolsWhitelist.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/CurveProvider.js +0 -398
- package/dist/_cjs/router/liquidity-providers/CurveProvider.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/CurveProviderWhitelist.js +0 -99
- package/dist/_cjs/router/liquidity-providers/CurveProviderWhitelist.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/Dfyn.js +0 -31
- package/dist/_cjs/router/liquidity-providers/Dfyn.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/DovishV3.js +0 -28
- package/dist/_cjs/router/liquidity-providers/DovishV3.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/Elk.js +0 -47
- package/dist/_cjs/router/liquidity-providers/Elk.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/HoneySwap.js +0 -25
- package/dist/_cjs/router/liquidity-providers/HoneySwap.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/JetSwap.js +0 -29
- package/dist/_cjs/router/liquidity-providers/JetSwap.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/LaserSwap.js +0 -26
- package/dist/_cjs/router/liquidity-providers/LaserSwap.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/LiquidityProvider.js +0 -100
- package/dist/_cjs/router/liquidity-providers/LiquidityProvider.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/NativeWrapProvider.js +0 -46
- package/dist/_cjs/router/liquidity-providers/NativeWrapProvider.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/NetSwap.js +0 -25
- package/dist/_cjs/router/liquidity-providers/NetSwap.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/PancakeSwap.js +0 -28
- package/dist/_cjs/router/liquidity-providers/PancakeSwap.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/QuickSwap.js +0 -25
- package/dist/_cjs/router/liquidity-providers/QuickSwap.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/SpookySwap.js +0 -25
- package/dist/_cjs/router/liquidity-providers/SpookySwap.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/SushiSwapV2.js +0 -20
- package/dist/_cjs/router/liquidity-providers/SushiSwapV2.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/SushiSwapV3.js +0 -106
- package/dist/_cjs/router/liquidity-providers/SushiSwapV3.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/TraderJoe.js +0 -25
- package/dist/_cjs/router/liquidity-providers/TraderJoe.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/UbeSwap.js +0 -25
- package/dist/_cjs/router/liquidity-providers/UbeSwap.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/UniswapV2.js +0 -25
- package/dist/_cjs/router/liquidity-providers/UniswapV2.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/UniswapV2Base.js +0 -112
- package/dist/_cjs/router/liquidity-providers/UniswapV2Base.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/UniswapV3.js +0 -43
- package/dist/_cjs/router/liquidity-providers/UniswapV3.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/UniswapV3Base.js +0 -281
- package/dist/_cjs/router/liquidity-providers/UniswapV3Base.js.map +0 -1
- package/dist/_cjs/router/liquidity-providers/index.js +0 -27
- package/dist/_cjs/router/liquidity-providers/index.js.map +0 -1
- package/dist/_cjs/router/pool-codes/BentoBridge.js +0 -82
- package/dist/_cjs/router/pool-codes/BentoBridge.js.map +0 -1
- package/dist/_cjs/router/pool-codes/BentoPool.js +0 -47
- package/dist/_cjs/router/pool-codes/BentoPool.js.map +0 -1
- package/dist/_cjs/router/pool-codes/Bridge.js +0 -7
- package/dist/_cjs/router/pool-codes/Bridge.js.map +0 -1
- package/dist/_cjs/router/pool-codes/ConstantProductPool.js +0 -42
- package/dist/_cjs/router/pool-codes/ConstantProductPool.js.map +0 -1
- package/dist/_cjs/router/pool-codes/CurvePool.js +0 -43
- package/dist/_cjs/router/pool-codes/CurvePool.js.map +0 -1
- package/dist/_cjs/router/pool-codes/NativeWrapBridge.js +0 -50
- package/dist/_cjs/router/pool-codes/NativeWrapBridge.js.map +0 -1
- package/dist/_cjs/router/pool-codes/PoolCode.js +0 -35
- package/dist/_cjs/router/pool-codes/PoolCode.js.map +0 -1
- package/dist/_cjs/router/pool-codes/TridentCLPool.js +0 -27
- package/dist/_cjs/router/pool-codes/TridentCLPool.js.map +0 -1
- package/dist/_cjs/router/pool-codes/UniV3Pool.js +0 -27
- package/dist/_cjs/router/pool-codes/UniV3Pool.js.map +0 -1
- package/dist/_cjs/router/pool-codes/UniV4Pool.js +0 -40
- package/dist/_cjs/router/pool-codes/UniV4Pool.js.map +0 -1
- package/dist/_cjs/router/pool-codes/index.js +0 -22
- package/dist/_cjs/router/pool-codes/index.js.map +0 -1
- package/dist/_cjs/router/router.js +0 -352
- package/dist/_cjs/router/router.js.map +0 -1
- package/dist/_cjs/router/routingBases.js +0 -55
- package/dist/_cjs/router/routingBases.js.map +0 -1
- package/dist/_cjs/router/tines-to-route-processor-2.js +0 -187
- package/dist/_cjs/router/tines-to-route-processor-2.js.map +0 -1
- package/dist/_cjs/router/tines-to-route-processor-4.js +0 -69
- package/dist/_cjs/router/tines-to-route-processor-4.js.map +0 -1
- package/dist/_cjs/router/tines-to-route-processor-6.js +0 -17
- package/dist/_cjs/router/tines-to-route-processor-6.js.map +0 -1
- package/dist/_cjs/router/tines-to-route-processor.js +0 -192
- package/dist/_cjs/router/tines-to-route-processor.js.map +0 -1
- package/dist/_cjs/serializer/AddressValidation.js.map +0 -1
- package/dist/_cjs/serializer/BinarySerialization.js +0 -256
- package/dist/_cjs/serializer/BinarySerialization.js.map +0 -1
- package/dist/_cjs/serializer/index.js +0 -18
- package/dist/_cjs/serializer/index.js.map +0 -1
- package/dist/_cjs/tines/BridgeBento.js +0 -116
- package/dist/_cjs/tines/BridgeBento.js.map +0 -1
- package/dist/_cjs/tines/BridgeBidirectionalUnlimited.js +0 -26
- package/dist/_cjs/tines/BridgeBidirectionalUnlimited.js.map +0 -1
- package/dist/_cjs/tines/BridgeStargateV04OneWay.js +0 -44
- package/dist/_cjs/tines/BridgeStargateV04OneWay.js.map +0 -1
- package/dist/_cjs/tines/CLPool.js +0 -248
- package/dist/_cjs/tines/CLPool.js.map +0 -1
- package/dist/_cjs/tines/CurveMultitokenPool.js +0 -238
- package/dist/_cjs/tines/CurveMultitokenPool.js.map +0 -1
- package/dist/_cjs/tines/CurveMultitokenPoolSingle.js +0 -195
- package/dist/_cjs/tines/CurveMultitokenPoolSingle.js.map +0 -1
- package/dist/_cjs/tines/CurvePool.js +0 -121
- package/dist/_cjs/tines/CurvePool.js.map +0 -1
- package/dist/_cjs/tines/Graph.js +0 -1187
- package/dist/_cjs/tines/Graph.js.map +0 -1
- package/dist/_cjs/tines/MultiRouter.js +0 -192
- package/dist/_cjs/tines/MultiRouter.js.map +0 -1
- package/dist/_cjs/tines/PrimaryPools.js +0 -147
- package/dist/_cjs/tines/PrimaryPools.js.map +0 -1
- package/dist/_cjs/tines/RPool.js +0 -77
- package/dist/_cjs/tines/RPool.js.map +0 -1
- package/dist/_cjs/tines/StableSwapPool.js +0 -222
- package/dist/_cjs/tines/StableSwapPool.js.map +0 -1
- package/dist/_cjs/tines/StarGateFeesV04.js +0 -113
- package/dist/_cjs/tines/StarGateFeesV04.js.map +0 -1
- package/dist/_cjs/tines/UniV3Pool.js +0 -291
- package/dist/_cjs/tines/UniV3Pool.js.map +0 -1
- package/dist/_cjs/tines/UniV4Pool.js +0 -28
- package/dist/_cjs/tines/UniV4Pool.js.map +0 -1
- package/dist/_cjs/tines/Utils.js +0 -113
- package/dist/_cjs/tines/Utils.js.map +0 -1
- package/dist/_cjs/tines/constants/hybrid.js +0 -5
- package/dist/_cjs/tines/constants/hybrid.js.map +0 -1
- package/dist/_cjs/tines/constants/index.js +0 -18
- package/dist/_cjs/tines/constants/index.js.map +0 -1
- package/dist/_cjs/tines/functions/computeHybridLiquidity.js +0 -25
- package/dist/_cjs/tines/functions/computeHybridLiquidity.js.map +0 -1
- package/dist/_cjs/tines/functions/convertTokenToBento.js +0 -13
- package/dist/_cjs/tines/functions/convertTokenToBento.js.map +0 -1
- package/dist/_cjs/tines/functions/getBentoChainId.js +0 -7
- package/dist/_cjs/tines/functions/getBentoChainId.js.map +0 -1
- package/dist/_cjs/tines/functions/index.js +0 -10
- package/dist/_cjs/tines/functions/index.js.map +0 -1
- package/dist/_cjs/tines/index.js +0 -34
- package/dist/_cjs/tines/index.js.map +0 -1
- package/dist/_esm/pricing/IncrementalPricer.js +0 -430
- package/dist/_esm/pricing/IncrementalPricer.js.map +0 -1
- package/dist/_esm/pricing/PoolTokenGraph.js +0 -56
- package/dist/_esm/pricing/PoolTokenGraph.js.map +0 -1
- package/dist/_esm/pricing/index.js +0 -2
- package/dist/_esm/pricing/index.js.map +0 -1
- package/dist/_esm/router/HEXer.js +0 -110
- package/dist/_esm/router/HEXer.js.map +0 -1
- package/dist/_esm/router/PoolBinarySerialization.js +0 -471
- package/dist/_esm/router/PoolBinarySerialization.js.map +0 -1
- package/dist/_esm/router/Sankey.AnyChart.js +0 -25
- package/dist/_esm/router/Sankey.AnyChart.js.map +0 -1
- package/dist/_esm/router/curve-sdk.js +0 -215
- package/dist/_esm/router/curve-sdk.js.map +0 -1
- package/dist/_esm/router/data-fetcher.js +0 -188
- package/dist/_esm/router/data-fetcher.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/ApeSwap.js +0 -27
- package/dist/_esm/router/liquidity-providers/ApeSwap.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/Biswap.js +0 -22
- package/dist/_esm/router/liquidity-providers/Biswap.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/CurvePoolsWhitelist.js +0 -3980
- package/dist/_esm/router/liquidity-providers/CurvePoolsWhitelist.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/CurveProvider.js +0 -473
- package/dist/_esm/router/liquidity-providers/CurveProvider.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/CurveProviderWhitelist.js +0 -200
- package/dist/_esm/router/liquidity-providers/CurveProviderWhitelist.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/Dfyn.js +0 -27
- package/dist/_esm/router/liquidity-providers/Dfyn.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/DovishV3.js +0 -24
- package/dist/_esm/router/liquidity-providers/DovishV3.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/Elk.js +0 -51
- package/dist/_esm/router/liquidity-providers/Elk.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/HoneySwap.js +0 -21
- package/dist/_esm/router/liquidity-providers/HoneySwap.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/JetSwap.js +0 -25
- package/dist/_esm/router/liquidity-providers/JetSwap.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/LaserSwap.js +0 -22
- package/dist/_esm/router/liquidity-providers/LaserSwap.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/LiquidityProvider.js +0 -106
- package/dist/_esm/router/liquidity-providers/LiquidityProvider.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/NativeWrapProvider.js +0 -42
- package/dist/_esm/router/liquidity-providers/NativeWrapProvider.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/NetSwap.js +0 -21
- package/dist/_esm/router/liquidity-providers/NetSwap.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/PancakeSwap.js +0 -24
- package/dist/_esm/router/liquidity-providers/PancakeSwap.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/QuickSwap.js +0 -21
- package/dist/_esm/router/liquidity-providers/QuickSwap.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/SpookySwap.js +0 -21
- package/dist/_esm/router/liquidity-providers/SpookySwap.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/SushiSwapV2.js +0 -17
- package/dist/_esm/router/liquidity-providers/SushiSwapV2.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/SushiSwapV3.js +0 -102
- package/dist/_esm/router/liquidity-providers/SushiSwapV3.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/TraderJoe.js +0 -21
- package/dist/_esm/router/liquidity-providers/TraderJoe.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/UbeSwap.js +0 -21
- package/dist/_esm/router/liquidity-providers/UbeSwap.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/UniswapV2.js +0 -21
- package/dist/_esm/router/liquidity-providers/UniswapV2.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/UniswapV2Base.js +0 -112
- package/dist/_esm/router/liquidity-providers/UniswapV2Base.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/UniswapV3.js +0 -39
- package/dist/_esm/router/liquidity-providers/UniswapV3.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/UniswapV3Base.js +0 -286
- package/dist/_esm/router/liquidity-providers/UniswapV3Base.js.map +0 -1
- package/dist/_esm/router/liquidity-providers/index.js +0 -9
- package/dist/_esm/router/liquidity-providers/index.js.map +0 -1
- package/dist/_esm/router/pool-codes/BentoBridge.js +0 -86
- package/dist/_esm/router/pool-codes/BentoBridge.js.map +0 -1
- package/dist/_esm/router/pool-codes/BentoPool.js +0 -48
- package/dist/_esm/router/pool-codes/BentoPool.js.map +0 -1
- package/dist/_esm/router/pool-codes/Bridge.js +0 -4
- package/dist/_esm/router/pool-codes/Bridge.js.map +0 -1
- package/dist/_esm/router/pool-codes/ConstantProductPool.js +0 -41
- package/dist/_esm/router/pool-codes/ConstantProductPool.js.map +0 -1
- package/dist/_esm/router/pool-codes/CurvePool.js +0 -41
- package/dist/_esm/router/pool-codes/CurvePool.js.map +0 -1
- package/dist/_esm/router/pool-codes/NativeWrapBridge.js +0 -52
- package/dist/_esm/router/pool-codes/NativeWrapBridge.js.map +0 -1
- package/dist/_esm/router/pool-codes/PoolCode.js +0 -36
- package/dist/_esm/router/pool-codes/PoolCode.js.map +0 -1
- package/dist/_esm/router/pool-codes/TridentCLPool.js +0 -25
- package/dist/_esm/router/pool-codes/TridentCLPool.js.map +0 -1
- package/dist/_esm/router/pool-codes/UniV3Pool.js +0 -25
- package/dist/_esm/router/pool-codes/UniV3Pool.js.map +0 -1
- package/dist/_esm/router/pool-codes/UniV4Pool.js +0 -37
- package/dist/_esm/router/pool-codes/UniV4Pool.js.map +0 -1
- package/dist/_esm/router/pool-codes/index.js +0 -10
- package/dist/_esm/router/pool-codes/index.js.map +0 -1
- package/dist/_esm/router/router.js +0 -351
- package/dist/_esm/router/router.js.map +0 -1
- package/dist/_esm/router/routingBases.js +0 -50
- package/dist/_esm/router/routingBases.js.map +0 -1
- package/dist/_esm/router/tines-to-route-processor-2.js +0 -189
- package/dist/_esm/router/tines-to-route-processor-2.js.map +0 -1
- package/dist/_esm/router/tines-to-route-processor-4.js +0 -75
- package/dist/_esm/router/tines-to-route-processor-4.js.map +0 -1
- package/dist/_esm/router/tines-to-route-processor-6.js +0 -14
- package/dist/_esm/router/tines-to-route-processor-6.js.map +0 -1
- package/dist/_esm/router/tines-to-route-processor.js +0 -200
- package/dist/_esm/router/tines-to-route-processor.js.map +0 -1
- package/dist/_esm/serializer/AddressValidation.js.map +0 -1
- package/dist/_esm/serializer/BinarySerialization.js +0 -270
- package/dist/_esm/serializer/BinarySerialization.js.map +0 -1
- package/dist/_esm/serializer/index.js +0 -2
- package/dist/_esm/serializer/index.js.map +0 -1
- package/dist/_esm/tines/BridgeBento.js +0 -116
- package/dist/_esm/tines/BridgeBento.js.map +0 -1
- package/dist/_esm/tines/BridgeBidirectionalUnlimited.js +0 -22
- package/dist/_esm/tines/BridgeBidirectionalUnlimited.js.map +0 -1
- package/dist/_esm/tines/BridgeStargateV04OneWay.js +0 -43
- package/dist/_esm/tines/BridgeStargateV04OneWay.js.map +0 -1
- package/dist/_esm/tines/CLPool.js +0 -265
- package/dist/_esm/tines/CLPool.js.map +0 -1
- package/dist/_esm/tines/CurveMultitokenPool.js +0 -268
- package/dist/_esm/tines/CurveMultitokenPool.js.map +0 -1
- package/dist/_esm/tines/CurveMultitokenPoolSingle.js +0 -194
- package/dist/_esm/tines/CurveMultitokenPoolSingle.js.map +0 -1
- package/dist/_esm/tines/CurvePool.js +0 -120
- package/dist/_esm/tines/CurvePool.js.map +0 -1
- package/dist/_esm/tines/Graph.js +0 -1324
- package/dist/_esm/tines/Graph.js.map +0 -1
- package/dist/_esm/tines/MultiRouter.js +0 -191
- package/dist/_esm/tines/MultiRouter.js.map +0 -1
- package/dist/_esm/tines/PrimaryPools.js +0 -166
- package/dist/_esm/tines/PrimaryPools.js.map +0 -1
- package/dist/_esm/tines/RPool.js +0 -80
- package/dist/_esm/tines/RPool.js.map +0 -1
- package/dist/_esm/tines/StableSwapPool.js +0 -221
- package/dist/_esm/tines/StableSwapPool.js.map +0 -1
- package/dist/_esm/tines/StarGateFeesV04.js +0 -135
- package/dist/_esm/tines/StarGateFeesV04.js.map +0 -1
- package/dist/_esm/tines/UniV3Pool.js +0 -325
- package/dist/_esm/tines/UniV3Pool.js.map +0 -1
- package/dist/_esm/tines/UniV4Pool.js +0 -40
- package/dist/_esm/tines/UniV4Pool.js.map +0 -1
- package/dist/_esm/tines/Utils.js +0 -108
- package/dist/_esm/tines/Utils.js.map +0 -1
- package/dist/_esm/tines/constants/hybrid.js +0 -2
- package/dist/_esm/tines/constants/hybrid.js.map +0 -1
- package/dist/_esm/tines/constants/index.js +0 -2
- package/dist/_esm/tines/constants/index.js.map +0 -1
- package/dist/_esm/tines/functions/computeHybridLiquidity.js +0 -22
- package/dist/_esm/tines/functions/computeHybridLiquidity.js.map +0 -1
- package/dist/_esm/tines/functions/convertTokenToBento.js +0 -11
- package/dist/_esm/tines/functions/convertTokenToBento.js.map +0 -1
- package/dist/_esm/tines/functions/getBentoChainId.js +0 -4
- package/dist/_esm/tines/functions/getBentoChainId.js.map +0 -1
- package/dist/_esm/tines/functions/index.js +0 -4
- package/dist/_esm/tines/functions/index.js.map +0 -1
- package/dist/_esm/tines/index.js +0 -18
- package/dist/_esm/tines/index.js.map +0 -1
- package/dist/_types/pricing/IncrementalPricer.d.ts +0 -48
- package/dist/_types/pricing/IncrementalPricer.d.ts.map +0 -1
- package/dist/_types/pricing/PoolTokenGraph.d.ts +0 -22
- package/dist/_types/pricing/PoolTokenGraph.d.ts.map +0 -1
- package/dist/_types/pricing/index.d.ts +0 -2
- package/dist/_types/pricing/index.d.ts.map +0 -1
- package/dist/_types/router/HEXer.d.ts +0 -20
- package/dist/_types/router/HEXer.d.ts.map +0 -1
- package/dist/_types/router/PoolBinarySerialization.d.ts +0 -11
- package/dist/_types/router/PoolBinarySerialization.d.ts.map +0 -1
- package/dist/_types/router/Sankey.AnyChart.d.ts +0 -7
- package/dist/_types/router/Sankey.AnyChart.d.ts.map +0 -1
- package/dist/_types/router/curve-sdk.d.ts +0 -214
- package/dist/_types/router/curve-sdk.d.ts.map +0 -1
- package/dist/_types/router/data-fetcher.d.ts +0 -24
- package/dist/_types/router/data-fetcher.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/ApeSwap.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/ApeSwap.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/Biswap.d.ts +0 -11
- package/dist/_types/router/liquidity-providers/Biswap.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/CurvePoolsWhitelist.d.ts +0 -12
- package/dist/_types/router/liquidity-providers/CurvePoolsWhitelist.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/CurveProvider.d.ts +0 -41
- package/dist/_types/router/liquidity-providers/CurveProvider.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/CurveProviderWhitelist.d.ts +0 -40
- package/dist/_types/router/liquidity-providers/CurveProviderWhitelist.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/Dfyn.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/Dfyn.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/DovishV3.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/DovishV3.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/Elk.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/Elk.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/HoneySwap.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/HoneySwap.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/JetSwap.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/JetSwap.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/LaserSwap.d.ts +0 -11
- package/dist/_types/router/liquidity-providers/LaserSwap.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/LiquidityProvider.d.ts +0 -123
- package/dist/_types/router/liquidity-providers/LiquidityProvider.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/NativeWrapProvider.d.ts +0 -15
- package/dist/_types/router/liquidity-providers/NativeWrapProvider.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/NetSwap.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/NetSwap.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/PancakeSwap.d.ts +0 -11
- package/dist/_types/router/liquidity-providers/PancakeSwap.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/QuickSwap.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/QuickSwap.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/SpookySwap.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/SpookySwap.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/SushiSwapV2.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/SushiSwapV2.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/SushiSwapV3.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/SushiSwapV3.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/TraderJoe.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/TraderJoe.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/UbeSwap.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/UbeSwap.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/UniswapV2.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/UniswapV2.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/UniswapV2Base.d.ts +0 -29
- package/dist/_types/router/liquidity-providers/UniswapV2Base.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/UniswapV3.d.ts +0 -10
- package/dist/_types/router/liquidity-providers/UniswapV3.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/UniswapV3Base.d.ts +0 -32
- package/dist/_types/router/liquidity-providers/UniswapV3Base.d.ts.map +0 -1
- package/dist/_types/router/liquidity-providers/index.d.ts +0 -9
- package/dist/_types/router/liquidity-providers/index.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/BentoBridge.d.ts +0 -11
- package/dist/_types/router/pool-codes/BentoBridge.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/BentoPool.d.ts +0 -9
- package/dist/_types/router/pool-codes/BentoPool.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/Bridge.d.ts +0 -5
- package/dist/_types/router/pool-codes/Bridge.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/ConstantProductPool.d.ts +0 -10
- package/dist/_types/router/pool-codes/ConstantProductPool.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/CurvePool.d.ts +0 -13
- package/dist/_types/router/pool-codes/CurvePool.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/NativeWrapBridge.d.ts +0 -10
- package/dist/_types/router/pool-codes/NativeWrapBridge.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/PoolCode.d.ts +0 -24
- package/dist/_types/router/pool-codes/PoolCode.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/TridentCLPool.d.ts +0 -10
- package/dist/_types/router/pool-codes/TridentCLPool.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/UniV3Pool.d.ts +0 -10
- package/dist/_types/router/pool-codes/UniV3Pool.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/UniV4Pool.d.ts +0 -13
- package/dist/_types/router/pool-codes/UniV4Pool.d.ts.map +0 -1
- package/dist/_types/router/pool-codes/index.d.ts +0 -10
- package/dist/_types/router/pool-codes/index.d.ts.map +0 -1
- package/dist/_types/router/router.d.ts +0 -68
- package/dist/_types/router/router.d.ts.map +0 -1
- package/dist/_types/router/routingBases.d.ts +0 -8
- package/dist/_types/router/routingBases.d.ts.map +0 -1
- package/dist/_types/router/tines-to-route-processor-2.d.ts +0 -41
- package/dist/_types/router/tines-to-route-processor-2.d.ts.map +0 -1
- package/dist/_types/router/tines-to-route-processor-4.d.ts +0 -12
- package/dist/_types/router/tines-to-route-processor-4.d.ts.map +0 -1
- package/dist/_types/router/tines-to-route-processor-6.d.ts +0 -5
- package/dist/_types/router/tines-to-route-processor-6.d.ts.map +0 -1
- package/dist/_types/router/tines-to-route-processor.d.ts +0 -21
- package/dist/_types/router/tines-to-route-processor.d.ts.map +0 -1
- package/dist/_types/serializer/AddressValidation.d.ts.map +0 -1
- package/dist/_types/serializer/BinarySerialization.d.ts +0 -43
- package/dist/_types/serializer/BinarySerialization.d.ts.map +0 -1
- package/dist/_types/serializer/index.d.ts +0 -2
- package/dist/_types/serializer/index.d.ts.map +0 -1
- package/dist/_types/tines/BridgeBento.d.ts +0 -21
- package/dist/_types/tines/BridgeBento.d.ts.map +0 -1
- package/dist/_types/tines/BridgeBidirectionalUnlimited.d.ts +0 -16
- package/dist/_types/tines/BridgeBidirectionalUnlimited.d.ts.map +0 -1
- package/dist/_types/tines/BridgeStargateV04OneWay.d.ts +0 -23
- package/dist/_types/tines/BridgeStargateV04OneWay.d.ts.map +0 -1
- package/dist/_types/tines/CLPool.d.ts +0 -27
- package/dist/_types/tines/CLPool.d.ts.map +0 -1
- package/dist/_types/tines/CurveMultitokenPool.d.ts +0 -58
- package/dist/_types/tines/CurveMultitokenPool.d.ts.map +0 -1
- package/dist/_types/tines/CurveMultitokenPoolSingle.d.ts +0 -54
- package/dist/_types/tines/CurveMultitokenPoolSingle.d.ts.map +0 -1
- package/dist/_types/tines/CurvePool.d.ts +0 -28
- package/dist/_types/tines/CurvePool.d.ts.map +0 -1
- package/dist/_types/tines/Graph.d.ts +0 -135
- package/dist/_types/tines/Graph.d.ts.map +0 -1
- package/dist/_types/tines/MultiRouter.d.ts +0 -11
- package/dist/_types/tines/MultiRouter.d.ts.map +0 -1
- package/dist/_types/tines/PrimaryPools.d.ts +0 -44
- package/dist/_types/tines/PrimaryPools.d.ts.map +0 -1
- package/dist/_types/tines/RPool.d.ts +0 -54
- package/dist/_types/tines/RPool.d.ts.map +0 -1
- package/dist/_types/tines/StableSwapPool.d.ts +0 -50
- package/dist/_types/tines/StableSwapPool.d.ts.map +0 -1
- package/dist/_types/tines/StarGateFeesV04.d.ts +0 -16
- package/dist/_types/tines/StarGateFeesV04.d.ts.map +0 -1
- package/dist/_types/tines/UniV3Pool.d.ts +0 -25
- package/dist/_types/tines/UniV3Pool.d.ts.map +0 -1
- package/dist/_types/tines/UniV4Pool.d.ts +0 -13
- package/dist/_types/tines/UniV4Pool.d.ts.map +0 -1
- package/dist/_types/tines/Utils.d.ts +0 -9
- package/dist/_types/tines/Utils.d.ts.map +0 -1
- package/dist/_types/tines/constants/hybrid.d.ts +0 -2
- package/dist/_types/tines/constants/hybrid.d.ts.map +0 -1
- package/dist/_types/tines/constants/index.d.ts +0 -2
- package/dist/_types/tines/constants/index.d.ts.map +0 -1
- package/dist/_types/tines/functions/computeHybridLiquidity.d.ts +0 -2
- package/dist/_types/tines/functions/computeHybridLiquidity.d.ts.map +0 -1
- package/dist/_types/tines/functions/convertTokenToBento.d.ts +0 -4
- package/dist/_types/tines/functions/convertTokenToBento.d.ts.map +0 -1
- package/dist/_types/tines/functions/getBentoChainId.d.ts +0 -2
- package/dist/_types/tines/functions/getBentoChainId.d.ts.map +0 -1
- package/dist/_types/tines/functions/index.d.ts +0 -4
- package/dist/_types/tines/functions/index.d.ts.map +0 -1
- package/dist/_types/tines/index.d.ts +0 -18
- package/dist/_types/tines/index.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sushi",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Sushi",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sushi"
|
|
@@ -112,31 +112,16 @@
|
|
|
112
112
|
"import": "./dist/_esm/pool/*/index.js",
|
|
113
113
|
"default": "./dist/_cjs/pool/*/index.js"
|
|
114
114
|
},
|
|
115
|
-
"./pricing": {
|
|
116
|
-
"types": "./dist/_types/pricing/index.d.ts",
|
|
117
|
-
"import": "./dist/_esm/pricing/index.js",
|
|
118
|
-
"default": "./dist/_cjs/pricing/index.js"
|
|
119
|
-
},
|
|
120
115
|
"./router": {
|
|
121
116
|
"types": "./dist/_types/router/index.d.ts",
|
|
122
117
|
"import": "./dist/_esm/router/index.js",
|
|
123
118
|
"default": "./dist/_cjs/router/index.js"
|
|
124
119
|
},
|
|
125
|
-
"./serializer": {
|
|
126
|
-
"types": "./dist/_types/serializer/index.d.ts",
|
|
127
|
-
"import": "./dist/_esm/serializer/index.js",
|
|
128
|
-
"default": "./dist/_cjs/serializer/index.js"
|
|
129
|
-
},
|
|
130
120
|
"./sort": {
|
|
131
121
|
"types": "./dist/_types/sort/index.d.ts",
|
|
132
122
|
"import": "./dist/_esm/sort/index.js",
|
|
133
123
|
"default": "./dist/_cjs/sort/index.js"
|
|
134
124
|
},
|
|
135
|
-
"./tines": {
|
|
136
|
-
"types": "./dist/_types/tines/index.d.ts",
|
|
137
|
-
"import": "./dist/_esm/tines/index.js",
|
|
138
|
-
"default": "./dist/_cjs/tines/index.js"
|
|
139
|
-
},
|
|
140
125
|
"./token-list": {
|
|
141
126
|
"types": "./dist/_types/token-list/index.d.ts",
|
|
142
127
|
"import": "./dist/_esm/token-list/index.js",
|
|
@@ -207,21 +192,12 @@
|
|
|
207
192
|
"pool": [
|
|
208
193
|
"./dist/_types/pool/index.d.ts"
|
|
209
194
|
],
|
|
210
|
-
"pricing": [
|
|
211
|
-
"./dist/_types/pricing/index.d.ts"
|
|
212
|
-
],
|
|
213
195
|
"router": [
|
|
214
196
|
"./dist/_types/router/index.d.ts"
|
|
215
197
|
],
|
|
216
|
-
"serializer": [
|
|
217
|
-
"./dist/_types/serializer/index.d.ts"
|
|
218
|
-
],
|
|
219
198
|
"sort": [
|
|
220
199
|
"./dist/_types/sort/index.d.ts"
|
|
221
200
|
],
|
|
222
|
-
"tines": [
|
|
223
|
-
"./dist/_types/tines/index.d.ts"
|
|
224
|
-
],
|
|
225
201
|
"token-list": [
|
|
226
202
|
"./dist/_types/token-list/index.d.ts"
|
|
227
203
|
],
|
|
@@ -1,375 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IncrementalPricer = void 0;
|
|
4
|
-
exports.compareCommonPrices = compareCommonPrices;
|
|
5
|
-
const index_js_1 = require("../tines/index.js");
|
|
6
|
-
const PoolTokenGraph_js_1 = require("./PoolTokenGraph.js");
|
|
7
|
-
const DEBUG_COMPARE_FULL_RECALC_WITH_TINES_PRICES = false;
|
|
8
|
-
const DEBUG_PARTIAL_UPDATE_AFTER_FULL_RECALC_CHECK = 0;
|
|
9
|
-
const DEBUG_COMPARE_PARTIAL_UPDATE_WITH_TINES_PRICES = false;
|
|
10
|
-
const FULL_RECALC_INTERVAL = 6 * 3600 * 1000;
|
|
11
|
-
const MIN_PRICABLE_LIQUIDITY = 0.8;
|
|
12
|
-
const MIN_VALUABLE_PRICE_CHANGE = 1.001;
|
|
13
|
-
function makePricesRecalcForPool(oldPoolPrice, newPoolPrice, sensability = MIN_VALUABLE_PRICE_CHANGE) {
|
|
14
|
-
if (oldPoolPrice === 0)
|
|
15
|
-
return newPoolPrice !== 0;
|
|
16
|
-
const diff = newPoolPrice / oldPoolPrice;
|
|
17
|
-
return diff > sensability || diff < 1 / sensability;
|
|
18
|
-
}
|
|
19
|
-
class TokenInfo {
|
|
20
|
-
constructor(token, direction, poolPrice, parent, poolAddress, poolLiquidity) {
|
|
21
|
-
this.children = [];
|
|
22
|
-
this.totalSuccessors = 0;
|
|
23
|
-
this.token = token;
|
|
24
|
-
this.address = token.address;
|
|
25
|
-
this.decExp = 10 ** token.decimals;
|
|
26
|
-
this.direction = direction;
|
|
27
|
-
this.poolPrice = poolPrice;
|
|
28
|
-
this.parent = parent;
|
|
29
|
-
if (parent)
|
|
30
|
-
parent.children.push(this);
|
|
31
|
-
this.poolAddress = poolAddress;
|
|
32
|
-
this.poolLiquidity = poolLiquidity;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
class IncrementalPricer {
|
|
36
|
-
constructor(baseTokens, prices, trustedTokens, minLiquidity) {
|
|
37
|
-
this.poolTokenMap = new Map();
|
|
38
|
-
this.tokenMap = new Map();
|
|
39
|
-
this.prices = {};
|
|
40
|
-
this.pricesSize = 0;
|
|
41
|
-
this.lastfullPricesRecalcDate = 0;
|
|
42
|
-
this.fullPricesRecalcFlag = false;
|
|
43
|
-
this.baseTokens = new Array(baseTokens.length);
|
|
44
|
-
this.baseTokenPrices = prices.slice();
|
|
45
|
-
baseTokens.forEach((t, i) => {
|
|
46
|
-
this.baseTokens[i] = new TokenInfo(t, true, 1);
|
|
47
|
-
});
|
|
48
|
-
this.trustedTokenSet = new Set();
|
|
49
|
-
const trustedTokenMap = new Map();
|
|
50
|
-
trustedTokens.forEach((t) => {
|
|
51
|
-
this.trustedTokenSet.add(t.address);
|
|
52
|
-
trustedTokenMap.set(t.address, t);
|
|
53
|
-
});
|
|
54
|
-
baseTokens.forEach((t) => {
|
|
55
|
-
this.trustedTokenSet.add(t.address);
|
|
56
|
-
trustedTokenMap.set(t.address, t);
|
|
57
|
-
});
|
|
58
|
-
this.trustedTokensForTinesCheck = Array.from(trustedTokenMap.values());
|
|
59
|
-
this.minLiquidity = minLiquidity;
|
|
60
|
-
}
|
|
61
|
-
updatePrices(updatedPools, allPoolsOnDemand, logging = false) {
|
|
62
|
-
if (this.isFullPricesRecalcNeeded())
|
|
63
|
-
return this._fullPricesRecalculation(allPoolsOnDemand(), logging);
|
|
64
|
-
else {
|
|
65
|
-
const res = this._updatePricesForPools(updatedPools, DEBUG_COMPARE_PARTIAL_UPDATE_WITH_TINES_PRICES ? 0.9 : undefined);
|
|
66
|
-
if (DEBUG_COMPARE_PARTIAL_UPDATE_WITH_TINES_PRICES) {
|
|
67
|
-
const baseToken = this.baseTokens.find((b) => this.prices[b.address] === 1);
|
|
68
|
-
checkNotEqual(baseToken, undefined, 'Prices partial upd error: no basetoken found');
|
|
69
|
-
const tinesPrices = (0, index_js_1.calcTokenAddressPrices)(allPoolsOnDemand(), baseToken.token, this.minLiquidity * baseToken.decExp, this.trustedTokensForTinesCheck);
|
|
70
|
-
comparePrices('Prices partial upd', this.prices, this.pricesSize, tinesPrices);
|
|
71
|
-
}
|
|
72
|
-
return res;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
reasoning(token) {
|
|
76
|
-
let ti = this.tokenMap.get(token);
|
|
77
|
-
if (ti === undefined)
|
|
78
|
-
return ['Token is not priced'];
|
|
79
|
-
const lines = [];
|
|
80
|
-
while (ti !== undefined) {
|
|
81
|
-
const parentDecExp = ti.parent?.decExp ?? ti.decExp;
|
|
82
|
-
lines.push(`Token ${ti.token.symbol} (${ti.address}) price is ${this.prices[ti.address]}$`);
|
|
83
|
-
if (ti.poolAddress !== undefined) {
|
|
84
|
-
lines.push(`Pool ${ti.poolAddress} liquidity ${Math.round(ti.poolLiquidity ?? 0)}$ price ${(ti.poolPrice / parentDecExp) * ti.decExp}`);
|
|
85
|
-
}
|
|
86
|
-
ti = ti.parent;
|
|
87
|
-
}
|
|
88
|
-
return lines.reverse();
|
|
89
|
-
}
|
|
90
|
-
isFullPricesRecalcNeeded() {
|
|
91
|
-
return (this.fullPricesRecalcFlag ||
|
|
92
|
-
Date.now() - this.lastfullPricesRecalcDate > FULL_RECALC_INTERVAL);
|
|
93
|
-
}
|
|
94
|
-
_fullPricesRecalculation(pools, logging = false) {
|
|
95
|
-
this.poolTokenMap.clear();
|
|
96
|
-
this.tokenMap.clear();
|
|
97
|
-
this.prices = {};
|
|
98
|
-
this.pricesSize = 0;
|
|
99
|
-
const baseVerts = (0, PoolTokenGraph_js_1.makePoolTokenGraph)(pools, this.baseTokens.map((t) => t.address));
|
|
100
|
-
const sortedBaseVerts = this._sortBaseVerts(baseVerts);
|
|
101
|
-
sortedBaseVerts.forEach(([baseVert, baseIndex], i) => {
|
|
102
|
-
if (this.prices[baseVert.address] !== undefined)
|
|
103
|
-
return;
|
|
104
|
-
const baseToken = this.baseTokens[baseIndex];
|
|
105
|
-
const baseTokenPrice = this.baseTokenPrices[baseIndex];
|
|
106
|
-
const nextEdges = [];
|
|
107
|
-
if (logging)
|
|
108
|
-
console.log(`Pricing: Initial token ${baseVert.token.symbol} price=${baseTokenPrice}`);
|
|
109
|
-
baseVert.obj = baseToken;
|
|
110
|
-
this._addVertice(nextEdges, baseVert, baseTokenPrice / baseVert.decExp);
|
|
111
|
-
while (nextEdges.length > 0) {
|
|
112
|
-
const bestEdge = nextEdges.pop();
|
|
113
|
-
let vFrom = bestEdge.token0;
|
|
114
|
-
let vTo = bestEdge.token1;
|
|
115
|
-
let direction = true;
|
|
116
|
-
if (vTo.price !== undefined) {
|
|
117
|
-
if (vFrom.price !== undefined)
|
|
118
|
-
continue;
|
|
119
|
-
const tmp = vFrom;
|
|
120
|
-
vFrom = vTo;
|
|
121
|
-
vTo = tmp;
|
|
122
|
-
direction = false;
|
|
123
|
-
}
|
|
124
|
-
const p = bestEdge.pool.calcCurrentPriceWithoutFee(!direction);
|
|
125
|
-
if (logging)
|
|
126
|
-
console.log(`Pricing: + Token ${vTo.token.symbol} price=${p * vTo.decExp * vFrom.price}` +
|
|
127
|
-
` from ${vFrom.token.symbol} pool=${bestEdge.pool.address} liquidity=${bestEdge.poolLiquidity}`);
|
|
128
|
-
vTo.obj = new TokenInfo(vTo.token, direction, p, vFrom.obj, bestEdge.pool.address, bestEdge.poolLiquidity);
|
|
129
|
-
this.poolTokenMap.set(bestEdge.pool.uniqueID(), vTo.obj);
|
|
130
|
-
this._addVertice(nextEdges, vTo, p * vFrom.price);
|
|
131
|
-
}
|
|
132
|
-
this._updateTotalSuccessor(baseToken);
|
|
133
|
-
this.lastfullPricesRecalcDate = Date.now();
|
|
134
|
-
this.fullPricesRecalcFlag = false;
|
|
135
|
-
if (DEBUG_COMPARE_FULL_RECALC_WITH_TINES_PRICES && i === 0) {
|
|
136
|
-
const tinesPrices = (0, index_js_1.calcTokenAddressPrices)(pools, baseToken.token, this.minLiquidity * baseToken.decExp, this.trustedTokensForTinesCheck);
|
|
137
|
-
comparePrices('Prices full recalc', this.prices, this.pricesSize, tinesPrices);
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
if (DEBUG_PARTIAL_UPDATE_AFTER_FULL_RECALC_CHECK) {
|
|
141
|
-
const pricesBefore = { ...this.prices };
|
|
142
|
-
const pricesSizeBefore = this.pricesSize;
|
|
143
|
-
const pn = Math.round((pools.length * DEBUG_PARTIAL_UPDATE_AFTER_FULL_RECALC_CHECK) / 100);
|
|
144
|
-
const newPools = pools.slice(0, pn);
|
|
145
|
-
const updatePrices = this._updatePricesForPools(newPools, 0.9);
|
|
146
|
-
checkNotEqual(updatePrices, 0, 'Prices upd check error');
|
|
147
|
-
checkEqual(pricesSizeBefore, this.pricesSize);
|
|
148
|
-
comparePrices('Prices upd', pricesBefore, pricesSizeBefore, this.prices);
|
|
149
|
-
this.prices = pricesBefore;
|
|
150
|
-
this.pricesSize = pricesSizeBefore;
|
|
151
|
-
}
|
|
152
|
-
return this.pricesSize;
|
|
153
|
-
}
|
|
154
|
-
_sortBaseVerts(baseVerts) {
|
|
155
|
-
const tmp = baseVerts
|
|
156
|
-
.map((b, i) => {
|
|
157
|
-
if (b === undefined)
|
|
158
|
-
return;
|
|
159
|
-
const price = this.baseTokenPrices[i];
|
|
160
|
-
const reserve = b.pools.reduce((a, p) => a + price * Number(p.reserve(b)), 0);
|
|
161
|
-
const decExp = this.baseTokens[i]?.decExp;
|
|
162
|
-
return [(reserve * price) / decExp, [b, i]];
|
|
163
|
-
})
|
|
164
|
-
.filter((p) => p !== undefined);
|
|
165
|
-
return tmp.sort((a, b) => b[0] - a[0]).map((a) => a[1]);
|
|
166
|
-
}
|
|
167
|
-
_updateTotalSuccessor(token) {
|
|
168
|
-
let count = 0;
|
|
169
|
-
for (let i = token.children.length - 1; i >= 0; --i)
|
|
170
|
-
count += this._updateTotalSuccessor(token.children[i]);
|
|
171
|
-
token.totalSuccessors = count;
|
|
172
|
-
return count + 1;
|
|
173
|
-
}
|
|
174
|
-
_addVertice(nextEdges, v, price) {
|
|
175
|
-
v.price = price;
|
|
176
|
-
this.tokenMap.set(v.address, v.obj);
|
|
177
|
-
this.prices[v.address] = price * v.decExp;
|
|
178
|
-
++this.pricesSize;
|
|
179
|
-
if (!this.trustedTokenSet.has(v.address))
|
|
180
|
-
return;
|
|
181
|
-
for (let i = v.pools.length - 1; i >= 0; --i) {
|
|
182
|
-
const edge = v.pools[i];
|
|
183
|
-
if (v.getNeibour(edge).price !== undefined)
|
|
184
|
-
continue;
|
|
185
|
-
const liquidity = price * Number(edge.reserve(v));
|
|
186
|
-
edge.poolLiquidity = liquidity;
|
|
187
|
-
if (edge.pool.alwaysAppropriateForPricing() ||
|
|
188
|
-
(liquidity >= this.minLiquidity &&
|
|
189
|
-
edge.pool.isPoolAppropriateForPricing())) {
|
|
190
|
-
let low = 0;
|
|
191
|
-
let up = nextEdges.length;
|
|
192
|
-
while (low < up) {
|
|
193
|
-
const middle = (low + up) >> 1;
|
|
194
|
-
const diff = nextEdges[middle]?.poolLiquidity - liquidity;
|
|
195
|
-
if (diff > 0)
|
|
196
|
-
up = middle;
|
|
197
|
-
else if (diff < 0)
|
|
198
|
-
low = middle + 1;
|
|
199
|
-
else {
|
|
200
|
-
low = middle;
|
|
201
|
-
break;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
nextEdges.splice(low, 0, edge);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
_updatePricesForPools(pools, sensability = MIN_VALUABLE_PRICE_CHANGE) {
|
|
209
|
-
const tokens = new Array(pools.length);
|
|
210
|
-
let changedPrices = 0;
|
|
211
|
-
for (let i = pools.length - 1; i >= 0; --i) {
|
|
212
|
-
const pool = pools[i];
|
|
213
|
-
tokens[i] = undefined;
|
|
214
|
-
const token = this.poolTokenMap.get(pool.uniqueID());
|
|
215
|
-
if (token) {
|
|
216
|
-
if (!this._isPoolStillPricable(pool, token)) {
|
|
217
|
-
if (token.totalSuccessors === 0) {
|
|
218
|
-
this._deleteChildlessToken(pool, token);
|
|
219
|
-
continue;
|
|
220
|
-
}
|
|
221
|
-
this.fullPricesRecalcFlag = true;
|
|
222
|
-
}
|
|
223
|
-
if (token.changedPoolIndex === undefined) {
|
|
224
|
-
const newPoolPrice = pool.calcCurrentPriceWithoutFee(!token.direction);
|
|
225
|
-
if (makePricesRecalcForPool(token.poolPrice, newPoolPrice, sensability)) {
|
|
226
|
-
tokens[i] = token;
|
|
227
|
-
token.changedPoolIndex = i;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
else if (this._checkAndAddNewToken(pool) !== undefined) {
|
|
232
|
-
++changedPrices;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
for (let i = pools.length - 1; i >= 0; --i) {
|
|
236
|
-
if (tokens[i] === undefined)
|
|
237
|
-
continue;
|
|
238
|
-
let firstChangedToken = undefined;
|
|
239
|
-
for (let token = tokens[i]; token !== undefined; token = token.parent) {
|
|
240
|
-
if (token?.changedPoolIndex !== undefined)
|
|
241
|
-
firstChangedToken = token;
|
|
242
|
-
}
|
|
243
|
-
if (firstChangedToken) {
|
|
244
|
-
this._updatePricesForToken(firstChangedToken, 1, pools, tokens);
|
|
245
|
-
changedPrices += firstChangedToken.totalSuccessors + 1;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
return changedPrices;
|
|
249
|
-
}
|
|
250
|
-
_updatePricesForToken(token, priceMultiplicator, pools, tokens) {
|
|
251
|
-
const poolIndex = token.changedPoolIndex;
|
|
252
|
-
if (poolIndex !== undefined) {
|
|
253
|
-
const newPoolPrice = pools[poolIndex]?.calcCurrentPriceWithoutFee(!token.direction);
|
|
254
|
-
priceMultiplicator = (priceMultiplicator / token.poolPrice) * newPoolPrice;
|
|
255
|
-
tokens[poolIndex] = undefined;
|
|
256
|
-
token.changedPoolIndex = undefined;
|
|
257
|
-
token.poolPrice = newPoolPrice;
|
|
258
|
-
}
|
|
259
|
-
this.prices[token.address] *= priceMultiplicator;
|
|
260
|
-
for (let i = token.children.length - 1; i >= 0; --i)
|
|
261
|
-
this._updatePricesForToken(token.children[i], priceMultiplicator, pools, tokens);
|
|
262
|
-
}
|
|
263
|
-
_isPoolStillPricable(pool, tokenInfo) {
|
|
264
|
-
let token;
|
|
265
|
-
let reserve;
|
|
266
|
-
if (tokenInfo.direction) {
|
|
267
|
-
token = pool.token0;
|
|
268
|
-
reserve = Number(pool.getReserve0());
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
token = pool.token1;
|
|
272
|
-
reserve = Number(pool.getReserve1());
|
|
273
|
-
}
|
|
274
|
-
const price = this.prices[token.address];
|
|
275
|
-
const liquidity = (reserve * price) / 10 ** token.decimals;
|
|
276
|
-
tokenInfo.poolLiquidity = liquidity;
|
|
277
|
-
const minLiquidityK = DEBUG_COMPARE_PARTIAL_UPDATE_WITH_TINES_PRICES
|
|
278
|
-
? 1
|
|
279
|
-
: MIN_PRICABLE_LIQUIDITY;
|
|
280
|
-
if (liquidity < this.minLiquidity * minLiquidityK) {
|
|
281
|
-
return false;
|
|
282
|
-
}
|
|
283
|
-
return true;
|
|
284
|
-
}
|
|
285
|
-
_checkAndAddNewToken(pool) {
|
|
286
|
-
const price0 = this.prices[pool.token0.address];
|
|
287
|
-
const price1 = this.prices[pool.token1.address];
|
|
288
|
-
if (price1 === undefined) {
|
|
289
|
-
if (price0 === undefined)
|
|
290
|
-
return;
|
|
291
|
-
if (!this.trustedTokenSet.has(pool.token0.address))
|
|
292
|
-
return;
|
|
293
|
-
const liquidity = (Number(pool.reserve0) * price0) / 10 ** pool.token0.decimals;
|
|
294
|
-
if (liquidity < this.minLiquidity)
|
|
295
|
-
return;
|
|
296
|
-
return this._addNewToken(pool, true, price0, liquidity);
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
if (price0 !== undefined)
|
|
300
|
-
return;
|
|
301
|
-
if (!this.trustedTokenSet.has(pool.token1.address))
|
|
302
|
-
return;
|
|
303
|
-
const liquidity = (Number(pool.reserve1) * price1) / 10 ** pool.token1.decimals;
|
|
304
|
-
if (liquidity < this.minLiquidity)
|
|
305
|
-
return;
|
|
306
|
-
return this._addNewToken(pool, false, price1, liquidity);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
_addNewToken(pool, direction, priceFrom, liquidity) {
|
|
310
|
-
const [tokenFrom, tokenTo] = direction
|
|
311
|
-
? [pool.token0, pool.token1]
|
|
312
|
-
: [pool.token1, pool.token0];
|
|
313
|
-
const tokenFromInfo = this.tokenMap.get(tokenFrom.address);
|
|
314
|
-
const poolPrice = pool.calcCurrentPriceWithoutFee(!direction);
|
|
315
|
-
const tokenToInfo = new TokenInfo(tokenTo, direction, poolPrice, tokenFromInfo, pool.address, liquidity);
|
|
316
|
-
this.poolTokenMap.set(pool.uniqueID(), tokenToInfo);
|
|
317
|
-
this.tokenMap.set(tokenTo.address, tokenToInfo);
|
|
318
|
-
this.prices[tokenTo.address] =
|
|
319
|
-
(priceFrom / tokenFromInfo.decExp) * poolPrice * tokenToInfo.decExp;
|
|
320
|
-
++this.pricesSize;
|
|
321
|
-
return tokenToInfo;
|
|
322
|
-
}
|
|
323
|
-
_deleteChildlessToken(pool, token) {
|
|
324
|
-
this.poolTokenMap.delete(pool.uniqueID());
|
|
325
|
-
this.tokenMap.delete(token.address);
|
|
326
|
-
delete this.prices[token.address];
|
|
327
|
-
--this.pricesSize;
|
|
328
|
-
const place = token.parent?.children.indexOf(token);
|
|
329
|
-
if (place !== undefined && place >= 0)
|
|
330
|
-
token.parent?.children.splice(place, 1);
|
|
331
|
-
token.parent = undefined;
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
exports.IncrementalPricer = IncrementalPricer;
|
|
335
|
-
function comparePrices(errMsg, prices0, prices0Length, prices1, precision = 1e-10) {
|
|
336
|
-
const tokens0 = Object.keys(prices0);
|
|
337
|
-
checkEqual(tokens0.length, prices0Length, errMsg, 'pricesSize is incorrect');
|
|
338
|
-
tokens0.forEach((t) => {
|
|
339
|
-
const price0 = prices0?.[t];
|
|
340
|
-
const price1 = prices1?.[t];
|
|
341
|
-
if (price1 === undefined ||
|
|
342
|
-
(price0 === 0 && price1 !== 0) ||
|
|
343
|
-
Math.abs(price1 / price0 - 1) > precision)
|
|
344
|
-
console.error(`${errMsg}: token ${t} wrong prices: ${price0} != ${price1}`);
|
|
345
|
-
});
|
|
346
|
-
Object.keys(prices1).forEach((t) => {
|
|
347
|
-
if (prices0[t] === undefined) {
|
|
348
|
-
console.error(`${errMsg}: token ${t} wrong prices: ${prices0[t]} != ${prices1[t]}`);
|
|
349
|
-
}
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
function compareCommonPrices(errMsg, prices0, prices1, precision = 1e-10) {
|
|
353
|
-
const tokens0 = Object.keys(prices0);
|
|
354
|
-
let quantity = 0;
|
|
355
|
-
tokens0.forEach((t) => {
|
|
356
|
-
if (prices1[t] === undefined)
|
|
357
|
-
return;
|
|
358
|
-
++quantity;
|
|
359
|
-
const price0 = prices0?.[t];
|
|
360
|
-
const price1 = prices1?.[t];
|
|
361
|
-
if ((price0 === 0 && price1 !== 0) ||
|
|
362
|
-
Math.abs(price1 / price0 - 1) > precision)
|
|
363
|
-
console.error(`${errMsg}: token ${t} wrong prices: ${price0} != ${price1}`);
|
|
364
|
-
});
|
|
365
|
-
return quantity;
|
|
366
|
-
}
|
|
367
|
-
function checkEqual(v0, v1, ...errMsg) {
|
|
368
|
-
if (v0 !== v1)
|
|
369
|
-
console.error(`${errMsg.join(': ')}: ${v0} != ${v1}`);
|
|
370
|
-
}
|
|
371
|
-
function checkNotEqual(v0, v1, ...errMsg) {
|
|
372
|
-
if (v0 === v1)
|
|
373
|
-
console.error(`${errMsg.join(': ')}: ${v0} != ${v1}`);
|
|
374
|
-
}
|
|
375
|
-
//# sourceMappingURL=IncrementalPricer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IncrementalPricer.js","sourceRoot":"","sources":["../../../src/pricing/IncrementalPricer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PoolEdge = exports.TokenVert = void 0;
|
|
4
|
-
exports.makePoolTokenGraph = makePoolTokenGraph;
|
|
5
|
-
class TokenVert {
|
|
6
|
-
constructor(token) {
|
|
7
|
-
this.pools = [];
|
|
8
|
-
this.token = token;
|
|
9
|
-
this.address = token.address;
|
|
10
|
-
this.decExp = 10 ** token.decimals;
|
|
11
|
-
}
|
|
12
|
-
getNeibour(edge) {
|
|
13
|
-
const token0 = edge.token0;
|
|
14
|
-
return token0 === this ? edge.token1 : token0;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.TokenVert = TokenVert;
|
|
18
|
-
class PoolEdge {
|
|
19
|
-
constructor(pool, token0, token1) {
|
|
20
|
-
this.poolLiquidity = 0;
|
|
21
|
-
this.pool = pool;
|
|
22
|
-
this.token0 = token0;
|
|
23
|
-
this.token1 = token1;
|
|
24
|
-
}
|
|
25
|
-
reserve(token) {
|
|
26
|
-
return token === this.token0
|
|
27
|
-
? this.pool.getReserve0()
|
|
28
|
-
: this.pool.getReserve1();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.PoolEdge = PoolEdge;
|
|
32
|
-
function makePoolTokenGraph(pools, baseTokens) {
|
|
33
|
-
const tokens = new Map();
|
|
34
|
-
const poolsDeduplication = new Set();
|
|
35
|
-
pools.forEach((p) => {
|
|
36
|
-
const poolId = p.address.toLowerCase();
|
|
37
|
-
if (poolsDeduplication.has(poolId))
|
|
38
|
-
return;
|
|
39
|
-
poolsDeduplication.add(poolId);
|
|
40
|
-
const addr0 = p.token0.address;
|
|
41
|
-
let v0 = tokens.get(addr0);
|
|
42
|
-
if (v0 === undefined) {
|
|
43
|
-
v0 = new TokenVert(p.token0);
|
|
44
|
-
tokens.set(addr0, v0);
|
|
45
|
-
}
|
|
46
|
-
const addr1 = p.token1.address;
|
|
47
|
-
let v1 = tokens.get(addr1);
|
|
48
|
-
if (v1 === undefined) {
|
|
49
|
-
v1 = new TokenVert(p.token1);
|
|
50
|
-
tokens.set(addr1, v1);
|
|
51
|
-
}
|
|
52
|
-
const edge = new PoolEdge(p, v0, v1);
|
|
53
|
-
v0.pools.push(edge);
|
|
54
|
-
v1.pools.push(edge);
|
|
55
|
-
});
|
|
56
|
-
return baseTokens.map((t) => tokens.get(t));
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=PoolTokenGraph.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PoolTokenGraph.js","sourceRoot":"","sources":["../../../src/pricing/PoolTokenGraph.ts"],"names":[],"mappings":";;;AA0CA,gDAmCC;AA1ED,MAAa,SAAS;IAQpB,YAAY,KAAa;QAJzB,UAAK,GAAe,EAAE,CAAA;QAKpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAkB,CAAA;QACvC,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAA;IACpC,CAAC;IAED,UAAU,CAAC,IAAc;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;IAC/C,CAAC;CACF;AAlBD,8BAkBC;AAED,MAAa,QAAQ;IAMnB,YAAY,IAAW,EAAE,MAAiB,EAAE,MAAiB;QAF7D,kBAAa,GAAG,CAAC,CAAA;QAGf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,OAAO,CAAC,KAAgB;QACtB,OAAO,KAAK,KAAK,IAAI,CAAC,MAAM;YAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACzB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IAC7B,CAAC;CACF;AAjBD,4BAiBC;AAED,SAAgB,kBAAkB,CAChC,KAAc,EACd,UAAqB;IAIrB,MAAM,MAAM,GAA4B,IAAI,GAAG,EAAE,CAAA;IACjD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAA;IAC5C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;QACtC,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAM;QAC1C,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAG9B,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,OAAkB,CAAA;QACzC,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACvB,CAAC;QAGD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,OAAkB,CAAA;QACzC,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACvB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACpC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./IncrementalPricer.js"), exports);
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pricing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAsC"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HEXer = void 0;
|
|
4
|
-
class HEXer {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.hex = '';
|
|
7
|
-
}
|
|
8
|
-
toString() {
|
|
9
|
-
return this.hex;
|
|
10
|
-
}
|
|
11
|
-
toHexString() {
|
|
12
|
-
return `0x${this.hex}`;
|
|
13
|
-
}
|
|
14
|
-
toString0x() {
|
|
15
|
-
return this.toHexString();
|
|
16
|
-
}
|
|
17
|
-
uint8(data) {
|
|
18
|
-
if (data > 255 || data < 0 || data !== Math.round(data)) {
|
|
19
|
-
throw new Error(`Wrong uint8: ${data}`);
|
|
20
|
-
}
|
|
21
|
-
this.hex += data.toString(16).padStart(2, '0');
|
|
22
|
-
return this;
|
|
23
|
-
}
|
|
24
|
-
bool(data) {
|
|
25
|
-
return this.uint8(data ? 1 : 0);
|
|
26
|
-
}
|
|
27
|
-
uint16(data) {
|
|
28
|
-
if (data >= 256 * 256 || data < 0 || data !== Math.round(data)) {
|
|
29
|
-
throw new Error(`Wrong uint16: ${data}`);
|
|
30
|
-
}
|
|
31
|
-
this.hex += data.toString(16).padStart(4, '0');
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
uint24(data) {
|
|
35
|
-
if (data >= 256 * 256 * 256 || data < 0 || data !== Math.round(data)) {
|
|
36
|
-
throw new Error(`Wrong uint24: ${data}`);
|
|
37
|
-
}
|
|
38
|
-
this.hex += data.toString(16).padStart(6, '0');
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
share16(share) {
|
|
42
|
-
return this.uint16(Math.round(share * 65535));
|
|
43
|
-
}
|
|
44
|
-
uint32(data) {
|
|
45
|
-
if (data >= 256 * 256 * 256 * 256 ||
|
|
46
|
-
data < 0 ||
|
|
47
|
-
data !== Math.round(data)) {
|
|
48
|
-
throw new Error(`Wrong uint32: ${data}`);
|
|
49
|
-
}
|
|
50
|
-
this.hex += data.toString(16).padStart(8, '0');
|
|
51
|
-
return this;
|
|
52
|
-
}
|
|
53
|
-
uint256(data) {
|
|
54
|
-
if (typeof data === 'number') {
|
|
55
|
-
if (data > Number.MAX_SAFE_INTEGER ||
|
|
56
|
-
data < 0 ||
|
|
57
|
-
data !== Math.round(data)) {
|
|
58
|
-
throw new Error(`Wrong uint256: ${data}`);
|
|
59
|
-
}
|
|
60
|
-
this.hex += data.toString(16).padStart(64, '0');
|
|
61
|
-
return this;
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
const hex = data.toString(16).padStart(64, '0');
|
|
65
|
-
if (data < 0n || hex.length > 64) {
|
|
66
|
-
throw new Error(`Wrong uin256: ${data.toString()}`);
|
|
67
|
-
}
|
|
68
|
-
this.hex += hex;
|
|
69
|
-
return this;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
uint(data) {
|
|
73
|
-
return this.uint256(data);
|
|
74
|
-
}
|
|
75
|
-
address(addr) {
|
|
76
|
-
if (addr.length > 42 || addr === 'RouteProcessor') {
|
|
77
|
-
throw new Error(`Wrong address: ${addr}`);
|
|
78
|
-
}
|
|
79
|
-
this.hex += addr.slice(2).padStart(40, '0');
|
|
80
|
-
return this;
|
|
81
|
-
}
|
|
82
|
-
hexData(data) {
|
|
83
|
-
if (data.length % 2 !== 0) {
|
|
84
|
-
throw new Error(`Wrong hex data length: ${data.length}`);
|
|
85
|
-
}
|
|
86
|
-
if (data.startsWith('0x'))
|
|
87
|
-
data = data.slice(2);
|
|
88
|
-
this.hex += data;
|
|
89
|
-
return this;
|
|
90
|
-
}
|
|
91
|
-
bytes(data) {
|
|
92
|
-
if (data.length % 2 !== 0) {
|
|
93
|
-
throw new Error(`Wrong bytes length: ${data.length}`);
|
|
94
|
-
}
|
|
95
|
-
if (data.startsWith('0x'))
|
|
96
|
-
data = data.slice(2);
|
|
97
|
-
this.uint(data.length / 2);
|
|
98
|
-
this.hex += data;
|
|
99
|
-
return this;
|
|
100
|
-
}
|
|
101
|
-
bytes32(data) {
|
|
102
|
-
if (data.startsWith('0x'))
|
|
103
|
-
data = data.slice(2);
|
|
104
|
-
if (data.length > 64) {
|
|
105
|
-
throw new Error(`Wrong bytes32 length: ${data.length}`);
|
|
106
|
-
}
|
|
107
|
-
this.hex += data.padEnd(64, '0');
|
|
108
|
-
return this;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
exports.HEXer = HEXer;
|
|
112
|
-
//# sourceMappingURL=HEXer.js.map
|