@humanode-hyperlane/rebalancer 0.0.0-stage → 27.2.2
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,201 @@
|
|
|
1
|
+
import type { Logger } from 'pino';
|
|
2
|
+
import { type ChainName, type MultiProvider, type WarpCore } from '@humanode-hyperlane/sdk';
|
|
3
|
+
import { ProtocolType } from '@humanode-hyperlane/utils';
|
|
4
|
+
import type { ExternalBridgeRegistry } from '../interfaces/IExternalBridge.js';
|
|
5
|
+
import type { IInventoryRebalancer, InventoryExecutionResult, RebalancerType } from '../interfaces/IRebalancer.js';
|
|
6
|
+
import type { InventoryRoute } from '../interfaces/IStrategy.js';
|
|
7
|
+
import type { IActionTracker } from '../tracking/IActionTracker.js';
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for the InventoryRebalancer.
|
|
10
|
+
*/
|
|
11
|
+
export interface InventorySignerConfig {
|
|
12
|
+
/** Signer address for this protocol */
|
|
13
|
+
address: string;
|
|
14
|
+
/** Private key for signing (optional - absent in monitor-only mode) */
|
|
15
|
+
key?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface InventoryRebalancerConfig {
|
|
18
|
+
/** Signer config per protocol (address + optional key) */
|
|
19
|
+
inventorySigners: Partial<Record<ProtocolType, InventorySignerConfig>>;
|
|
20
|
+
/** Chains configured for inventory-based rebalancing (for validation) */
|
|
21
|
+
inventoryChains: ChainName[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Executes inventory-based rebalances for chains that don't support MovableCollateralRouter.
|
|
25
|
+
*
|
|
26
|
+
* IMPORTANT: transferRemote ADDS collateral to the ORIGIN chain (where it's called FROM).
|
|
27
|
+
* So for a strategy route "base (surplus) → arbitrum (deficit)", we must:
|
|
28
|
+
* 1. Ensure inventory is available on the DESTINATION (deficit) chain - arbitrum
|
|
29
|
+
* 2. Call transferRemote FROM arbitrum TO base
|
|
30
|
+
* 3. This ADDS collateral to arbitrum (filling deficit) and releases from base (has surplus)
|
|
31
|
+
*
|
|
32
|
+
* The flow is:
|
|
33
|
+
* 1. Check if inventory is available on the destination (deficit) chain
|
|
34
|
+
* 2. If available, execute transferRemote from destination to origin (swapped direction)
|
|
35
|
+
* 3. If not available, bridge inventory to destination via LiFi, then execute transferRemote
|
|
36
|
+
*
|
|
37
|
+
* Actions created:
|
|
38
|
+
* - `inventory_movement`: LiFi bridge to move inventory to deficit chain
|
|
39
|
+
* - `inventory_deposit`: transferRemote to deposit collateral on deficit chain
|
|
40
|
+
*/
|
|
41
|
+
export declare class InventoryRebalancer implements IInventoryRebalancer {
|
|
42
|
+
readonly rebalancerType: RebalancerType;
|
|
43
|
+
private readonly logger;
|
|
44
|
+
private readonly config;
|
|
45
|
+
private readonly actionTracker;
|
|
46
|
+
private readonly externalBridgeRegistry;
|
|
47
|
+
private readonly warpCore;
|
|
48
|
+
private readonly multiProvider;
|
|
49
|
+
/**
|
|
50
|
+
* Internal balance storage for inventory tracking.
|
|
51
|
+
* Updated via setInventoryBalances() before each rebalance cycle.
|
|
52
|
+
*/
|
|
53
|
+
private inventoryBalances;
|
|
54
|
+
/**
|
|
55
|
+
* Tracks inventory consumed during the current execution cycle.
|
|
56
|
+
* Cleared at the start of each execute() call.
|
|
57
|
+
* Used to prevent over-execution when multiple routes withdraw from the same chain.
|
|
58
|
+
*/
|
|
59
|
+
private consumedInventory;
|
|
60
|
+
constructor(config: InventoryRebalancerConfig, actionTracker: IActionTracker, externalBridgeRegistry: Partial<ExternalBridgeRegistry>, warpCore: WarpCore, multiProvider: MultiProvider, logger: Logger);
|
|
61
|
+
/**
|
|
62
|
+
* Get bridge instance by type from registry.
|
|
63
|
+
* Throws if bridge type not found.
|
|
64
|
+
*/
|
|
65
|
+
private getExternalBridge;
|
|
66
|
+
private getNativeTokenAddress;
|
|
67
|
+
/**
|
|
68
|
+
* Validate that tokens on inventory chains are collateral-backed.
|
|
69
|
+
* Only checks tokens for chains configured with inventory-based rebalancing.
|
|
70
|
+
* Throws an error if any synthetic tokens are found on inventory chains.
|
|
71
|
+
*/
|
|
72
|
+
private validateCollateralBackedTokens;
|
|
73
|
+
/**
|
|
74
|
+
* Get the token for a specific chain from WarpCore.
|
|
75
|
+
*/
|
|
76
|
+
private getTokenForChain;
|
|
77
|
+
private getProtocolForChain;
|
|
78
|
+
private getInventorySignerAddress;
|
|
79
|
+
/**
|
|
80
|
+
* Set inventory balances from external source.
|
|
81
|
+
* Called before each rebalance cycle to update internal state.
|
|
82
|
+
*/
|
|
83
|
+
setInventoryBalances(balances: Record<ChainName, bigint>): void;
|
|
84
|
+
/**
|
|
85
|
+
* Get available inventory for a chain.
|
|
86
|
+
* Returns 0n for unknown chains.
|
|
87
|
+
*/
|
|
88
|
+
private getAvailableInventory;
|
|
89
|
+
/**
|
|
90
|
+
* Get all inventory balances.
|
|
91
|
+
*/
|
|
92
|
+
private getBalances;
|
|
93
|
+
/**
|
|
94
|
+
* Calculate total inventory across all chains, excluding specified chains.
|
|
95
|
+
*/
|
|
96
|
+
private getTotalInventory;
|
|
97
|
+
/**
|
|
98
|
+
* Get the effective available inventory for a chain, accounting for
|
|
99
|
+
* inventory already consumed during this execution cycle.
|
|
100
|
+
*
|
|
101
|
+
* This prevents over-execution when multiple routes withdraw from the same chain.
|
|
102
|
+
*
|
|
103
|
+
* @param chain - The chain to check inventory for
|
|
104
|
+
* @returns Effective available inventory (cached - consumed)
|
|
105
|
+
*/
|
|
106
|
+
private getEffectiveAvailableInventory;
|
|
107
|
+
/**
|
|
108
|
+
* Execute inventory-based rebalances for the given routes.
|
|
109
|
+
*
|
|
110
|
+
* Single-intent architecture:
|
|
111
|
+
* 1. Check for existing in_progress intent
|
|
112
|
+
* 2. If exists, continue existing intent (ignores new routes)
|
|
113
|
+
* 3. If not, take only the FIRST route and create a single intent
|
|
114
|
+
*/
|
|
115
|
+
rebalance(routes: InventoryRoute[]): Promise<InventoryExecutionResult[]>;
|
|
116
|
+
/**
|
|
117
|
+
* Get the single active inventory intent (if any).
|
|
118
|
+
* Returns null if no in_progress inventory intent exists.
|
|
119
|
+
*/
|
|
120
|
+
private getActiveInventoryIntent;
|
|
121
|
+
/**
|
|
122
|
+
* Continue execution of an existing partial intent.
|
|
123
|
+
* Uses the pre-computed remaining amount from PartialInventoryIntent.
|
|
124
|
+
*/
|
|
125
|
+
private continueIntent;
|
|
126
|
+
/**
|
|
127
|
+
* Execute a single inventory route.
|
|
128
|
+
*
|
|
129
|
+
* Strategy provides: origin (surplus) → destination (deficit)
|
|
130
|
+
* "Move collateral FROM origin TO destination"
|
|
131
|
+
*
|
|
132
|
+
* IMPORTANT: transferRemote ADDS collateral to the chain it's called FROM.
|
|
133
|
+
* So to fill the deficit on destination, we must:
|
|
134
|
+
* - Call transferRemote FROM destination TO origin (SWAPPED direction)
|
|
135
|
+
* - This ADDS to destination (deficit filled!) and RELEASES from origin (has surplus)
|
|
136
|
+
*
|
|
137
|
+
* Execution flow:
|
|
138
|
+
* 1. Check inventory on DESTINATION (deficit chain) - need funds there to call transferRemote
|
|
139
|
+
* 2. If low, LiFi bridge TO destination
|
|
140
|
+
* 3. Call transferRemote FROM destination TO origin (swapped)
|
|
141
|
+
*/
|
|
142
|
+
private executeRoute;
|
|
143
|
+
/**
|
|
144
|
+
* Execute a transferRemote to deposit collateral.
|
|
145
|
+
*
|
|
146
|
+
* IMPORTANT: The route passed here has SWAPPED direction from the strategy route.
|
|
147
|
+
* - route.origin = the deficit chain (where transferRemote is called FROM)
|
|
148
|
+
* - route.destination = the surplus chain (where Hyperlane message goes TO)
|
|
149
|
+
*
|
|
150
|
+
* transferRemote mechanics:
|
|
151
|
+
* - Calls _transferFromSender() which ADDS collateral to route.origin
|
|
152
|
+
* - Sends Hyperlane message to route.destination to RELEASE collateral
|
|
153
|
+
*
|
|
154
|
+
* @param route - The transfer route (swapped direction)
|
|
155
|
+
* @param intent - The rebalance intent being executed
|
|
156
|
+
* @param gasQuote - Pre-calculated gas quote from calculateTransferCosts
|
|
157
|
+
*/
|
|
158
|
+
private executeTransferRemote;
|
|
159
|
+
private sendAndConfirmInventoryTx;
|
|
160
|
+
private buildSignerAccountConfig;
|
|
161
|
+
protected extractDispatchedMessageId(origin: ChainName, txHash: string): Promise<string | undefined>;
|
|
162
|
+
private getTransactionReceipt;
|
|
163
|
+
/**
|
|
164
|
+
* Select all source chains with available inventory for bridging.
|
|
165
|
+
* Returns sources sorted by available amount (highest first).
|
|
166
|
+
*/
|
|
167
|
+
private selectAllSourceChains;
|
|
168
|
+
/**
|
|
169
|
+
* Calculate the maximum amount that can be bridged from a source chain.
|
|
170
|
+
* Uses LiFi quote to determine gas costs, applies 20x multiplier buffer.
|
|
171
|
+
* Returns 0 if gas exceeds 10% of inventory (not economically viable).
|
|
172
|
+
*
|
|
173
|
+
* This is the key method for the gas-aware planning approach:
|
|
174
|
+
* - Gets a quote for the full raw inventory to determine actual gas costs
|
|
175
|
+
* - Applies conservative 20x buffer (LiFi underestimates by ~14x historically)
|
|
176
|
+
* - Returns 0 if gas > 10% of inventory (not worth bridging)
|
|
177
|
+
* - Returns inventory - estimatedGas if viable
|
|
178
|
+
*
|
|
179
|
+
* @param sourceChain - Chain to bridge from
|
|
180
|
+
* @param targetChain - Chain to bridge to
|
|
181
|
+
* @param rawInventory - Raw available inventory on source chain
|
|
182
|
+
* @param externalBridgeType - External bridge type to use
|
|
183
|
+
* @returns Maximum viable bridge amount (0 if not viable)
|
|
184
|
+
*/
|
|
185
|
+
private calculateMaxViableBridgeAmount;
|
|
186
|
+
/**
|
|
187
|
+
* Execute inventory movement from source chain to target chain via LiFi bridge.
|
|
188
|
+
*
|
|
189
|
+
* IMPORTANT: The amount parameter is now the MAX VIABLE amount (gas already subtracted
|
|
190
|
+
* by calculateMaxViableBridgeAmount). This method trusts that the amount is pre-validated.
|
|
191
|
+
*
|
|
192
|
+
* @param sourceChain - Chain to move inventory from
|
|
193
|
+
* @param targetChain - Chain to move inventory to (origin chain for rebalancing)
|
|
194
|
+
* @param amount - Pre-validated amount to bridge (gas already accounted for)
|
|
195
|
+
* @param intent - Rebalance intent for tracking
|
|
196
|
+
* @param externalBridgeType - External bridge type to use
|
|
197
|
+
* @returns Result with success status and optional txHash/error
|
|
198
|
+
*/
|
|
199
|
+
private executeInventoryMovement;
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=InventoryRebalancer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InventoryRebalancer.d.ts","sourceRoot":"","sources":["../../src/core/InventoryRebalancer.ts"],"names":[],"mappings":"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"}
|