import type { InitialAccountData } from '@aztec/accounts/testing';
import { type AccountWalletWithSecretKey, type AztecNode, type CompleteAddress, EthAddress, type Logger } from '@aztec/aztec.js';
import { CheatCodes } from '@aztec/aztec/testing';
import { type ClientProtocolCircuitVerifier } from '@aztec/bb-prover';
import type { BlobSinkServer } from '@aztec/blob-sink/server';
import type { DeployL1ContractsReturnType } from '@aztec/ethereum';
import { TokenContract } from '@aztec/noir-contracts.js/Token';
import type { PXEService } from '@aztec/pxe/server';
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
import { TokenSimulator } from '../simulators/token_simulator.js';
import { type SubsystemsContext } from './snapshot_manager.js';
/**
 * Largely taken from the e2e_token_contract test file. We deploy 2 accounts and a token contract.
 * However, we then setup a second PXE with a full prover instance.
 * We configure this instance with all of the accounts and contracts.
 * We then prove and verify transactions created via this full prover PXE.
 */
export declare class FullProverTest {
    private minNumberOfTxsPerBlock;
    private realProofs;
    static TOKEN_NAME: string;
    static TOKEN_SYMBOL: string;
    static TOKEN_DECIMALS: bigint;
    private snapshotManager;
    logger: Logger;
    deployedAccounts: InitialAccountData[];
    wallets: AccountWalletWithSecretKey[];
    accounts: CompleteAddress[];
    fakeProofsAsset: TokenContract;
    tokenSim: TokenSimulator;
    aztecNode: AztecNode;
    aztecNodeAdmin: AztecNodeAdmin;
    pxe: PXEService;
    cheatCodes: CheatCodes;
    blobSink: BlobSinkServer;
    private provenComponents;
    private bbConfigCleanup?;
    private acvmConfigCleanup?;
    circuitProofVerifier?: ClientProtocolCircuitVerifier;
    provenAssets: TokenContract[];
    private context;
    private proverNode;
    private simulatedProverNode;
    l1Contracts: DeployL1ContractsReturnType;
    proverAddress: EthAddress;
    constructor(testName: string, minNumberOfTxsPerBlock: number, coinbase: EthAddress, realProofs?: boolean);
    /**
     * Adds two state shifts to snapshot manager.
     * 1. Add 2 accounts.
     * 2. Publicly deploy accounts, deploy token contract
     */
    applyBaseSnapshots(): Promise<void>;
    setup(): Promise<this>;
    private mintFeeJuice;
    snapshot: <T>(name: string, apply: (context: SubsystemsContext) => Promise<T>, restore?: (snapshotData: T, context: SubsystemsContext) => Promise<void>) => Promise<void>;
    teardown(): Promise<void>;
    applyMintSnapshot(): Promise<void>;
}
//# sourceMappingURL=e2e_prover_test.d.ts.map