@humanode-hyperlane/rebalancer 27.2.2-humanode.1 → 1029.1.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/bridges/LiFiBridge.d.ts +3 -3
- package/dist/bridges/LiFiBridge.d.ts.map +1 -1
- package/dist/bridges/LiFiBridge.js +66 -55
- package/dist/bridges/LiFiBridge.js.map +1 -1
- package/dist/bridges/LiFiBridge.test.js +213 -0
- package/dist/bridges/LiFiBridge.test.js.map +1 -1
- package/dist/config/RebalancerConfig.d.ts +4 -3
- package/dist/config/RebalancerConfig.d.ts.map +1 -1
- package/dist/config/RebalancerConfig.js +7 -5
- package/dist/config/RebalancerConfig.js.map +1 -1
- package/dist/config/RebalancerConfig.test.js +278 -2
- package/dist/config/RebalancerConfig.test.js.map +1 -1
- package/dist/config/types.d.ts +707 -2664
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +62 -7
- package/dist/config/types.js.map +1 -1
- package/dist/core/InventoryRebalancer.d.ts +13 -19
- package/dist/core/InventoryRebalancer.d.ts.map +1 -1
- package/dist/core/InventoryRebalancer.js +404 -276
- package/dist/core/InventoryRebalancer.js.map +1 -1
- package/dist/core/InventoryRebalancer.test.js +814 -25
- package/dist/core/InventoryRebalancer.test.js.map +1 -1
- package/dist/core/Rebalancer.d.ts.map +1 -1
- package/dist/core/Rebalancer.js +12 -6
- package/dist/core/Rebalancer.js.map +1 -1
- package/dist/core/Rebalancer.test.js +51 -0
- package/dist/core/Rebalancer.test.js.map +1 -1
- package/dist/core/RebalancerOrchestrator.d.ts.map +1 -1
- package/dist/core/RebalancerOrchestrator.test.js +0 -1
- package/dist/core/RebalancerOrchestrator.test.js.map +1 -1
- package/dist/core/RebalancerService.d.ts.map +1 -1
- package/dist/core/RebalancerService.js +3 -2
- package/dist/core/RebalancerService.js.map +1 -1
- package/dist/core/RebalancerService.test.js +24 -0
- package/dist/core/RebalancerService.test.js.map +1 -1
- package/dist/e2e/fixtures/routes.d.ts +3 -3
- package/dist/e2e/fixtures/routes.d.ts.map +1 -1
- package/dist/e2e/harness/BaseLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/BaseLocalDeploymentManager.js +3 -2
- package/dist/e2e/harness/BaseLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/Erc20LocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/ForkIndexer.d.ts.map +1 -1
- package/dist/e2e/harness/ForkIndexer.js.map +1 -1
- package/dist/e2e/harness/LocalProvider.d.ts +3 -0
- package/dist/e2e/harness/LocalProvider.d.ts.map +1 -0
- package/dist/e2e/harness/LocalProvider.js +9 -0
- package/dist/e2e/harness/LocalProvider.js.map +1 -0
- package/dist/e2e/harness/LocalProvider.test.d.ts +2 -0
- package/dist/e2e/harness/LocalProvider.test.d.ts.map +1 -0
- package/dist/e2e/harness/LocalProvider.test.js +14 -0
- package/dist/e2e/harness/LocalProvider.test.js.map +1 -0
- package/dist/e2e/harness/MixedLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/MixedLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/MockExplorerClient.d.ts.map +1 -1
- package/dist/e2e/harness/MockExplorerClient.js.map +1 -1
- package/dist/e2e/harness/MockExternalBridge.d.ts.map +1 -1
- package/dist/e2e/harness/MockExternalBridge.js.map +1 -1
- package/dist/e2e/harness/NativeLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/NativeLocalDeploymentManager.js +2 -1
- package/dist/e2e/harness/NativeLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/SnapshotHelper.d.ts.map +1 -1
- package/dist/e2e/harness/SnapshotHelper.js +3 -5
- package/dist/e2e/harness/SnapshotHelper.js.map +1 -1
- package/dist/e2e/harness/TestHelpers.js +1 -2
- package/dist/e2e/harness/TestHelpers.js.map +1 -1
- package/dist/e2e/harness/TestRebalancer.d.ts +5 -1
- package/dist/e2e/harness/TestRebalancer.d.ts.map +1 -1
- package/dist/e2e/harness/TestRebalancer.js +14 -4
- package/dist/e2e/harness/TestRebalancer.js.map +1 -1
- package/dist/e2e/relayer-denylist.e2e-test.d.ts +2 -0
- package/dist/e2e/relayer-denylist.e2e-test.d.ts.map +1 -0
- package/dist/e2e/relayer-denylist.e2e-test.js +388 -0
- package/dist/e2e/relayer-denylist.e2e-test.js.map +1 -0
- package/dist/factories/RebalancerContextFactory.d.ts.map +1 -1
- package/dist/factories/RebalancerContextFactory.js +61 -31
- package/dist/factories/RebalancerContextFactory.js.map +1 -1
- package/dist/factories/RebalancerContextFactory.test.js +336 -5
- package/dist/factories/RebalancerContextFactory.test.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/IRebalancer.d.ts +4 -2
- package/dist/interfaces/IRebalancer.d.ts.map +1 -1
- package/dist/metrics/Metrics.d.ts.map +1 -1
- package/dist/metrics/Metrics.js +1 -1
- package/dist/metrics/Metrics.js.map +1 -1
- package/dist/metrics/PriceGetter.d.ts +1 -0
- package/dist/metrics/PriceGetter.d.ts.map +1 -1
- package/dist/metrics/PriceGetter.js +14 -4
- package/dist/metrics/PriceGetter.js.map +1 -1
- package/dist/metrics/PriceGetter.test.d.ts +2 -0
- package/dist/metrics/PriceGetter.test.d.ts.map +1 -0
- package/dist/metrics/PriceGetter.test.js +84 -0
- package/dist/metrics/PriceGetter.test.js.map +1 -0
- package/dist/metrics/scripts/metrics.d.ts +4 -4
- package/dist/monitor/Monitor.d.ts +1 -0
- package/dist/monitor/Monitor.d.ts.map +1 -1
- package/dist/monitor/Monitor.js +55 -46
- package/dist/monitor/Monitor.js.map +1 -1
- package/dist/monitor/Monitor.test.d.ts +2 -0
- package/dist/monitor/Monitor.test.d.ts.map +1 -0
- package/dist/monitor/Monitor.test.js +346 -0
- package/dist/monitor/Monitor.test.js.map +1 -0
- package/dist/service.d.ts +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +9 -5
- package/dist/service.js.map +1 -1
- package/dist/strategy/BaseStrategy.d.ts.map +1 -1
- package/dist/strategy/BaseStrategy.js +13 -11
- package/dist/strategy/BaseStrategy.js.map +1 -1
- package/dist/strategy/CollateralDeficitStrategy.d.ts.map +1 -1
- package/dist/strategy/CollateralDeficitStrategy.js +2 -2
- package/dist/strategy/CollateralDeficitStrategy.js.map +1 -1
- package/dist/strategy/CompositeStrategy.d.ts.map +1 -1
- package/dist/strategy/CompositeStrategy.js.map +1 -1
- package/dist/strategy/CompositeStrategy.test.js.map +1 -1
- package/dist/strategy/MinAmountStrategy.d.ts +1 -0
- package/dist/strategy/MinAmountStrategy.d.ts.map +1 -1
- package/dist/strategy/MinAmountStrategy.js +12 -8
- package/dist/strategy/MinAmountStrategy.js.map +1 -1
- package/dist/strategy/MinAmountStrategy.test.js +189 -2
- package/dist/strategy/MinAmountStrategy.test.js.map +1 -1
- package/dist/strategy/StrategyFactory.d.ts.map +1 -1
- package/dist/strategy/StrategyFactory.js.map +1 -1
- package/dist/strategy/WeightedStrategy.d.ts.map +1 -1
- package/dist/test/helpers.d.ts +11 -3
- package/dist/test/helpers.d.ts.map +1 -1
- package/dist/test/helpers.js +9 -11
- package/dist/test/helpers.js.map +1 -1
- package/dist/test/lifiMocks.d.ts +6 -6
- package/dist/test/lifiMocks.d.ts.map +1 -1
- package/dist/test/lifiMocks.js +5 -2
- package/dist/test/lifiMocks.js.map +1 -1
- package/dist/test/pendingTransferMiddlewareMocks.d.ts +17 -0
- package/dist/test/pendingTransferMiddlewareMocks.d.ts.map +1 -0
- package/dist/test/pendingTransferMiddlewareMocks.js +43 -0
- package/dist/test/pendingTransferMiddlewareMocks.js.map +1 -0
- package/dist/tracking/ActionTracker.d.ts +4 -0
- package/dist/tracking/ActionTracker.d.ts.map +1 -1
- package/dist/tracking/ActionTracker.js +76 -9
- package/dist/tracking/ActionTracker.js.map +1 -1
- package/dist/tracking/ActionTracker.test.js +418 -1
- package/dist/tracking/ActionTracker.test.js.map +1 -1
- package/dist/tracking/IActionTracker.d.ts +4 -2
- package/dist/tracking/IActionTracker.d.ts.map +1 -1
- package/dist/tracking/InflightContextAdapter.d.ts.map +1 -1
- package/dist/tracking/InflightContextAdapter.js.map +1 -1
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.d.ts +64 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.js +474 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.js +1168 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.d.ts +61 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.js +160 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.js +369 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.d.ts +60 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.js +288 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.js +606 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.d.ts +25 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.js +41 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.js +141 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.d.ts +12 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.js +29 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.d.ts +59 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.js +661 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.js +1093 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/types.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/types.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/types.js +4 -0
- package/dist/tracking/pendingTransferMiddlewares/types.js.map +1 -0
- package/dist/tracking/store/InMemoryStore.d.ts.map +1 -1
- package/dist/utils/ExplorerClient.d.ts +1 -0
- package/dist/utils/ExplorerClient.d.ts.map +1 -1
- package/dist/utils/ExplorerClient.js +8 -3
- package/dist/utils/ExplorerClient.js.map +1 -1
- package/dist/utils/ExplorerClient.test.js +25 -0
- package/dist/utils/ExplorerClient.test.js.map +1 -1
- package/dist/utils/balanceUtils.d.ts +7 -1
- package/dist/utils/balanceUtils.d.ts.map +1 -1
- package/dist/utils/balanceUtils.js +39 -1
- package/dist/utils/balanceUtils.js.map +1 -1
- package/dist/utils/balanceUtils.test.js +55 -1
- package/dist/utils/balanceUtils.test.js.map +1 -1
- package/dist/utils/blockTag.d.ts +5 -4
- package/dist/utils/blockTag.d.ts.map +1 -1
- package/dist/utils/blockTag.js +26 -10
- package/dist/utils/blockTag.js.map +1 -1
- package/dist/utils/blockTag.test.d.ts +2 -0
- package/dist/utils/blockTag.test.d.ts.map +1 -0
- package/dist/utils/blockTag.test.js +132 -0
- package/dist/utils/blockTag.test.js.map +1 -0
- package/dist/utils/bridgeUtils.js.map +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/gasEstimation.d.ts +2 -1
- package/dist/utils/gasEstimation.d.ts.map +1 -1
- package/dist/utils/gasEstimation.js +16 -13
- package/dist/utils/gasEstimation.js.map +1 -1
- package/dist/utils/gasEstimation.test.d.ts +2 -0
- package/dist/utils/gasEstimation.test.d.ts.map +1 -0
- package/dist/utils/gasEstimation.test.js +104 -0
- package/dist/utils/gasEstimation.test.js.map +1 -0
- package/dist/utils/tokenUtils.d.ts.map +1 -1
- package/dist/utils/tokenUtils.js +5 -2
- package/dist/utils/tokenUtils.js.map +1 -1
- package/package.json +23 -22
- package/src/bridges/LiFiBridge.test.ts +270 -0
- package/src/bridges/LiFiBridge.ts +90 -71
- package/src/config/RebalancerConfig.test.ts +315 -1
- package/src/config/RebalancerConfig.ts +6 -3
- package/src/config/types.ts +98 -8
- package/src/core/InventoryRebalancer.test.ts +1092 -38
- package/src/core/InventoryRebalancer.ts +584 -351
- package/src/core/Rebalancer.test.ts +84 -0
- package/src/core/Rebalancer.ts +22 -6
- package/src/core/RebalancerOrchestrator.test.ts +0 -1
- package/src/core/RebalancerService.test.ts +35 -0
- package/src/core/RebalancerService.ts +3 -2
- package/src/e2e/harness/BaseLocalDeploymentManager.ts +3 -1
- package/src/e2e/harness/LocalProvider.test.ts +16 -0
- package/src/e2e/harness/LocalProvider.ts +10 -0
- package/src/e2e/harness/NativeLocalDeploymentManager.ts +2 -1
- package/src/e2e/harness/SnapshotHelper.ts +2 -5
- package/src/e2e/harness/TestHelpers.ts +3 -3
- package/src/e2e/harness/TestRebalancer.ts +21 -1
- package/src/e2e/relayer-denylist.e2e-test.ts +558 -0
- package/src/factories/RebalancerContextFactory.test.ts +489 -8
- package/src/factories/RebalancerContextFactory.ts +86 -36
- package/src/index.ts +2 -0
- package/src/interfaces/IRebalancer.ts +4 -1
- package/src/metrics/Metrics.ts +1 -0
- package/src/metrics/PriceGetter.test.ts +113 -0
- package/src/metrics/PriceGetter.ts +18 -3
- package/src/monitor/Monitor.test.ts +408 -0
- package/src/monitor/Monitor.ts +123 -97
- package/src/service.ts +14 -8
- package/src/strategy/BaseStrategy.ts +18 -15
- package/src/strategy/CollateralDeficitStrategy.ts +4 -3
- package/src/strategy/MinAmountStrategy.test.ts +238 -2
- package/src/strategy/MinAmountStrategy.ts +29 -17
- package/src/test/helpers.ts +13 -12
- package/src/test/lifiMocks.ts +5 -2
- package/src/test/pendingTransferMiddlewareMocks.ts +65 -0
- package/src/tracking/ActionTracker.test.ts +635 -3
- package/src/tracking/ActionTracker.ts +92 -12
- package/src/tracking/IActionTracker.ts +4 -2
- package/src/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.ts +1693 -0
- package/src/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.ts +784 -0
- package/src/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.ts +554 -0
- package/src/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.ts +233 -0
- package/src/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.ts +894 -0
- package/src/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.ts +404 -0
- package/src/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.ts +205 -0
- package/src/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.ts +89 -0
- package/src/tracking/pendingTransferMiddlewares/fixtures/mainnet-denylist.json +3556 -0
- package/src/tracking/pendingTransferMiddlewares/matchBody.ts +43 -0
- package/src/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.ts +1220 -0
- package/src/tracking/pendingTransferMiddlewares/relayerDenylistRules.ts +934 -0
- package/src/tracking/pendingTransferMiddlewares/types.ts +3 -0
- package/src/utils/ExplorerClient.test.ts +42 -0
- package/src/utils/ExplorerClient.ts +14 -3
- package/src/utils/balanceUtils.test.ts +87 -1
- package/src/utils/balanceUtils.ts +73 -2
- package/src/utils/blockTag.test.ts +173 -0
- package/src/utils/blockTag.ts +35 -15
- package/src/utils/gasEstimation.test.ts +192 -0
- package/src/utils/gasEstimation.ts +17 -11
- package/src/utils/tokenUtils.ts +5 -2
|
@@ -19,6 +19,7 @@ import type {
|
|
|
19
19
|
CreateRebalanceIntentParams,
|
|
20
20
|
IActionTracker,
|
|
21
21
|
} from './IActionTracker.js';
|
|
22
|
+
import { ExplorerRowLimitError } from './pendingTransferMiddlewares/PendingTransferMiddleware.js';
|
|
22
23
|
import type {
|
|
23
24
|
ActionType,
|
|
24
25
|
IRebalanceActionStore,
|
|
@@ -30,8 +31,13 @@ import type {
|
|
|
30
31
|
Transfer,
|
|
31
32
|
} from './types.js';
|
|
32
33
|
|
|
34
|
+
export const TRANSFER_SYNC_ROW_LIMIT_MESSAGE =
|
|
35
|
+
'Transfer sync hit the Explorer row limit';
|
|
36
|
+
|
|
33
37
|
export interface ActionTrackerConfig {
|
|
34
38
|
routersByDomain: Record<number, string>; // Domain ID → router address (source of truth for routers and domains)
|
|
39
|
+
isIgnoredTransfer?: (messageId: string) => boolean; // True when a pending-transfer middleware ignored the message on the latest Explorer query
|
|
40
|
+
isIgnoredRebalanceAction?: (messageId: string) => boolean; // True when a pending-transfer middleware ignores the rebalance message
|
|
35
41
|
bridges: Address[]; // Bridge contract addresses for rebalance action queries
|
|
36
42
|
rebalancerAddress: Address;
|
|
37
43
|
inventorySignerAddresses?: Address[]; // Optional - for excluding inventory signers from user transfers query
|
|
@@ -86,6 +92,7 @@ export class ActionTracker implements IActionTracker {
|
|
|
86
92
|
|
|
87
93
|
// 2. For each message, create synthetic intent + action
|
|
88
94
|
for (const msg of inflightMessages) {
|
|
95
|
+
if (this.isIgnoredRebalanceMessage(msg)) continue;
|
|
89
96
|
await this.recoverAction(msg);
|
|
90
97
|
}
|
|
91
98
|
|
|
@@ -111,13 +118,24 @@ export class ActionTracker implements IActionTracker {
|
|
|
111
118
|
excludeTxSenders.push(...this.config.inventorySignerAddresses);
|
|
112
119
|
}
|
|
113
120
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
+
let inflightMessages: ExplorerMessage[];
|
|
122
|
+
try {
|
|
123
|
+
inflightMessages = await this.explorerClient.getInflightUserTransfers(
|
|
124
|
+
{
|
|
125
|
+
routersByDomain: this.config.routersByDomain,
|
|
126
|
+
excludeTxSenders,
|
|
127
|
+
},
|
|
128
|
+
this.logger,
|
|
129
|
+
);
|
|
130
|
+
} catch (error: unknown) {
|
|
131
|
+
if (error instanceof ExplorerRowLimitError) {
|
|
132
|
+
this.logger.error(
|
|
133
|
+
{ error: error.message },
|
|
134
|
+
TRANSFER_SYNC_ROW_LIMIT_MESSAGE,
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
121
139
|
|
|
122
140
|
this.logger.debug(
|
|
123
141
|
{ count: inflightMessages.length },
|
|
@@ -126,6 +144,7 @@ export class ActionTracker implements IActionTracker {
|
|
|
126
144
|
|
|
127
145
|
let newTransfers = 0;
|
|
128
146
|
let completedTransfers = 0;
|
|
147
|
+
let ignoredTransfers = 0;
|
|
129
148
|
|
|
130
149
|
for (const msg of inflightMessages) {
|
|
131
150
|
const transfer = await this.transferStore.get(msg.msg_id);
|
|
@@ -180,8 +199,14 @@ export class ActionTracker implements IActionTracker {
|
|
|
180
199
|
}
|
|
181
200
|
}
|
|
182
201
|
|
|
183
|
-
const existingTransfers =
|
|
202
|
+
const existingTransfers =
|
|
203
|
+
await this.transferStore.getByStatus('in_progress');
|
|
184
204
|
for (const transfer of existingTransfers) {
|
|
205
|
+
if (this.config.isIgnoredTransfer?.(transfer.messageId)) {
|
|
206
|
+
ignoredTransfers++;
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
|
|
185
210
|
const blockTag = await this.getConfirmedBlockTag(
|
|
186
211
|
transfer.destination,
|
|
187
212
|
confirmedBlockTags,
|
|
@@ -204,6 +229,7 @@ export class ActionTracker implements IActionTracker {
|
|
|
204
229
|
{
|
|
205
230
|
newTransfers,
|
|
206
231
|
completed: completedTransfers,
|
|
232
|
+
ignored: ignoredTransfers,
|
|
207
233
|
inProgress: inProgressCount,
|
|
208
234
|
},
|
|
209
235
|
'Transfers synced',
|
|
@@ -272,6 +298,8 @@ export class ActionTracker implements IActionTracker {
|
|
|
272
298
|
|
|
273
299
|
let discoveredActions = 0;
|
|
274
300
|
let completedActions = 0;
|
|
301
|
+
let ignoredActions = 0;
|
|
302
|
+
let ignoredInProgressActions = 0;
|
|
275
303
|
|
|
276
304
|
const inflightMessages =
|
|
277
305
|
await this.explorerClient.getInflightRebalanceActions(
|
|
@@ -293,8 +321,11 @@ export class ActionTracker implements IActionTracker {
|
|
|
293
321
|
|
|
294
322
|
for (const msg of inflightMessages) {
|
|
295
323
|
const existingAction = allActions.find((a) => a.messageId === msg.msg_id);
|
|
324
|
+
if (existingAction) continue;
|
|
296
325
|
|
|
297
|
-
if (
|
|
326
|
+
if (this.isIgnoredRebalanceMessage(msg)) {
|
|
327
|
+
ignoredActions++;
|
|
328
|
+
} else {
|
|
298
329
|
this.logger.info(
|
|
299
330
|
{
|
|
300
331
|
msgId: msg.msg_id,
|
|
@@ -333,6 +364,11 @@ export class ActionTracker implements IActionTracker {
|
|
|
333
364
|
await this.completeRebalanceAction(action.id);
|
|
334
365
|
completedActions++;
|
|
335
366
|
this.logger.debug({ id: action.id }, 'RebalanceAction completed');
|
|
367
|
+
} else if (
|
|
368
|
+
action.type === 'rebalance_message' &&
|
|
369
|
+
this.config.isIgnoredRebalanceAction?.(action.messageId)
|
|
370
|
+
) {
|
|
371
|
+
ignoredInProgressActions++;
|
|
336
372
|
}
|
|
337
373
|
}
|
|
338
374
|
|
|
@@ -343,6 +379,8 @@ export class ActionTracker implements IActionTracker {
|
|
|
343
379
|
{
|
|
344
380
|
discovered: discoveredActions,
|
|
345
381
|
completed: completedActions,
|
|
382
|
+
ignored: ignoredActions,
|
|
383
|
+
ignoredInProgress: ignoredInProgressActions,
|
|
346
384
|
inProgress: inProgressCount,
|
|
347
385
|
},
|
|
348
386
|
'Actions synced',
|
|
@@ -356,7 +394,12 @@ export class ActionTracker implements IActionTracker {
|
|
|
356
394
|
}
|
|
357
395
|
|
|
358
396
|
async getInProgressTransfers(): Promise<Transfer[]> {
|
|
359
|
-
|
|
397
|
+
const transfers = await this.transferStore.getByStatus('in_progress');
|
|
398
|
+
// Ignored transfers stay stored, so their reservation returns once a
|
|
399
|
+
// middleware stops ignoring them, e.g. when a deny rule expires.
|
|
400
|
+
return transfers.filter(
|
|
401
|
+
(transfer) => !this.config.isIgnoredTransfer?.(transfer.messageId),
|
|
402
|
+
);
|
|
360
403
|
}
|
|
361
404
|
|
|
362
405
|
async getTransfersByDestination(destination: Domain): Promise<Transfer[]> {
|
|
@@ -372,7 +415,29 @@ export class ActionTracker implements IActionTracker {
|
|
|
372
415
|
async getActiveRebalanceIntents(): Promise<RebalanceIntent[]> {
|
|
373
416
|
// Only return in_progress intents - their origin tx is confirmed
|
|
374
417
|
// so simulation only needs to add to destination (origin already deducted on-chain)
|
|
375
|
-
|
|
418
|
+
const intents = await this.rebalanceIntentStore.getByStatus('in_progress');
|
|
419
|
+
const isIgnored = this.config.isIgnoredRebalanceAction;
|
|
420
|
+
if (!isIgnored) return intents;
|
|
421
|
+
|
|
422
|
+
// A movable-collateral intent has one message action: the Rebalancer
|
|
423
|
+
// creates one per route and recoverAction one per message.
|
|
424
|
+
const actions = await this.rebalanceActionStore.getByStatus('in_progress');
|
|
425
|
+
const ignoredIntentIds = new Set<string>();
|
|
426
|
+
const countedIntentIds = new Set<string>();
|
|
427
|
+
for (const action of actions) {
|
|
428
|
+
if (action.type !== 'rebalance_message' || !action.messageId) continue;
|
|
429
|
+
if (isIgnored(action.messageId)) ignoredIntentIds.add(action.intentId);
|
|
430
|
+
else countedIntentIds.add(action.intentId);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
// Ignored actions keep their status, so the intent counts again once a
|
|
434
|
+
// middleware stops ignoring its message, e.g. when a deny rule expires.
|
|
435
|
+
return intents.filter(
|
|
436
|
+
(intent) =>
|
|
437
|
+
intent.executionMethod === 'inventory' ||
|
|
438
|
+
!ignoredIntentIds.has(intent.id) ||
|
|
439
|
+
countedIntentIds.has(intent.id),
|
|
440
|
+
);
|
|
376
441
|
}
|
|
377
442
|
|
|
378
443
|
async getRebalanceIntentsByDestination(
|
|
@@ -636,7 +701,8 @@ export class ActionTracker implements IActionTracker {
|
|
|
636
701
|
);
|
|
637
702
|
}
|
|
638
703
|
|
|
639
|
-
//
|
|
704
|
+
// Only inventory_deposit amounts advance fulfillment. inventory_movement
|
|
705
|
+
// amounts stay in source-local units and only gate retries/stale cleanup.
|
|
640
706
|
const completedAmount = actions
|
|
641
707
|
.filter(
|
|
642
708
|
(a) => a.status === 'complete' && a.type === 'inventory_deposit',
|
|
@@ -928,6 +994,20 @@ export class ActionTracker implements IActionTracker {
|
|
|
928
994
|
}
|
|
929
995
|
}
|
|
930
996
|
|
|
997
|
+
private isIgnoredRebalanceMessage(msg: ExplorerMessage): boolean {
|
|
998
|
+
if (!this.config.isIgnoredRebalanceAction?.(msg.msg_id)) return false;
|
|
999
|
+
|
|
1000
|
+
this.logger.debug(
|
|
1001
|
+
{
|
|
1002
|
+
msgId: msg.msg_id,
|
|
1003
|
+
origin: msg.origin_domain_id,
|
|
1004
|
+
destination: msg.destination_domain_id,
|
|
1005
|
+
},
|
|
1006
|
+
'Not recovering ignored rebalance message',
|
|
1007
|
+
);
|
|
1008
|
+
return true;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
931
1011
|
private async recoverAction(msg: ExplorerMessage): Promise<void> {
|
|
932
1012
|
// Check if action already exists
|
|
933
1013
|
const existing = await this.rebalanceActionStore.get(msg.msg_id);
|
|
@@ -90,7 +90,8 @@ export interface IActionTracker {
|
|
|
90
90
|
getTransfer(id: string): Promise<Transfer | undefined>;
|
|
91
91
|
|
|
92
92
|
/**
|
|
93
|
-
* Get all transfers currently in progress
|
|
93
|
+
* Get all transfers currently in progress, excluding those a pending
|
|
94
|
+
* transfer middleware currently ignores.
|
|
94
95
|
*/
|
|
95
96
|
getInProgressTransfers(): Promise<Transfer[]>;
|
|
96
97
|
|
|
@@ -107,7 +108,8 @@ export interface IActionTracker {
|
|
|
107
108
|
getRebalanceIntent(id: string): Promise<RebalanceIntent | undefined>;
|
|
108
109
|
|
|
109
110
|
/**
|
|
110
|
-
* Get
|
|
111
|
+
* Get in_progress rebalance intents, without the non-inventory ones whose
|
|
112
|
+
* in-progress messages a pending-transfer middleware all ignored.
|
|
111
113
|
*/
|
|
112
114
|
getActiveRebalanceIntents(): Promise<RebalanceIntent[]>;
|
|
113
115
|
|