import { type AztecAddress, type AztecNode, EthAddress, L1FeeJuicePortalManager, type L1TokenManager, type L2AmountClaim, type Logger, type PXE, type Wallet } from '@aztec/aztec.js';
import type { ExtendedViemWalletClient } from '@aztec/ethereum';
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;
    pxeService: PXE;
    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;
    /** Private eXecution Environment (PXE). */
    pxeService: PXE;
    /** 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, 
    /** Private eXecution Environment (PXE). */
    pxeService: PXE, 
    /** 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=gas_portal_test_harness.d.ts.map