import { BigNumber, Contract, Event } from "ethers";
import winston from "winston";
import { Deposit, L1Token, PendingRootBundle } from "../../interfaces";
import { AcrossConfigStoreClient as ConfigStoreClient } from "../AcrossConfigStoreClient";
import { HubPoolClient, HubPoolUpdate } from "../HubPoolClient";
export declare class MockHubPoolClient extends HubPoolClient {
    rootBundleProposal: PendingRootBundle;
    private events;
    private l1TokensMock;
    private tokenInfoToReturn;
    private l1TokensToDestinationTokensMock;
    private returnedL1TokenForDeposit;
    private returnedDestinationTokenForL1Token;
    private eventManager;
    constructor(logger: winston.Logger, hubPool: Contract, configStoreClient: ConfigStoreClient, deploymentBlock?: number, chainId?: number);
    setCrossChainContracts(chainId: number, contract: string, blockNumber?: number): void;
    setLatestBlockNumber(blockNumber: number): void;
    addEvent(event: Event): void;
    addL1Token(l1Token: L1Token): void;
    getL1Tokens(): L1Token[];
    getTokenInfoForDeposit(): L1Token;
    getTokenInfoForL1Token(l1Token: string): L1Token | undefined;
    setTokenInfoToReturn(tokenInfo: L1Token): void;
    setL1TokensToDestinationTokens(l1TokensToDestinationTokens: {
        [l1Token: string]: {
            [destinationChainId: number]: string;
        };
    }): void;
    getDestinationTokenForL1Token(l1Token: string, destinationChainId: number): string;
    setReturnedL1TokenForDeposit(l1Token: string): void;
    setDestinationTokenForL1Token(destinationToken: string): void;
    getL1TokenForDeposit(_deposit: Deposit): string;
    getL1TokenCounterpartAtBlock(l2ChainId: number, l2Token: string, hubPoolBlock: number): string;
    getL1TokenInfoForL2Token(l2Token: string, _chain: number): L1Token;
    _update(eventNames: string[]): Promise<HubPoolUpdate>;
    readonly eventSignatures: Record<string, string>;
    setPoolRebalanceRoute(destinationChainId: number, l1Token: string, destinationToken: string): Event;
    proposeRootBundle(challengePeriodEndTimestamp: number, poolRebalanceLeafCount: number, bundleEvaluationBlockNumbers: BigNumber[], poolRebalanceRoot?: string, relayerRefundRoot?: string, slowRelayRoot?: string, proposer?: string): Event;
    executeRootBundle(groupIndex: BigNumber, leafId: number, chainId: BigNumber, l1Tokens: string[], bundleLpFees: BigNumber[], netSendAmounts: BigNumber[], runningBalances: BigNumber[], caller?: string): Event;
}
