import winston from "winston";
import { Contract } from "ethers";
import { BigNumber, EvmAddress, Address } from "../../utils";
import { Log, PendingRootBundle, RealizedLpFee, L1TokenInfo } from "../../interfaces";
import { AcrossConfigStoreClient as ConfigStoreClient } from "../AcrossConfigStoreClient";
import { HubPoolClient, HubPoolUpdate, LpFeeRequest } from "../HubPoolClient";
import { EventOverrides } from "./MockEvents";
export declare class MockHubPoolClient extends HubPoolClient {
    rootBundleProposal: PendingRootBundle;
    private realizedLpFeePct;
    private realizedLpFeePctOverride;
    private l1TokensMock;
    private spokePoolTokens;
    private eventManager;
    constructor(logger: winston.Logger, hubPool: Contract, configStoreClient: ConfigStoreClient, deploymentBlock?: number, chainId?: number);
    setDefaultRealizedLpFeePct(fee: BigNumber): void;
    clearDefaultRealizedLpFeePct(): void;
    computeRealizedLpFeePct(deposit: LpFeeRequest): Promise<RealizedLpFee>;
    batchComputeRealizedLpFeePct(_deposits: LpFeeRequest[]): Promise<RealizedLpFee[]>;
    setCrossChainContracts(chainId: number, contract: string, blockNumber?: number): void;
    setLatestBlockNumber(blockNumber: number): void;
    addL1Token(l1Token: L1TokenInfo): void;
    getL1Tokens(): L1TokenInfo[];
    setTokenMapping(l1Token: string, chainId: number, l2Token: string): void;
    l2TokenEnabledForL1TokenAtBlock(l1Token: EvmAddress, destinationChainId: number, hubBlockNumber: number): boolean;
    l2TokenHasPoolRebalanceRoute(l2Token: Address, chainId: number, hubPoolBlock: number): boolean;
    deleteTokenMapping(l1Token: string, chainId: number): void;
    getL1TokenForL2TokenAtBlock(l2Token: Address, chainId: number, blockNumber: number): EvmAddress;
    getL2TokenForL1TokenAtBlock(l1Token: EvmAddress, chainId: number, blockNumber: number): Address;
    getTokenInfoForL1Token(l1Token: EvmAddress): L1TokenInfo | undefined;
    _update(eventNames: string[]): Promise<HubPoolUpdate>;
    readonly eventSignatures: Record<string, string>;
    setCrossChainContractsEvent(l2ChainId: number, adapter: string, spokePool: string, overrides?: EventOverrides): Log;
    setPoolRebalanceRoute(destinationChainId: number, l1Token: string, destinationToken: string, overrides?: EventOverrides): Log;
    proposeRootBundle(challengePeriodEndTimestamp: number, poolRebalanceLeafCount: number, bundleEvaluationBlockNumbers: BigNumber[], poolRebalanceRoot?: string, relayerRefundRoot?: string, slowRelayRoot?: string, proposer?: string, overrides?: EventOverrides): Log;
    executeRootBundle(groupIndex: BigNumber, leafId: number, chainId: BigNumber, l1Tokens: string[], bundleLpFees: BigNumber[], netSendAmounts: BigNumber[], runningBalances: BigNumber[], caller?: string, overrides?: EventOverrides): Log;
}
