@humanode-hyperlane/rebalancer 0.0.0-stage → 27.2.2-humanode.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +193 -0
- package/README.md +297 -2
- package/dist/bridges/LiFiBridge.d.ts +93 -0
- package/dist/bridges/LiFiBridge.d.ts.map +1 -0
- package/dist/bridges/LiFiBridge.js +527 -0
- package/dist/bridges/LiFiBridge.js.map +1 -0
- package/dist/bridges/LiFiBridge.test.d.ts +2 -0
- package/dist/bridges/LiFiBridge.test.d.ts.map +1 -0
- package/dist/bridges/LiFiBridge.test.js +504 -0
- package/dist/bridges/LiFiBridge.test.js.map +1 -0
- package/dist/config/RebalancerConfig.d.ts +20 -0
- package/dist/config/RebalancerConfig.d.ts.map +1 -0
- package/dist/config/RebalancerConfig.js +35 -0
- package/dist/config/RebalancerConfig.js.map +1 -0
- package/dist/config/RebalancerConfig.test.d.ts +2 -0
- package/dist/config/RebalancerConfig.test.d.ts.map +1 -0
- package/dist/config/RebalancerConfig.test.js +798 -0
- package/dist/config/RebalancerConfig.test.js.map +1 -0
- package/dist/config/types.d.ts +3008 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +451 -0
- package/dist/config/types.js.map +1 -0
- package/dist/core/InventoryRebalancer.d.ts +201 -0
- package/dist/core/InventoryRebalancer.d.ts.map +1 -0
- package/dist/core/InventoryRebalancer.js +994 -0
- package/dist/core/InventoryRebalancer.js.map +1 -0
- package/dist/core/InventoryRebalancer.test.d.ts +2 -0
- package/dist/core/InventoryRebalancer.test.d.ts.map +1 -0
- package/dist/core/InventoryRebalancer.test.js +1511 -0
- package/dist/core/InventoryRebalancer.test.js.map +1 -0
- package/dist/core/Rebalancer.d.ts +37 -0
- package/dist/core/Rebalancer.d.ts.map +1 -0
- package/dist/core/Rebalancer.js +433 -0
- package/dist/core/Rebalancer.js.map +1 -0
- package/dist/core/Rebalancer.test.d.ts +2 -0
- package/dist/core/Rebalancer.test.d.ts.map +1 -0
- package/dist/core/Rebalancer.test.js +424 -0
- package/dist/core/Rebalancer.test.js.map +1 -0
- package/dist/core/RebalancerOrchestrator.d.ts +56 -0
- package/dist/core/RebalancerOrchestrator.d.ts.map +1 -0
- package/dist/core/RebalancerOrchestrator.js +154 -0
- package/dist/core/RebalancerOrchestrator.js.map +1 -0
- package/dist/core/RebalancerOrchestrator.test.d.ts +2 -0
- package/dist/core/RebalancerOrchestrator.test.d.ts.map +1 -0
- package/dist/core/RebalancerOrchestrator.test.js +721 -0
- package/dist/core/RebalancerOrchestrator.test.js.map +1 -0
- package/dist/core/RebalancerService.d.ts +127 -0
- package/dist/core/RebalancerService.d.ts.map +1 -0
- package/dist/core/RebalancerService.js +270 -0
- package/dist/core/RebalancerService.js.map +1 -0
- package/dist/core/RebalancerService.test.d.ts +2 -0
- package/dist/core/RebalancerService.test.d.ts.map +1 -0
- package/dist/core/RebalancerService.test.js +777 -0
- package/dist/core/RebalancerService.test.js.map +1 -0
- package/dist/e2e/collateral-deficit.e2e-test.d.ts +2 -0
- package/dist/e2e/collateral-deficit.e2e-test.d.ts.map +1 -0
- package/dist/e2e/collateral-deficit.e2e-test.js +227 -0
- package/dist/e2e/collateral-deficit.e2e-test.js.map +1 -0
- package/dist/e2e/composite.e2e-test.d.ts +2 -0
- package/dist/e2e/composite.e2e-test.d.ts.map +1 -0
- package/dist/e2e/composite.e2e-test.js +666 -0
- package/dist/e2e/composite.e2e-test.js.map +1 -0
- package/dist/e2e/fixtures/routes.d.ts +89 -0
- package/dist/e2e/fixtures/routes.d.ts.map +1 -0
- package/dist/e2e/fixtures/routes.js +420 -0
- package/dist/e2e/fixtures/routes.js.map +1 -0
- package/dist/e2e/harness/BaseLocalDeploymentManager.d.ts +38 -0
- package/dist/e2e/harness/BaseLocalDeploymentManager.d.ts.map +1 -0
- package/dist/e2e/harness/BaseLocalDeploymentManager.js +144 -0
- package/dist/e2e/harness/BaseLocalDeploymentManager.js.map +1 -0
- package/dist/e2e/harness/BridgeSetup.d.ts +11 -0
- package/dist/e2e/harness/BridgeSetup.d.ts.map +1 -0
- package/dist/e2e/harness/BridgeSetup.js +50 -0
- package/dist/e2e/harness/BridgeSetup.js.map +1 -0
- package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.d.ts +13 -0
- package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.d.ts.map +1 -0
- package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.js +105 -0
- package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.js.map +1 -0
- package/dist/e2e/harness/Erc20LocalDeploymentManager.d.ts +11 -0
- package/dist/e2e/harness/Erc20LocalDeploymentManager.d.ts.map +1 -0
- package/dist/e2e/harness/Erc20LocalDeploymentManager.js +105 -0
- package/dist/e2e/harness/Erc20LocalDeploymentManager.js.map +1 -0
- package/dist/e2e/harness/ForkIndexer.d.ts +23 -0
- package/dist/e2e/harness/ForkIndexer.d.ts.map +1 -0
- package/dist/e2e/harness/ForkIndexer.js +127 -0
- package/dist/e2e/harness/ForkIndexer.js.map +1 -0
- package/dist/e2e/harness/ForkIndexer.test.d.ts +2 -0
- package/dist/e2e/harness/ForkIndexer.test.d.ts.map +1 -0
- package/dist/e2e/harness/ForkIndexer.test.js +257 -0
- package/dist/e2e/harness/ForkIndexer.test.js.map +1 -0
- package/dist/e2e/harness/MixedLocalDeploymentManager.d.ts +21 -0
- package/dist/e2e/harness/MixedLocalDeploymentManager.d.ts.map +1 -0
- package/dist/e2e/harness/MixedLocalDeploymentManager.js +115 -0
- package/dist/e2e/harness/MixedLocalDeploymentManager.js.map +1 -0
- package/dist/e2e/harness/MockExplorerClient.d.ts +23 -0
- package/dist/e2e/harness/MockExplorerClient.d.ts.map +1 -0
- package/dist/e2e/harness/MockExplorerClient.js +57 -0
- package/dist/e2e/harness/MockExplorerClient.js.map +1 -0
- package/dist/e2e/harness/MockExternalBridge.d.ts +32 -0
- package/dist/e2e/harness/MockExternalBridge.d.ts.map +1 -0
- package/dist/e2e/harness/MockExternalBridge.js +247 -0
- package/dist/e2e/harness/MockExternalBridge.js.map +1 -0
- package/dist/e2e/harness/NativeLocalDeploymentManager.d.ts +13 -0
- package/dist/e2e/harness/NativeLocalDeploymentManager.d.ts.map +1 -0
- package/dist/e2e/harness/NativeLocalDeploymentManager.js +91 -0
- package/dist/e2e/harness/NativeLocalDeploymentManager.js.map +1 -0
- package/dist/e2e/harness/SnapshotHelper.d.ts +13 -0
- package/dist/e2e/harness/SnapshotHelper.d.ts.map +1 -0
- package/dist/e2e/harness/SnapshotHelper.js +36 -0
- package/dist/e2e/harness/SnapshotHelper.js.map +1 -0
- package/dist/e2e/harness/TestHelpers.d.ts +25 -0
- package/dist/e2e/harness/TestHelpers.d.ts.map +1 -0
- package/dist/e2e/harness/TestHelpers.js +103 -0
- package/dist/e2e/harness/TestHelpers.js.map +1 -0
- package/dist/e2e/harness/TestRebalancer.d.ts +85 -0
- package/dist/e2e/harness/TestRebalancer.d.ts.map +1 -0
- package/dist/e2e/harness/TestRebalancer.js +427 -0
- package/dist/e2e/harness/TestRebalancer.js.map +1 -0
- package/dist/e2e/harness/TransferHelper.d.ts +34 -0
- package/dist/e2e/harness/TransferHelper.d.ts.map +1 -0
- package/dist/e2e/harness/TransferHelper.js +93 -0
- package/dist/e2e/harness/TransferHelper.js.map +1 -0
- package/dist/e2e/inventory-erc20-minAmount.e2e-test.d.ts +2 -0
- package/dist/e2e/inventory-erc20-minAmount.e2e-test.d.ts.map +1 -0
- package/dist/e2e/inventory-erc20-minAmount.e2e-test.js +411 -0
- package/dist/e2e/inventory-erc20-minAmount.e2e-test.js.map +1 -0
- package/dist/e2e/inventory-erc20-weighted.e2e-test.d.ts +2 -0
- package/dist/e2e/inventory-erc20-weighted.e2e-test.d.ts.map +1 -0
- package/dist/e2e/inventory-erc20-weighted.e2e-test.js +408 -0
- package/dist/e2e/inventory-erc20-weighted.e2e-test.js.map +1 -0
- package/dist/e2e/inventory-minAmount.e2e-test.d.ts +2 -0
- package/dist/e2e/inventory-minAmount.e2e-test.d.ts.map +1 -0
- package/dist/e2e/inventory-minAmount.e2e-test.js +411 -0
- package/dist/e2e/inventory-minAmount.e2e-test.js.map +1 -0
- package/dist/e2e/inventory-weighted.e2e-test.d.ts +2 -0
- package/dist/e2e/inventory-weighted.e2e-test.d.ts.map +1 -0
- package/dist/e2e/inventory-weighted.e2e-test.js +409 -0
- package/dist/e2e/inventory-weighted.e2e-test.js.map +1 -0
- package/dist/e2e/minAmount.e2e-test.d.ts +2 -0
- package/dist/e2e/minAmount.e2e-test.d.ts.map +1 -0
- package/dist/e2e/minAmount.e2e-test.js +203 -0
- package/dist/e2e/minAmount.e2e-test.js.map +1 -0
- package/dist/e2e/mixed-weighted.e2e-test.d.ts +2 -0
- package/dist/e2e/mixed-weighted.e2e-test.d.ts.map +1 -0
- package/dist/e2e/mixed-weighted.e2e-test.js +189 -0
- package/dist/e2e/mixed-weighted.e2e-test.js.map +1 -0
- package/dist/e2e/weighted.e2e-test.d.ts +2 -0
- package/dist/e2e/weighted.e2e-test.d.ts.map +1 -0
- package/dist/e2e/weighted.e2e-test.js +198 -0
- package/dist/e2e/weighted.e2e-test.js.map +1 -0
- package/dist/factories/RebalancerContextFactory.d.ts +89 -0
- package/dist/factories/RebalancerContextFactory.d.ts.map +1 -0
- package/dist/factories/RebalancerContextFactory.js +420 -0
- package/dist/factories/RebalancerContextFactory.js.map +1 -0
- package/dist/factories/RebalancerContextFactory.test.d.ts +2 -0
- package/dist/factories/RebalancerContextFactory.test.d.ts.map +1 -0
- package/dist/factories/RebalancerContextFactory.test.js +270 -0
- package/dist/factories/RebalancerContextFactory.test.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/IExternalBridge.d.ts +103 -0
- package/dist/interfaces/IExternalBridge.d.ts.map +1 -0
- package/dist/interfaces/IExternalBridge.js +2 -0
- package/dist/interfaces/IExternalBridge.js.map +1 -0
- package/dist/interfaces/IMetrics.d.ts +5 -0
- package/dist/interfaces/IMetrics.d.ts.map +1 -0
- package/dist/interfaces/IMetrics.js +2 -0
- package/dist/interfaces/IMetrics.js.map +1 -0
- package/dist/interfaces/IMonitor.d.ts +50 -0
- package/dist/interfaces/IMonitor.d.ts.map +1 -0
- package/dist/interfaces/IMonitor.js +14 -0
- package/dist/interfaces/IMonitor.js.map +1 -0
- package/dist/interfaces/IRebalancer.d.ts +31 -0
- package/dist/interfaces/IRebalancer.d.ts.map +1 -0
- package/dist/interfaces/IRebalancer.js +2 -0
- package/dist/interfaces/IRebalancer.js.map +1 -0
- package/dist/interfaces/IStrategy.d.ts +60 -0
- package/dist/interfaces/IStrategy.d.ts.map +1 -0
- package/dist/interfaces/IStrategy.js +13 -0
- package/dist/interfaces/IStrategy.js.map +1 -0
- package/dist/metrics/Metrics.d.ts +25 -0
- package/dist/metrics/Metrics.d.ts.map +1 -0
- package/dist/metrics/Metrics.js +164 -0
- package/dist/metrics/Metrics.js.map +1 -0
- package/dist/metrics/PriceGetter.d.ts +10 -0
- package/dist/metrics/PriceGetter.d.ts.map +1 -0
- package/dist/metrics/PriceGetter.js +41 -0
- package/dist/metrics/PriceGetter.js.map +1 -0
- package/dist/metrics/scripts/metrics.d.ts +28 -0
- package/dist/metrics/scripts/metrics.d.ts.map +1 -0
- package/dist/metrics/scripts/metrics.js +61 -0
- package/dist/metrics/scripts/metrics.js.map +1 -0
- package/dist/monitor/Monitor.d.ts +40 -0
- package/dist/monitor/Monitor.d.ts.map +1 -0
- package/dist/monitor/Monitor.js +211 -0
- package/dist/monitor/Monitor.js.map +1 -0
- package/dist/service.d.ts +3 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +205 -0
- package/dist/service.js.map +1 -0
- package/dist/strategy/BaseStrategy.d.ts +86 -0
- package/dist/strategy/BaseStrategy.d.ts.map +1 -0
- package/dist/strategy/BaseStrategy.js +342 -0
- package/dist/strategy/BaseStrategy.js.map +1 -0
- package/dist/strategy/CollateralDeficitStrategy.d.ts +65 -0
- package/dist/strategy/CollateralDeficitStrategy.d.ts.map +1 -0
- package/dist/strategy/CollateralDeficitStrategy.js +253 -0
- package/dist/strategy/CollateralDeficitStrategy.js.map +1 -0
- package/dist/strategy/CollateralDeficitStrategy.test.d.ts +2 -0
- package/dist/strategy/CollateralDeficitStrategy.test.d.ts.map +1 -0
- package/dist/strategy/CollateralDeficitStrategy.test.js +497 -0
- package/dist/strategy/CollateralDeficitStrategy.test.js.map +1 -0
- package/dist/strategy/CompositeStrategy.d.ts +18 -0
- package/dist/strategy/CompositeStrategy.d.ts.map +1 -0
- package/dist/strategy/CompositeStrategy.js +63 -0
- package/dist/strategy/CompositeStrategy.js.map +1 -0
- package/dist/strategy/CompositeStrategy.test.d.ts +2 -0
- package/dist/strategy/CompositeStrategy.test.d.ts.map +1 -0
- package/dist/strategy/CompositeStrategy.test.js +278 -0
- package/dist/strategy/CompositeStrategy.test.js.map +1 -0
- package/dist/strategy/MinAmountStrategy.d.ts +35 -0
- package/dist/strategy/MinAmountStrategy.d.ts.map +1 -0
- package/dist/strategy/MinAmountStrategy.js +112 -0
- package/dist/strategy/MinAmountStrategy.js.map +1 -0
- package/dist/strategy/MinAmountStrategy.test.d.ts +2 -0
- package/dist/strategy/MinAmountStrategy.test.d.ts.map +1 -0
- package/dist/strategy/MinAmountStrategy.test.js +547 -0
- package/dist/strategy/MinAmountStrategy.test.js.map +1 -0
- package/dist/strategy/StrategyFactory.d.ts +27 -0
- package/dist/strategy/StrategyFactory.d.ts.map +1 -0
- package/dist/strategy/StrategyFactory.js +79 -0
- package/dist/strategy/StrategyFactory.js.map +1 -0
- package/dist/strategy/StrategyFactory.test.d.ts +2 -0
- package/dist/strategy/StrategyFactory.test.d.ts.map +1 -0
- package/dist/strategy/StrategyFactory.test.js +81 -0
- package/dist/strategy/StrategyFactory.test.js.map +1 -0
- package/dist/strategy/WeightedStrategy.d.ts +32 -0
- package/dist/strategy/WeightedStrategy.d.ts.map +1 -0
- package/dist/strategy/WeightedStrategy.js +73 -0
- package/dist/strategy/WeightedStrategy.js.map +1 -0
- package/dist/strategy/WeightedStrategy.test.d.ts +2 -0
- package/dist/strategy/WeightedStrategy.test.d.ts.map +1 -0
- package/dist/strategy/WeightedStrategy.test.js +403 -0
- package/dist/strategy/WeightedStrategy.test.js.map +1 -0
- package/dist/strategy/index.d.ts +7 -0
- package/dist/strategy/index.d.ts.map +1 -0
- package/dist/strategy/index.js +7 -0
- package/dist/strategy/index.js.map +1 -0
- package/dist/test/helpers.d.ts +99 -0
- package/dist/test/helpers.d.ts.map +1 -0
- package/dist/test/helpers.js +311 -0
- package/dist/test/helpers.js.map +1 -0
- package/dist/test/lifiMocks.d.ts +52 -0
- package/dist/test/lifiMocks.d.ts.map +1 -0
- package/dist/test/lifiMocks.js +160 -0
- package/dist/test/lifiMocks.js.map +1 -0
- package/dist/tracking/ActionTracker.d.ts +90 -0
- package/dist/tracking/ActionTracker.d.ts.map +1 -0
- package/dist/tracking/ActionTracker.js +678 -0
- package/dist/tracking/ActionTracker.js.map +1 -0
- package/dist/tracking/ActionTracker.test.d.ts +2 -0
- package/dist/tracking/ActionTracker.test.d.ts.map +1 -0
- package/dist/tracking/ActionTracker.test.js +1351 -0
- package/dist/tracking/ActionTracker.test.js.map +1 -0
- package/dist/tracking/IActionTracker.d.ts +157 -0
- package/dist/tracking/IActionTracker.d.ts.map +1 -0
- package/dist/tracking/IActionTracker.js +2 -0
- package/dist/tracking/IActionTracker.js.map +1 -0
- package/dist/tracking/InflightContextAdapter.d.ts +18 -0
- package/dist/tracking/InflightContextAdapter.d.ts.map +1 -0
- package/dist/tracking/InflightContextAdapter.js +52 -0
- package/dist/tracking/InflightContextAdapter.js.map +1 -0
- package/dist/tracking/InflightContextAdapter.test.d.ts +2 -0
- package/dist/tracking/InflightContextAdapter.test.d.ts.map +1 -0
- package/dist/tracking/InflightContextAdapter.test.js +175 -0
- package/dist/tracking/InflightContextAdapter.test.js.map +1 -0
- package/dist/tracking/store/IStore.d.ts +41 -0
- package/dist/tracking/store/IStore.d.ts.map +1 -0
- package/dist/tracking/store/IStore.js +2 -0
- package/dist/tracking/store/IStore.js.map +1 -0
- package/dist/tracking/store/InMemoryStore.d.ts +21 -0
- package/dist/tracking/store/InMemoryStore.d.ts.map +1 -0
- package/dist/tracking/store/InMemoryStore.js +40 -0
- package/dist/tracking/store/InMemoryStore.js.map +1 -0
- package/dist/tracking/store/InMemoryStore.test.d.ts +2 -0
- package/dist/tracking/store/InMemoryStore.test.d.ts.map +1 -0
- package/dist/tracking/store/InMemoryStore.test.js +290 -0
- package/dist/tracking/store/InMemoryStore.test.js.map +1 -0
- package/dist/tracking/store/index.d.ts +3 -0
- package/dist/tracking/store/index.d.ts.map +1 -0
- package/dist/tracking/store/index.js +2 -0
- package/dist/tracking/store/index.js.map +1 -0
- package/dist/tracking/types.d.ts +77 -0
- package/dist/tracking/types.d.ts.map +1 -0
- package/dist/tracking/types.js +2 -0
- package/dist/tracking/types.js.map +1 -0
- package/dist/utils/ExplorerClient.d.ts +68 -0
- package/dist/utils/ExplorerClient.d.ts.map +1 -0
- package/dist/utils/ExplorerClient.js +324 -0
- package/dist/utils/ExplorerClient.js.map +1 -0
- package/dist/utils/ExplorerClient.test.d.ts +2 -0
- package/dist/utils/ExplorerClient.test.d.ts.map +1 -0
- package/dist/utils/ExplorerClient.test.js +261 -0
- package/dist/utils/ExplorerClient.test.js.map +1 -0
- package/dist/utils/balanceUtils.d.ts +12 -0
- package/dist/utils/balanceUtils.d.ts.map +1 -0
- package/dist/utils/balanceUtils.js +40 -0
- package/dist/utils/balanceUtils.js.map +1 -0
- package/dist/utils/balanceUtils.test.d.ts +2 -0
- package/dist/utils/balanceUtils.test.d.ts.map +1 -0
- package/dist/utils/balanceUtils.test.js +55 -0
- package/dist/utils/balanceUtils.test.js.map +1 -0
- package/dist/utils/blockTag.d.ts +14 -0
- package/dist/utils/blockTag.d.ts.map +1 -0
- package/dist/utils/blockTag.js +46 -0
- package/dist/utils/blockTag.js.map +1 -0
- package/dist/utils/bridgeUtils.d.ts +40 -0
- package/dist/utils/bridgeUtils.d.ts.map +1 -0
- package/dist/utils/bridgeUtils.js +54 -0
- package/dist/utils/bridgeUtils.js.map +1 -0
- package/dist/utils/bridgeUtils.test.d.ts +2 -0
- package/dist/utils/bridgeUtils.test.d.ts.map +1 -0
- package/dist/utils/bridgeUtils.test.js +163 -0
- package/dist/utils/bridgeUtils.test.js.map +1 -0
- package/dist/utils/errors.d.ts +4 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +6 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/gasEstimation.d.ts +65 -0
- package/dist/utils/gasEstimation.d.ts.map +1 -0
- package/dist/utils/gasEstimation.js +206 -0
- package/dist/utils/gasEstimation.js.map +1 -0
- package/dist/utils/solanaKeyParser.d.ts +10 -0
- package/dist/utils/solanaKeyParser.d.ts.map +1 -0
- package/dist/utils/solanaKeyParser.js +87 -0
- package/dist/utils/solanaKeyParser.js.map +1 -0
- package/dist/utils/solanaKeyParser.test.d.ts +2 -0
- package/dist/utils/solanaKeyParser.test.d.ts.map +1 -0
- package/dist/utils/solanaKeyParser.test.js +71 -0
- package/dist/utils/solanaKeyParser.test.js.map +1 -0
- package/dist/utils/tokenUtils.d.ts +38 -0
- package/dist/utils/tokenUtils.d.ts.map +1 -0
- package/dist/utils/tokenUtils.js +65 -0
- package/dist/utils/tokenUtils.js.map +1 -0
- package/dist/utils/transactionUtils.d.ts +22 -0
- package/dist/utils/transactionUtils.d.ts.map +1 -0
- package/dist/utils/transactionUtils.js +26 -0
- package/dist/utils/transactionUtils.js.map +1 -0
- package/package.json +87 -3
- package/src/bridges/LiFiBridge.test.ts +615 -0
- package/src/bridges/LiFiBridge.ts +731 -0
- package/src/config/RebalancerConfig.test.ts +921 -0
- package/src/config/RebalancerConfig.ts +63 -0
- package/src/config/types.ts +613 -0
- package/src/core/InventoryRebalancer.test.ts +1858 -0
- package/src/core/InventoryRebalancer.ts +1455 -0
- package/src/core/Rebalancer.test.ts +686 -0
- package/src/core/Rebalancer.ts +686 -0
- package/src/core/RebalancerOrchestrator.test.ts +871 -0
- package/src/core/RebalancerOrchestrator.ts +273 -0
- package/src/core/RebalancerService.test.ts +1094 -0
- package/src/core/RebalancerService.ts +412 -0
- package/src/e2e/E2E_TEST_CONVENTIONS.md +222 -0
- package/src/e2e/collateral-deficit.e2e-test.ts +403 -0
- package/src/e2e/composite.e2e-test.ts +1008 -0
- package/src/e2e/fixtures/routes.ts +532 -0
- package/src/e2e/harness/BaseLocalDeploymentManager.ts +246 -0
- package/src/e2e/harness/BridgeSetup.ts +95 -0
- package/src/e2e/harness/Erc20InventoryLocalDeploymentManager.ts +183 -0
- package/src/e2e/harness/Erc20LocalDeploymentManager.ts +190 -0
- package/src/e2e/harness/ForkIndexer.test.ts +448 -0
- package/src/e2e/harness/ForkIndexer.ts +183 -0
- package/src/e2e/harness/MixedLocalDeploymentManager.ts +196 -0
- package/src/e2e/harness/MockExplorerClient.ts +94 -0
- package/src/e2e/harness/MockExternalBridge.ts +411 -0
- package/src/e2e/harness/NativeLocalDeploymentManager.ts +138 -0
- package/src/e2e/harness/SnapshotHelper.ts +56 -0
- package/src/e2e/harness/TestHelpers.ts +169 -0
- package/src/e2e/harness/TestRebalancer.ts +758 -0
- package/src/e2e/harness/TransferHelper.ts +188 -0
- package/src/e2e/inventory-erc20-minAmount.e2e-test.ts +735 -0
- package/src/e2e/inventory-erc20-weighted.e2e-test.ts +733 -0
- package/src/e2e/inventory-minAmount.e2e-test.ts +734 -0
- package/src/e2e/inventory-weighted.e2e-test.ts +734 -0
- package/src/e2e/minAmount.e2e-test.ts +313 -0
- package/src/e2e/mixed-weighted.e2e-test.ts +267 -0
- package/src/e2e/weighted.e2e-test.ts +304 -0
- package/src/factories/RebalancerContextFactory.test.ts +394 -0
- package/src/factories/RebalancerContextFactory.ts +771 -0
- package/src/index.ts +125 -0
- package/src/interfaces/IExternalBridge.ts +117 -0
- package/src/interfaces/IMetrics.ts +5 -0
- package/src/interfaces/IMonitor.ts +71 -0
- package/src/interfaces/IRebalancer.ts +57 -0
- package/src/interfaces/IStrategy.ts +81 -0
- package/src/metrics/Metrics.ts +335 -0
- package/src/metrics/PriceGetter.ts +74 -0
- package/src/metrics/scripts/metrics.ts +139 -0
- package/src/monitor/Monitor.ts +324 -0
- package/src/service.ts +285 -0
- package/src/strategy/BaseStrategy.ts +553 -0
- package/src/strategy/CollateralDeficitStrategy.test.ts +728 -0
- package/src/strategy/CollateralDeficitStrategy.ts +421 -0
- package/src/strategy/CompositeStrategy.test.ts +418 -0
- package/src/strategy/CompositeStrategy.ts +102 -0
- package/src/strategy/MinAmountStrategy.test.ts +732 -0
- package/src/strategy/MinAmountStrategy.ts +200 -0
- package/src/strategy/StrategyFactory.test.ts +108 -0
- package/src/strategy/StrategyFactory.ts +157 -0
- package/src/strategy/WeightedStrategy.test.ts +529 -0
- package/src/strategy/WeightedStrategy.ts +126 -0
- package/src/strategy/index.ts +6 -0
- package/src/test/helpers.ts +477 -0
- package/src/test/lifiMocks.ts +211 -0
- package/src/tracking/ActionTracker.test.ts +1625 -0
- package/src/tracking/ActionTracker.ts +1019 -0
- package/src/tracking/IActionTracker.ts +213 -0
- package/src/tracking/InflightContextAdapter.test.ts +206 -0
- package/src/tracking/InflightContextAdapter.ts +75 -0
- package/src/tracking/store/IStore.ts +48 -0
- package/src/tracking/store/InMemoryStore.test.ts +338 -0
- package/src/tracking/store/InMemoryStore.ts +59 -0
- package/src/tracking/store/index.ts +2 -0
- package/src/tracking/types.ts +118 -0
- package/src/utils/ExplorerClient.test.ts +386 -0
- package/src/utils/ExplorerClient.ts +439 -0
- package/src/utils/balanceUtils.test.ts +79 -0
- package/src/utils/balanceUtils.ts +65 -0
- package/src/utils/blockTag.ts +68 -0
- package/src/utils/bridgeUtils.test.ts +193 -0
- package/src/utils/bridgeUtils.ts +101 -0
- package/src/utils/errors.ts +5 -0
- package/src/utils/gasEstimation.ts +306 -0
- package/src/utils/solanaKeyParser.test.ts +103 -0
- package/src/utils/solanaKeyParser.ts +117 -0
- package/src/utils/tokenUtils.ts +89 -0
- package/src/utils/transactionUtils.ts +41 -0
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import { toWei } from '@humanode-hyperlane/utils';
|
|
2
|
+
import { createStrategyRoute, getBridgeConfig, } from '../utils/bridgeUtils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Base abstract class for rebalancing strategies
|
|
5
|
+
*/
|
|
6
|
+
export class BaseStrategy {
|
|
7
|
+
chains;
|
|
8
|
+
metrics;
|
|
9
|
+
logger;
|
|
10
|
+
bridgeConfigs;
|
|
11
|
+
tokensByChainName;
|
|
12
|
+
constructor(chains, logger, bridgeConfigs, metrics, tokensByChainName) {
|
|
13
|
+
// Rebalancing makes sense only with more than one chain.
|
|
14
|
+
if (chains.length < 2) {
|
|
15
|
+
throw new Error('At least two chains must be configured');
|
|
16
|
+
}
|
|
17
|
+
this.chains = chains;
|
|
18
|
+
this.logger = logger;
|
|
19
|
+
this.bridgeConfigs = bridgeConfigs;
|
|
20
|
+
this.metrics = metrics;
|
|
21
|
+
this.tokensByChainName = tokensByChainName;
|
|
22
|
+
}
|
|
23
|
+
getBridgeConfigForRoute(origin, destination) {
|
|
24
|
+
return getBridgeConfig(this.bridgeConfigs, origin, destination);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Main method to get rebalancing routes
|
|
28
|
+
*/
|
|
29
|
+
getRebalancingRoutes(rawBalances, inflightContext) {
|
|
30
|
+
const pendingRebalances = inflightContext?.pendingRebalances ?? [];
|
|
31
|
+
const pendingTransfers = inflightContext?.pendingTransfers ?? [];
|
|
32
|
+
const proposedRebalances = inflightContext?.proposedRebalances ?? [];
|
|
33
|
+
this.logger.info({
|
|
34
|
+
strategy: this.name,
|
|
35
|
+
balances: Object.entries(rawBalances).map(([c, b]) => ({
|
|
36
|
+
chain: c,
|
|
37
|
+
balance: b.toString(),
|
|
38
|
+
})),
|
|
39
|
+
pendingRebalances: pendingRebalances.length,
|
|
40
|
+
pendingTransfers: pendingTransfers.length,
|
|
41
|
+
proposedRebalances: proposedRebalances.length,
|
|
42
|
+
}, 'Strategy evaluating');
|
|
43
|
+
this.validateRawBalances(rawBalances);
|
|
44
|
+
// Store original balances for filtering step
|
|
45
|
+
const actualBalances = rawBalances;
|
|
46
|
+
// Step 1: Reserve collateral for pending user transfers
|
|
47
|
+
// This prevents draining collateral needed for incoming user transfers
|
|
48
|
+
const effectiveBalances = this.reserveCollateral(rawBalances, pendingTransfers);
|
|
49
|
+
// Get balances categorized by surplus and deficit
|
|
50
|
+
// Pass pending and proposed rebalances so strategy can account for them
|
|
51
|
+
const { surpluses, deficits } = this.getCategorizedBalances(effectiveBalances, pendingRebalances, proposedRebalances);
|
|
52
|
+
this.logger.debug({
|
|
53
|
+
context: this.constructor.name,
|
|
54
|
+
surpluses,
|
|
55
|
+
}, 'Surpluses calculated');
|
|
56
|
+
this.logger.debug({
|
|
57
|
+
context: this.constructor.name,
|
|
58
|
+
deficits,
|
|
59
|
+
}, 'Deficits calculated');
|
|
60
|
+
// Calculate sums of surpluses and deficits
|
|
61
|
+
const totalSurplus = surpluses.reduce((sum, surplus) => sum + surplus.amount, 0n);
|
|
62
|
+
const totalDeficit = deficits.reduce((sum, deficit) => sum + deficit.amount, 0n);
|
|
63
|
+
this.logger.debug({
|
|
64
|
+
context: this.constructor.name,
|
|
65
|
+
totalSurplus: totalSurplus.toString(),
|
|
66
|
+
}, 'Total surplus calculated');
|
|
67
|
+
this.logger.debug({
|
|
68
|
+
context: this.constructor.name,
|
|
69
|
+
totalDeficit: totalDeficit.toString(),
|
|
70
|
+
}, 'Total deficit calculated');
|
|
71
|
+
// If total surplus is less than total deficit, scale down deficits proportionally
|
|
72
|
+
if (totalSurplus < totalDeficit) {
|
|
73
|
+
this.logger.warn({
|
|
74
|
+
context: this.constructor.name,
|
|
75
|
+
totalSurplus: totalSurplus.toString(),
|
|
76
|
+
totalDeficit: totalDeficit.toString(),
|
|
77
|
+
}, 'Deficits are greater than surpluses. Scaling deficits');
|
|
78
|
+
// we consider this a failure because we cannot rebalance the route completely
|
|
79
|
+
// however we can still transfer some amount of the deficit to reduce the imbalances
|
|
80
|
+
this.metrics?.recordRebalancerFailure();
|
|
81
|
+
for (const deficit of deficits) {
|
|
82
|
+
const newAmount = (deficit.amount * totalSurplus) / totalDeficit;
|
|
83
|
+
deficit.amount = newAmount;
|
|
84
|
+
}
|
|
85
|
+
this.logger.debug({
|
|
86
|
+
context: this.constructor.name,
|
|
87
|
+
deficits,
|
|
88
|
+
}, 'Scaled deficits');
|
|
89
|
+
}
|
|
90
|
+
// Sort from largest to smallest amounts as to always transfer largest amounts
|
|
91
|
+
// first and decrease the amount of routes required
|
|
92
|
+
surpluses.sort((a, b) => (a.amount > b.amount ? -1 : 1));
|
|
93
|
+
deficits.sort((a, b) => (a.amount > b.amount ? -1 : 1));
|
|
94
|
+
const routes = [];
|
|
95
|
+
// Transfer from surplus to deficit until all deficits are balanced.
|
|
96
|
+
while (deficits.length > 0 && surpluses.length > 0) {
|
|
97
|
+
const surplus = surpluses[0];
|
|
98
|
+
const deficit = deficits[0];
|
|
99
|
+
// Transfers the whole surplus or just the amount to balance the deficit
|
|
100
|
+
const transferAmount = surplus.amount > deficit.amount ? deficit.amount : surplus.amount;
|
|
101
|
+
// Skip zero-amount routes (can occur after scaling when surpluses < deficits)
|
|
102
|
+
if (transferAmount > 0n) {
|
|
103
|
+
// Get bridge config for this route (with destination-specific overrides)
|
|
104
|
+
const bridgeConfig = this.getBridgeConfigForRoute(surplus.chain, deficit.chain);
|
|
105
|
+
// Create appropriate route type based on execution type
|
|
106
|
+
routes.push(createStrategyRoute(bridgeConfig, surplus.chain, deficit.chain, transferAmount));
|
|
107
|
+
}
|
|
108
|
+
// Decreases the amounts for the following iterations
|
|
109
|
+
deficit.amount -= transferAmount;
|
|
110
|
+
surplus.amount -= transferAmount;
|
|
111
|
+
// Removes the deficit if it is fully balanced (including scaled-to-zero)
|
|
112
|
+
if (deficit.amount <= 0n) {
|
|
113
|
+
deficits.shift();
|
|
114
|
+
}
|
|
115
|
+
// Removes the surplus if it has been drained
|
|
116
|
+
if (surplus.amount <= 0n) {
|
|
117
|
+
surpluses.shift();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
this.logger.debug({
|
|
121
|
+
context: this.constructor.name,
|
|
122
|
+
routes,
|
|
123
|
+
}, 'Generated routes');
|
|
124
|
+
this.logger.info({
|
|
125
|
+
context: this.constructor.name,
|
|
126
|
+
numberOfRoutes: routes.length,
|
|
127
|
+
}, 'Found rebalancing routes');
|
|
128
|
+
const filteredRoutes = this.filterRoutes(routes, actualBalances);
|
|
129
|
+
this.logger.debug({
|
|
130
|
+
context: this.constructor.name,
|
|
131
|
+
filteredRoutesCount: filteredRoutes.length,
|
|
132
|
+
droppedCount: routes.length - filteredRoutes.length,
|
|
133
|
+
}, 'Filtered rebalancing routes');
|
|
134
|
+
// Record metrics for each intent that passed filtering
|
|
135
|
+
for (const route of filteredRoutes) {
|
|
136
|
+
this.metrics?.recordIntentCreated(route, this.name);
|
|
137
|
+
}
|
|
138
|
+
return filteredRoutes;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Validates the raw balances against the chains configuration
|
|
142
|
+
*/
|
|
143
|
+
validateRawBalances(rawBalances) {
|
|
144
|
+
const rawBalancesChains = Object.keys(rawBalances);
|
|
145
|
+
if (this.chains.length !== rawBalancesChains.length) {
|
|
146
|
+
throw new Error('Config chains do not match raw balances chains length');
|
|
147
|
+
}
|
|
148
|
+
for (const chain of this.chains) {
|
|
149
|
+
const balance = rawBalances[chain];
|
|
150
|
+
if (balance === undefined) {
|
|
151
|
+
throw new Error(`Raw balance for chain ${chain} not found`);
|
|
152
|
+
}
|
|
153
|
+
if (balance < 0n) {
|
|
154
|
+
throw new Error(`Raw balance for chain ${chain} is negative`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Reserve collateral for pending user transfers.
|
|
160
|
+
* Subtracts pending transfer amounts from destination balances.
|
|
161
|
+
* This ensures we don't drain collateral needed for incoming transfers.
|
|
162
|
+
*
|
|
163
|
+
* @param rawBalances - Current on-chain balances
|
|
164
|
+
* @param pendingTransfers - Transfers that will need collateral on destination
|
|
165
|
+
* @returns Balances with reserved amounts subtracted
|
|
166
|
+
*/
|
|
167
|
+
reserveCollateral(rawBalances, pendingTransfers) {
|
|
168
|
+
if (pendingTransfers.length === 0) {
|
|
169
|
+
return rawBalances;
|
|
170
|
+
}
|
|
171
|
+
const reserved = { ...rawBalances };
|
|
172
|
+
for (const transfer of pendingTransfers) {
|
|
173
|
+
const destBalance = reserved[transfer.destination] ?? 0n;
|
|
174
|
+
// Reserve the transfer amount from destination
|
|
175
|
+
// Allow negative values to indicate collateral deficits
|
|
176
|
+
reserved[transfer.destination] = destBalance - transfer.amount;
|
|
177
|
+
this.logger.debug({
|
|
178
|
+
context: this.constructor.name,
|
|
179
|
+
destination: transfer.destination,
|
|
180
|
+
amount: transfer.amount.toString(),
|
|
181
|
+
newBalance: reserved[transfer.destination].toString(),
|
|
182
|
+
}, 'Reserved collateral for pending transfer');
|
|
183
|
+
}
|
|
184
|
+
this.logger.info({
|
|
185
|
+
reservations: pendingTransfers.map((t) => ({
|
|
186
|
+
destination: t.destination,
|
|
187
|
+
amount: t.amount.toString(),
|
|
188
|
+
})),
|
|
189
|
+
}, 'Collateral reserved for pending transfers');
|
|
190
|
+
return reserved;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Simulate pending rebalances based on execution method.
|
|
194
|
+
*
|
|
195
|
+
* For **movable_collateral** (default):
|
|
196
|
+
* - Add full amount to destination (origin already deducted on-chain)
|
|
197
|
+
*
|
|
198
|
+
* For **inventory**:
|
|
199
|
+
* - Simulate the eventual final state as if the entire intent will be fulfilled
|
|
200
|
+
* - Destination: add unfulfilled amount (total - delivered - awaiting)
|
|
201
|
+
* This is what's NOT yet reflected in on-chain balance
|
|
202
|
+
* - Origin: subtract pending amount (total - delivered)
|
|
203
|
+
* This is what WILL decrease when all messages deliver
|
|
204
|
+
*
|
|
205
|
+
* @param rawBalances - Current balances (may already have collateral reserved)
|
|
206
|
+
* @param pendingRebalances - In-flight rebalance operations (in_progress only)
|
|
207
|
+
* @returns Simulated future balances after rebalances complete
|
|
208
|
+
*/
|
|
209
|
+
simulatePendingRebalances(rawBalances, pendingRebalances) {
|
|
210
|
+
if (pendingRebalances.length === 0) {
|
|
211
|
+
return rawBalances;
|
|
212
|
+
}
|
|
213
|
+
const simulated = { ...rawBalances };
|
|
214
|
+
for (const rebalance of pendingRebalances) {
|
|
215
|
+
if (rebalance.executionMethod === 'inventory') {
|
|
216
|
+
// Inventory: simulate eventual final state
|
|
217
|
+
const total = rebalance.amount;
|
|
218
|
+
const delivered = rebalance.deliveredAmount ?? 0n;
|
|
219
|
+
const awaiting = rebalance.awaitingDeliveryAmount ?? 0n;
|
|
220
|
+
// Destination: add unfulfilled amount (total - delivered - awaiting)
|
|
221
|
+
// This is what's NOT yet reflected in on-chain balance
|
|
222
|
+
const destinationAdjustment = total - delivered - awaiting;
|
|
223
|
+
if (destinationAdjustment > 0n) {
|
|
224
|
+
simulated[rebalance.destination] =
|
|
225
|
+
(simulated[rebalance.destination] ?? 0n) + destinationAdjustment;
|
|
226
|
+
this.logger.debug({
|
|
227
|
+
context: this.constructor.name,
|
|
228
|
+
destination: rebalance.destination,
|
|
229
|
+
destinationAdjustment: destinationAdjustment.toString(),
|
|
230
|
+
}, 'Simulated inventory rebalance (destination increase for unfulfilled)');
|
|
231
|
+
}
|
|
232
|
+
// Origin: subtract pending amount (total - delivered)
|
|
233
|
+
// This is what WILL decrease when all messages deliver
|
|
234
|
+
const originAdjustment = total - delivered;
|
|
235
|
+
if (originAdjustment > 0n) {
|
|
236
|
+
simulated[rebalance.origin] =
|
|
237
|
+
(simulated[rebalance.origin] ?? 0n) - originAdjustment;
|
|
238
|
+
this.logger.debug({
|
|
239
|
+
context: this.constructor.name,
|
|
240
|
+
origin: rebalance.origin,
|
|
241
|
+
originAdjustment: originAdjustment.toString(),
|
|
242
|
+
}, 'Simulated inventory rebalance (origin decrease for pending)');
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
// Movable collateral: origin already deducted on-chain, add to destination
|
|
247
|
+
simulated[rebalance.destination] =
|
|
248
|
+
(simulated[rebalance.destination] ?? 0n) + rebalance.amount;
|
|
249
|
+
this.logger.debug({
|
|
250
|
+
context: this.constructor.name,
|
|
251
|
+
destination: rebalance.destination,
|
|
252
|
+
amount: rebalance.amount.toString(),
|
|
253
|
+
}, 'Simulated movable collateral rebalance (destination increase)');
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
this.logger.info({
|
|
257
|
+
simulations: pendingRebalances.map((r) => ({
|
|
258
|
+
from: r.origin,
|
|
259
|
+
to: r.destination,
|
|
260
|
+
amount: r.amount.toString(),
|
|
261
|
+
executionMethod: r.executionMethod ?? 'movable_collateral',
|
|
262
|
+
deliveredAmount: r.deliveredAmount?.toString() ?? '0',
|
|
263
|
+
awaitingDeliveryAmount: r.awaitingDeliveryAmount?.toString() ?? '0',
|
|
264
|
+
})),
|
|
265
|
+
}, 'Simulated pending rebalances');
|
|
266
|
+
return simulated;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Simulate proposed rebalances by subtracting from origin AND adding to destination.
|
|
270
|
+
*
|
|
271
|
+
* Unlike pendingRebalances, proposedRebalances are routes from earlier strategies
|
|
272
|
+
* in the same cycle that haven't been executed yet. Therefore:
|
|
273
|
+
* - Origin balance has NOT been deducted on-chain
|
|
274
|
+
* - We must simulate both sides to maintain accurate total balance
|
|
275
|
+
*
|
|
276
|
+
* @param rawBalances - Current balances (may already have pending rebalances simulated)
|
|
277
|
+
* @param proposedRebalances - Routes from earlier strategies (not yet executed)
|
|
278
|
+
* @returns Simulated balances after proposed rebalances complete
|
|
279
|
+
*/
|
|
280
|
+
simulateProposedRebalances(rawBalances, proposedRebalances) {
|
|
281
|
+
if (proposedRebalances.length === 0) {
|
|
282
|
+
return rawBalances;
|
|
283
|
+
}
|
|
284
|
+
const simulated = { ...rawBalances };
|
|
285
|
+
for (const rebalance of proposedRebalances) {
|
|
286
|
+
// Subtract from origin (not yet deducted on-chain)
|
|
287
|
+
simulated[rebalance.origin] =
|
|
288
|
+
(simulated[rebalance.origin] ?? 0n) - rebalance.amount;
|
|
289
|
+
// Add to destination
|
|
290
|
+
simulated[rebalance.destination] =
|
|
291
|
+
(simulated[rebalance.destination] ?? 0n) + rebalance.amount;
|
|
292
|
+
this.logger.debug({
|
|
293
|
+
context: this.constructor.name,
|
|
294
|
+
origin: rebalance.origin,
|
|
295
|
+
destination: rebalance.destination,
|
|
296
|
+
amount: rebalance.amount.toString(),
|
|
297
|
+
}, 'Simulated proposed rebalance (origin decrease, destination increase)');
|
|
298
|
+
}
|
|
299
|
+
this.logger.info({
|
|
300
|
+
simulations: proposedRebalances.map((r) => ({
|
|
301
|
+
from: r.origin,
|
|
302
|
+
to: r.destination,
|
|
303
|
+
amount: r.amount.toString(),
|
|
304
|
+
})),
|
|
305
|
+
}, 'Simulated proposed rebalances');
|
|
306
|
+
return simulated;
|
|
307
|
+
}
|
|
308
|
+
filterRoutes(routes, actualBalances) {
|
|
309
|
+
return routes.filter((route) => {
|
|
310
|
+
const balance = actualBalances[route.origin] ?? 0n;
|
|
311
|
+
if (balance < route.amount) {
|
|
312
|
+
this.logger.warn({
|
|
313
|
+
context: this.constructor.name,
|
|
314
|
+
origin: route.origin,
|
|
315
|
+
destination: route.destination,
|
|
316
|
+
required: route.amount.toString(),
|
|
317
|
+
available: balance.toString(),
|
|
318
|
+
}, 'Dropping route due to insufficient balance');
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
if (this.tokensByChainName) {
|
|
322
|
+
const token = this.tokensByChainName[route.origin];
|
|
323
|
+
if (token) {
|
|
324
|
+
const bridgeConfig = this.getBridgeConfigForRoute(route.origin, route.destination);
|
|
325
|
+
const minAmount = BigInt(toWei(bridgeConfig.bridgeMinAcceptedAmount, token.decimals));
|
|
326
|
+
if (route.amount < minAmount) {
|
|
327
|
+
this.logger.info({
|
|
328
|
+
context: this.constructor.name,
|
|
329
|
+
origin: route.origin,
|
|
330
|
+
destination: route.destination,
|
|
331
|
+
amount: route.amount.toString(),
|
|
332
|
+
minAmount: minAmount.toString(),
|
|
333
|
+
}, 'Dropping route below bridgeMinAcceptedAmount');
|
|
334
|
+
return false;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return true;
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=BaseStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseStrategy.js","sourceRoot":"","sources":["../../src/strategy/BaseStrategy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAWlD,OAAO,EAGL,mBAAmB,EACnB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAIjC;;GAEG;AACH,MAAM,OAAgB,YAAY;IAEb,MAAM,CAAc;IACpB,OAAO,CAAW;IAClB,MAAM,CAAS;IACf,aAAa,CAAqC;IAClD,iBAAiB,CAAmB;IAEvD,YACE,MAAmB,EACnB,MAAc,EACd,aAAiD,EACjD,OAAiB,EACjB,iBAAmC;QAEnC,yDAAyD;QACzD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAES,uBAAuB,CAC/B,MAAiB,EACjB,WAAsB;QAEtB,OAAO,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,oBAAoB,CAClB,WAAwB,EACxB,eAAiC;QAEjC,MAAM,iBAAiB,GAAG,eAAe,EAAE,iBAAiB,IAAI,EAAE,CAAC;QACnE,MAAM,gBAAgB,GAAG,eAAe,EAAE,gBAAgB,IAAI,EAAE,CAAC;QACjE,MAAM,kBAAkB,GAAG,eAAe,EAAE,kBAAkB,IAAI,EAAE,CAAC;QAErE,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrD,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;aACtB,CAAC,CAAC;YACH,iBAAiB,EAAE,iBAAiB,CAAC,MAAM;YAC3C,gBAAgB,EAAE,gBAAgB,CAAC,MAAM;YACzC,kBAAkB,EAAE,kBAAkB,CAAC,MAAM;SAC9C,EACD,qBAAqB,CACtB,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAEtC,6CAA6C;QAC7C,MAAM,cAAc,GAAG,WAAW,CAAC;QAEnC,wDAAwD;QACxD,uEAAuE;QACvE,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAC9C,WAAW,EACX,gBAAgB,CACjB,CAAC;QAEF,kDAAkD;QAClD,wEAAwE;QACxE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,sBAAsB,CACzD,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,CACnB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;YACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC9B,SAAS;SACV,EACD,sBAAsB,CACvB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;YACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC9B,QAAQ;SACT,EACD,qBAAqB,CACtB,CAAC;QAEF,2CAA2C;QAC3C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,EACtC,EAAE,CACH,CAAC;QACF,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,EACtC,EAAE,CACH,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;YACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC9B,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;SACtC,EACD,0BAA0B,CAC3B,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;YACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC9B,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;SACtC,EACD,0BAA0B,CAC3B,CAAC;QAEF,kFAAkF;QAClF,IAAI,YAAY,GAAG,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;gBACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;gBAC9B,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;gBACrC,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;aACtC,EACD,uDAAuD,CACxD,CAAC;YAEF,8EAA8E;YAC9E,oFAAoF;YACpF,IAAI,CAAC,OAAO,EAAE,uBAAuB,EAAE,CAAC;YAExC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,YAAY,CAAC;gBAEjE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAC7B,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;gBACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;gBAC9B,QAAQ;aACT,EACD,iBAAiB,CAClB,CAAC;QACJ,CAAC;QAED,8EAA8E;QAC9E,mDAAmD;QACnD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,oEAAoE;QACpE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE5B,wEAAwE;YACxE,MAAM,cAAc,GAClB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YAEpE,8EAA8E;YAC9E,IAAI,cAAc,GAAG,EAAE,EAAE,CAAC;gBACxB,yEAAyE;gBACzE,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAC/C,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,CACd,CAAC;gBAEF,wDAAwD;gBACxD,MAAM,CAAC,IAAI,CACT,mBAAmB,CACjB,YAAY,EACZ,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,cAAc,CACf,CACF,CAAC;YACJ,CAAC;YAED,qDAAqD;YACrD,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC;YACjC,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC;YAEjC,yEAAyE;YACzE,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACzB,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC;YAED,6CAA6C;YAC7C,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACzB,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;YACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC9B,MAAM;SACP,EACD,kBAAkB,CACnB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC9B,cAAc,EAAE,MAAM,CAAC,MAAM;SAC9B,EACD,0BAA0B,CAC3B,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAEjE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;YACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC9B,mBAAmB,EAAE,cAAc,CAAC,MAAM;YAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;SACpD,EACD,6BAA6B,CAC9B,CAAC;QAEF,uDAAuD;QACvD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAoBD;;OAEG;IACO,mBAAmB,CAAC,WAAwB;QACpD,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,OAAO,GAAuB,WAAW,CAAC,KAAK,CAAC,CAAC;YAEvD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,YAAY,CAAC,CAAC;YAC9D,CAAC;YAED,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,cAAc,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACO,iBAAiB,CACzB,WAAwB,EACxB,gBAAyB;QAEzB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,QAAQ,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;QAEpC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACzD,+CAA+C;YAC/C,wDAAwD;YACxD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;YAE/D,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;gBACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;gBAC9B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAClC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;aACtD,EACD,0CAA0C,CAC3C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzC,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;aAC5B,CAAC,CAAC;SACJ,EACD,2CAA2C,CAC5C,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACO,yBAAyB,CACjC,WAAwB,EACxB,iBAAqC;QAErC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;QAErC,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;YAC1C,IAAI,SAAS,CAAC,eAAe,KAAK,WAAW,EAAE,CAAC;gBAC9C,2CAA2C;gBAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC/B,MAAM,SAAS,GAAG,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC;gBAClD,MAAM,QAAQ,GAAG,SAAS,CAAC,sBAAsB,IAAI,EAAE,CAAC;gBAExD,qEAAqE;gBACrE,uDAAuD;gBACvD,MAAM,qBAAqB,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;gBAC3D,IAAI,qBAAqB,GAAG,EAAE,EAAE,CAAC;oBAC/B,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;wBAC9B,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,qBAAqB,CAAC;oBAEnE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;wBACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;wBAC9B,WAAW,EAAE,SAAS,CAAC,WAAW;wBAClC,qBAAqB,EAAE,qBAAqB,CAAC,QAAQ,EAAE;qBACxD,EACD,sEAAsE,CACvE,CAAC;gBACJ,CAAC;gBAED,sDAAsD;gBACtD,uDAAuD;gBACvD,MAAM,gBAAgB,GAAG,KAAK,GAAG,SAAS,CAAC;gBAC3C,IAAI,gBAAgB,GAAG,EAAE,EAAE,CAAC;oBAC1B,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;wBACzB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,gBAAgB,CAAC;oBAEzD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;wBACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;wBAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;wBACxB,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,EAAE;qBAC9C,EACD,6DAA6D,CAC9D,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,2EAA2E;gBAC3E,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;oBAC9B,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;gBAE9D,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;oBACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;oBAC9B,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE;iBACpC,EACD,+DAA+D,CAChE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzC,IAAI,EAAE,CAAC,CAAC,MAAM;gBACd,EAAE,EAAE,CAAC,CAAC,WAAW;gBACjB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAC3B,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,oBAAoB;gBAC1D,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,GAAG;gBACrD,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE,IAAI,GAAG;aACpE,CAAC,CAAC;SACJ,EACD,8BAA8B,CAC/B,CAAC;QAEF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;OAWG;IACO,0BAA0B,CAClC,WAAwB,EACxB,kBAA2B;QAE3B,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;QAErC,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;YAC3C,mDAAmD;YACnD,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;gBACzB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;YAEzD,qBAAqB;YACrB,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;gBAC9B,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;YAE9D,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;gBACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;gBAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE;aACpC,EACD,sEAAsE,CACvE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1C,IAAI,EAAE,CAAC,CAAC,MAAM;gBACd,EAAE,EAAE,CAAC,CAAC,WAAW;gBACjB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;aAC5B,CAAC,CAAC;SACJ,EACD,+BAA+B,CAChC,CAAC;QAEF,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,YAAY,CACpB,MAAuB,EACvB,cAA2B;QAE3B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;oBACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;oBAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;oBACjC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE;iBAC9B,EACD,4CAA4C,CAC7C,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAC/C,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,WAAW,CAClB,CAAC;oBACF,MAAM,SAAS,GAAG,MAAM,CACtB,KAAK,CAAC,YAAY,CAAC,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAC5D,CAAC;oBACF,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;wBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;4BACE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;4BAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,WAAW,EAAE,KAAK,CAAC,WAAW;4BAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;4BAC/B,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;yBAChC,EACD,8CAA8C,CAC/C,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Logger } from 'pino';
|
|
2
|
+
import { type ChainMap, type Token } from '@humanode-hyperlane/sdk';
|
|
3
|
+
import { type CollateralDeficitStrategyConfig, RebalancerStrategyOptions } from '../config/types.js';
|
|
4
|
+
import type { InflightContext, RawBalances, Route, StrategyRoute } from '../interfaces/IStrategy.js';
|
|
5
|
+
import { Metrics } from '../metrics/Metrics.js';
|
|
6
|
+
import { type BridgeConfigWithOverride } from '../utils/bridgeUtils.js';
|
|
7
|
+
import { BaseStrategy, type Delta } from './BaseStrategy.js';
|
|
8
|
+
/**
|
|
9
|
+
* Strategy that detects collateral deficits (negative effective balances)
|
|
10
|
+
* and proposes JIT rebalances using fast bridges.
|
|
11
|
+
*
|
|
12
|
+
* Logic:
|
|
13
|
+
* 1. Filter pendingRebalances to only those using this strategy's configured bridges
|
|
14
|
+
* 2. Simulate filtered pending rebalances to get projected balances
|
|
15
|
+
* 3. Negative simulated balance = deficit (magnitude + buffer)
|
|
16
|
+
* 4. Positive simulated balance = potential surplus
|
|
17
|
+
*/
|
|
18
|
+
export declare class CollateralDeficitStrategy extends BaseStrategy {
|
|
19
|
+
readonly name = RebalancerStrategyOptions.CollateralDeficit;
|
|
20
|
+
private readonly config;
|
|
21
|
+
protected readonly logger: Logger;
|
|
22
|
+
constructor(config: CollateralDeficitStrategyConfig, tokensByChainName: ChainMap<Token>, logger: Logger, bridgeConfigs: ChainMap<BridgeConfigWithOverride>, metrics?: Metrics);
|
|
23
|
+
/**
|
|
24
|
+
* Categorizes balances into surpluses and deficits.
|
|
25
|
+
*
|
|
26
|
+
* 1. Filter pendingRebalances/proposedRebalances by configured bridges
|
|
27
|
+
* 2. Simulate those rebalances to get projected balances
|
|
28
|
+
* 3. Negative balance = deficit (magnitude + buffer)
|
|
29
|
+
* 4. Positive balance = potential surplus
|
|
30
|
+
*/
|
|
31
|
+
protected getCategorizedBalances(rawBalances: RawBalances, pendingRebalances?: Route[], proposedRebalances?: StrategyRoute[]): {
|
|
32
|
+
surpluses: Delta[];
|
|
33
|
+
deficits: Delta[];
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Override to prefer transfer origins when selecting surplus chains.
|
|
37
|
+
*
|
|
38
|
+
* When a user transfer creates a deficit, the origin chain of that transfer
|
|
39
|
+
* is the natural source of funds (user deposited there). This prevents
|
|
40
|
+
* unnecessarily draining the largest balance (typically ethereum at 70%).
|
|
41
|
+
*/
|
|
42
|
+
getRebalancingRoutes(rawBalances: RawBalances, inflightContext?: InflightContext): StrategyRoute[];
|
|
43
|
+
/**
|
|
44
|
+
* Filter pending rebalances to only those using this strategy's configured bridges.
|
|
45
|
+
* A rebalance matches if:
|
|
46
|
+
* - Its bridge matches the configured bridge (with overrides) for the route, OR
|
|
47
|
+
* - It has no bridge (recovered from Explorer, can't verify - include to be safe)
|
|
48
|
+
*/
|
|
49
|
+
private filterByConfiguredBridges;
|
|
50
|
+
/**
|
|
51
|
+
* Build a map from deficit chains to their transfer origin chains.
|
|
52
|
+
* This identifies which surplus chains are "natural" sources for each deficit.
|
|
53
|
+
*/
|
|
54
|
+
private buildTransferOriginMap;
|
|
55
|
+
/**
|
|
56
|
+
* Sort surpluses to prefer transfer origins over largest balances.
|
|
57
|
+
*
|
|
58
|
+
* Sorting priority:
|
|
59
|
+
* 1. Chains that are origins of transfers TO any deficit chain (preferred)
|
|
60
|
+
* 2. By amount descending (tiebreaker)
|
|
61
|
+
*/
|
|
62
|
+
private sortSurplusesWithOriginPreference;
|
|
63
|
+
protected getTokenByChainName(chainName: string): Token;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=CollateralDeficitStrategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollateralDeficitStrategy.d.ts","sourceRoot":"","sources":["../../src/strategy/CollateralDeficitStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,KAAK,EACX,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,KAAK,+BAA+B,EACpC,yBAAyB,EAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,KAAK,EACL,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,KAAK,wBAAwB,EAI9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;;;;;;;GASG;AACH,qBAAa,yBAA0B,SAAQ,YAAY;IACzD,QAAQ,CAAC,IAAI,+CAA+C;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGhC,MAAM,EAAE,+BAA+B,EACvC,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EACjD,OAAO,CAAC,EAAE,OAAO;IAUnB;;;;;;;OAOG;IACH,SAAS,CAAC,sBAAsB,CAC9B,WAAW,EAAE,WAAW,EACxB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAC3B,kBAAkB,CAAC,EAAE,aAAa,EAAE,GACnC;QACD,SAAS,EAAE,KAAK,EAAE,CAAC;QACnB,QAAQ,EAAE,KAAK,EAAE,CAAC;KACnB;IA4ED;;;;;;OAMG;IACM,oBAAoB,CAC3B,WAAW,EAAE,WAAW,EACxB,eAAe,CAAC,EAAE,eAAe,GAChC,aAAa,EAAE;IAiJlB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAoCjC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;;;;;OAMG;IACH,OAAO,CAAC,iCAAiC;IAoCzC,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK;CAOxD"}
|