import { type PopulatedTransaction, type providers } from 'ethers'; import Sinon from 'sinon'; import { type ChainMap, type ChainMetadata, type ChainName, type IToken, type InterchainGasQuote, type MultiProvider, type Token, TokenAmount, type WarpCore } from '@hyperlane-xyz/sdk'; import type { RebalancerConfig } from '../config/RebalancerConfig.js'; import type { ExecutionResult, IRebalancer, MovableCollateralExecutionResult, PreparedTransaction, RebalancerType } from '../interfaces/IRebalancer.js'; import type { MovableCollateralRoute, StrategyRoute } from '../interfaces/IStrategy.js'; import type { BridgeConfigWithOverride } from '../utils/bridgeUtils.js'; export declare class MockRebalancer implements IRebalancer { readonly rebalancerType: RebalancerType; rebalance(_routes: MovableCollateralRoute[]): Promise; } export declare function buildTestRoute(overrides?: Partial, executionType?: 'movableCollateral' | 'inventory'): StrategyRoute; export declare function buildTestMovableCollateralRoute(overrides?: Partial): MovableCollateralRoute; export declare function buildTestResult(overrides?: Partial): MovableCollateralExecutionResult; export declare function buildTestPreparedTransaction(overrides?: Partial): PreparedTransaction; export declare function createMockTokenAmount(amount: bigint): TokenAmount; export interface MockAdapterConfig { isRebalancer?: boolean; allowedDestination?: string; isBridgeAllowed?: boolean; quotes?: InterchainGasQuote[]; populatedTx?: PopulatedTransaction; throwOnQuotes?: Error; throwOnPopulate?: Error; } export declare function createMockAdapter(config?: MockAdapterConfig): { isRebalancer: Sinon.SinonStub; getAllowedDestination: Sinon.SinonStub; isBridgeAllowed: Sinon.SinonStub; getRebalanceQuotes: Sinon.SinonStub; populateRebalanceTx: Sinon.SinonStub; }; export interface MockTokenConfig { name?: string; decimals?: number; addressOrDenom?: string; scale?: Token['scale']; adapter?: ReturnType; } export declare function createMockToken(config?: MockTokenConfig): { token: { name: string; decimals: number; addressOrDenom: string; scale: number | { numerator: number; denominator: number; } | { numerator: bigint; denominator: bigint; } | undefined; amount: (amt: bigint) => TokenAmount; getHypAdapter: Sinon.SinonStub; }; adapter: { isRebalancer: Sinon.SinonStub; getAllowedDestination: Sinon.SinonStub; isBridgeAllowed: Sinon.SinonStub; getRebalanceQuotes: Sinon.SinonStub; populateRebalanceTx: Sinon.SinonStub; }; }; export interface MockMultiProviderConfig { chainMetadata?: ChainMap>; signerAddress?: string; sendTransactionReceipt?: providers.TransactionReceipt; throwOnSendTransaction?: Error; throwOnEstimateGas?: Error; providerWaitForTransaction?: providers.TransactionReceipt; providerGetBlock?: providers.Block | null; providerGetTransactionReceipt?: providers.TransactionReceipt | null; } export declare function createMockMultiProvider(config?: MockMultiProviderConfig): MultiProvider & { _mockProvider: { waitForTransaction: Sinon.SinonStub; getBlock: Sinon.SinonStub; getTransactionReceipt: Sinon.SinonStub; }; _mockSigner: { getAddress: Sinon.SinonStub; sendTransaction: Sinon.SinonStub; }; }; export declare function createMockWarpCore(multiProvider: MultiProvider): WarpCore; export declare const TEST_ADDRESSES: Record; export declare function getTestAddress(key: string): string; export declare function buildTestBridges(chains?: ChainName[]): ChainMap; /** * Convert a chain config map (with bridge addresses) to a BridgeConfigWithOverride map. * Useful for tests that define bridge addresses in the strategy config. */ export declare function extractBridgeConfigs(chainConfig: Record): ChainMap; export declare function buildTestChainMetadata(chains?: ChainName[]): ChainMap; export interface RebalancerTestContext { multiProvider: ReturnType; warpCore: WarpCore; bridges: ChainMap; chainMetadata: ChainMap; tokensByChainName: ChainMap; adapters: ChainMap>; } export declare function createRebalancerTestContext(chains?: ChainName[], adapterConfigs?: ChainMap): RebalancerTestContext; export declare function buildTestConfig(overrides?: Partial, chains?: string[]): RebalancerConfig; //# sourceMappingURL=helpers.d.ts.map