import { type AccountWallet, AccountWalletWithSecretKey, AztecAddress, type AztecNode, FeeJuicePaymentMethod, FeeJuicePaymentMethodWithClaim, type FeePaymentMethod, type Logger, type PXE, PrivateFeePaymentMethod, SponsoredFeePaymentMethod, type Wallet } from '@aztec/aztec.js';
import { CheatCodes } from '@aztec/aztec/testing';
import { type DeployL1ContractsArgs } from '@aztec/ethereum';
import { ChainMonitor } from '@aztec/ethereum/test';
import { EthAddress } from '@aztec/foundation/eth-address';
import { AMMContract } from '@aztec/noir-contracts.js/AMM';
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contracts.js/Token';
import { type SubsystemsContext } from '../../fixtures/snapshot_manager.js';
import { type SetupOptions } from '../../fixtures/utils.js';
import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
import { type GasBridgingTestHarness } from '../../shared/gas_portal_test_harness.js';
import { type ClientFlowsConfig } from './config.js';
export type AccountType = 'ecdsar1' | 'schnorr';
export type FeePaymentMethodGetter = (wallet: Wallet) => Promise<FeePaymentMethod>;
export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
export declare class ClientFlowsBenchmark {
    private snapshotManager;
    logger: Logger;
    pxe: PXE;
    aztecNode: AztecNode;
    cheatCodes: CheatCodes;
    context: SubsystemsContext;
    chainMonitor: ChainMonitor;
    feeJuiceBridgeTestHarness: GasBridgingTestHarness;
    adminWallet: AccountWallet;
    adminAddress: AztecAddress;
    sequencerAddress: AztecAddress;
    coinbase: EthAddress;
    feeJuiceContract: FeeJuiceContract;
    bananaCoin: BananaCoin;
    bananaFPC: FPCContract;
    candyBarCoin: TokenContract;
    amm: AMMContract;
    liquidityToken: TokenContract;
    sponsoredFPC: SponsoredFPCContract;
    userPXE: PXE;
    realProofs: boolean;
    paymentMethods: Record<BenchmarkingFeePaymentMethod, {
        forWallet: FeePaymentMethodGetter;
        circuits: number;
    }>;
    config: ClientFlowsConfig;
    private proxyLogger;
    constructor(testName?: string, setupOptions?: Partial<SetupOptions & DeployL1ContractsArgs>);
    setup(): Promise<this>;
    teardown(): Promise<void>;
    mintAndBridgeFeeJuice(address: AztecAddress): Promise<void>;
    /** Admin mints bananaCoin tokens privately to the target address and redeems them. */
    mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
    createBenchmarkingAccountManager(pxe: PXE, type: 'ecdsar1' | 'schnorr'): Promise<import("@aztec/aztec.js").AccountManager>;
    applyBaseSnapshots(): Promise<void>;
    applyInitialAccountsSnapshot(): Promise<void>;
    applySetupFeeJuiceSnapshot(): Promise<void>;
    applyDeployBananaTokenSnapshot(): Promise<void>;
    applyDeployCandyBarTokenSnapshot(): Promise<void>;
    applyFPCSetupSnapshot(): Promise<void>;
    applyDeploySponsoredFPCSnapshot(): Promise<void>;
    createCrossChainTestHarness(owner: AccountWallet): Promise<CrossChainTestHarness>;
    createAndFundBenchmarkingWallet(accountType: AccountType): Promise<AccountWalletWithSecretKey>;
    applyDeployAmmSnapshot(): Promise<void>;
    getBridgedFeeJuicePaymentMethodForWallet(wallet: Wallet): Promise<FeeJuicePaymentMethodWithClaim>;
    getPrivateFPCPaymentMethodForWallet(wallet: Wallet): Promise<PrivateFeePaymentMethod>;
    getSponsoredFPCPaymentMethodForWallet(_wallet: Wallet): Promise<SponsoredFeePaymentMethod>;
    getFeeJuicePaymentMethodForWallet(wallet: Wallet): Promise<FeeJuicePaymentMethod>;
}
//# sourceMappingURL=client_flows_benchmark.d.ts.map