import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
import { L1FeeJuicePortalManager, type L1TokenManager, type L2AmountClaim } from '@aztec/aztec.js/ethereum';
import type { Logger } from '@aztec/aztec.js/log';
import type { AztecNode } from '@aztec/aztec.js/node';
import type { Wallet } from '@aztec/aztec.js/wallet';
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
export interface IGasBridgingTestHarness {
    getL1FeeJuiceBalance(address: EthAddress): Promise<bigint>;
    prepareTokensOnL1(owner: AztecAddress): Promise<L2AmountClaim>;
    bridgeFromL1ToL2(owner: AztecAddress, claimer: AztecAddress): Promise<void>;
    feeJuice: FeeJuiceContract;
    l1FeeJuiceAddress: EthAddress;
}
export interface FeeJuicePortalTestingHarnessFactoryConfig {
    aztecNode: AztecNode;
    aztecNodeAdmin?: AztecNodeAdmin;
    l1Client: ExtendedViemWalletClient;
    wallet: Wallet;
    logger: Logger;
    mockL1?: boolean;
}
export declare class FeeJuicePortalTestingHarnessFactory {
    private config;
    private constructor();
    private createReal;
    static create(config: FeeJuicePortalTestingHarnessFactoryConfig): Promise<GasBridgingTestHarness>;
}
/**
 * A Class for testing cross chain interactions, contains common interactions
 * shared between cross chain tests.
 */
export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
    /** Aztec node */
    aztecNode: AztecNode;
    /** Aztec node admin interface */
    aztecNodeAdmin: AztecNodeAdmin | undefined;
    /** Wallet. */
    wallet: Wallet;
    /** Logger. */
    logger: Logger;
    /** L2 Token/Bridge contract. */
    feeJuice: FeeJuiceContract;
    /** Eth account to interact with. */
    ethAccount: EthAddress;
    /** Portal address. */
    feeJuicePortalAddress: EthAddress;
    /** Underlying token for portal tests. */
    l1FeeJuiceAddress: EthAddress;
    /** Fee asset handler address. */
    feeAssetHandlerAddress: EthAddress;
    /** Viem Extended client instance. */
    l1Client: ExtendedViemWalletClient;
    readonly l1TokenManager: L1TokenManager;
    readonly feeJuicePortalManager: L1FeeJuicePortalManager;
    constructor(
    /** Aztec node */
    aztecNode: AztecNode, 
    /** Aztec node admin interface */
    aztecNodeAdmin: AztecNodeAdmin | undefined, 
    /** Wallet. */
    wallet: Wallet, 
    /** Logger. */
    logger: Logger, 
    /** L2 Token/Bridge contract. */
    feeJuice: FeeJuiceContract, 
    /** Eth account to interact with. */
    ethAccount: EthAddress, 
    /** Portal address. */
    feeJuicePortalAddress: EthAddress, 
    /** Underlying token for portal tests. */
    l1FeeJuiceAddress: EthAddress, 
    /** Fee asset handler address. */
    feeAssetHandlerAddress: EthAddress, 
    /** Viem Extended client instance. */
    l1Client: ExtendedViemWalletClient);
    mintTokensOnL1(to?: EthAddress): Promise<void>;
    getL1FeeJuiceBalance(address: EthAddress): Promise<bigint>;
    sendTokensToPortalPublic(bridgeAmount: bigint, l2Address: AztecAddress): Promise<L2AmountClaim>;
    consumeMessageOnAztecAndClaimPrivately(owner: AztecAddress, claimer: AztecAddress, claim: L2AmountClaim): Promise<void>;
    getL2PublicBalanceOf(owner: AztecAddress): Promise<any>;
    expectPublicBalanceOnL2(owner: AztecAddress, expectedBalance: bigint): Promise<void>;
    prepareTokensOnL1(owner: AztecAddress): Promise<L2AmountClaim>;
    bridgeFromL1ToL2(owner: AztecAddress, claimer: AztecAddress): Promise<void>;
    private advanceL2Block;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE1BQU0sV0FBVyx1QkFBdUI7SUFDdEMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0QsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0QsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RSxRQUFRLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0IsaUJBQWlCLEVBQUUsVUFBVSxDQUFDO0NBQy9CO0FBRUQsTUFBTSxXQUFXLHlDQUF5QztJQUN4RCxTQUFTLEVBQUUsU0FBUyxD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