import type { InitialAccountData } from '@aztec/accounts/testing';
import type { AztecNodeService } from '@aztec/aztec-node';
import { type AccountWalletWithSecretKey, AztecAddress } from '@aztec/aztec.js';
import { type EmpireSlashingProposerContract, type Operator, RollupContract, type TallySlashingProposerContract, type ViemClient } from '@aztec/ethereum';
import { ChainMonitor } from '@aztec/ethereum/test';
import { type Logger } from '@aztec/foundation/log';
import { SlasherAbi } from '@aztec/l1-artifacts';
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
import type { BootstrapNode } from '@aztec/p2p/bootstrap';
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
import { type GetContractReturnType } from 'viem';
import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
import { type SetupOptions } from '../fixtures/utils.js';
export declare const WAIT_FOR_TX_TIMEOUT: number;
export declare const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES: {
    aztecSlotDuration: number;
    ethereumSlotDuration: number;
    aztecProofSubmissionWindow: number;
};
export declare class P2PNetworkTest {
    readonly testName: string;
    bootstrapNodeEnr: string;
    bootNodePort: number;
    numberOfValidators: number;
    numberOfNodes: number;
    private metricsPort?;
    private snapshotManager;
    baseAccountPrivateKey: `0x${string}`;
    baseAccount: {
        address: import("viem").Address;
        nonceManager?: import("viem").NonceManager | undefined;
        sign: (parameters: {
            hash: import("viem").Hash;
        }) => Promise<import("viem").Hex>;
        signAuthorization: (parameters: import("viem").AuthorizationRequest) => Promise<import("viem/accounts").SignAuthorizationReturnType>;
        signMessage: ({ message }: {
            message: import("viem").SignableMessage;
        }) => Promise<import("viem").Hex>;
        signTransaction: <serializer extends import("viem").SerializeTransactionFn<import("viem").TransactionSerializable> = import("viem").SerializeTransactionFn<import("viem").TransactionSerializable>, transaction extends Parameters<serializer>[0] = Parameters<serializer>[0]>(transaction: transaction, options?: {
            serializer?: serializer | undefined;
        } | undefined) => Promise<import("viem").Hex>;
        signTypedData: <const typedData extends import("viem").TypedData | Record<string, unknown>, primaryType extends keyof typedData | "EIP712Domain" = keyof typedData>(parameters: import("viem").TypedDataDefinition<typedData, primaryType>) => Promise<import("viem").Hex>;
        publicKey: import("viem").Hex;
        source: "privateKey";
        type: "local";
    };
    logger: Logger;
    monitor: ChainMonitor;
    ctx: SubsystemsContext;
    attesterPrivateKeys: `0x${string}`[];
    attesterPublicKeys: string[];
    peerIdPrivateKeys: string[];
    validators: Operator[];
    deployedAccounts: InitialAccountData[];
    prefilledPublicData: PublicDataTreeLeaf[];
    wallet?: AccountWalletWithSecretKey;
    defaultAccountAddress?: AztecAddress;
    spamContract?: SpamContract;
    bootstrapNode?: BootstrapNode;
    constructor(testName: string, bootstrapNodeEnr: string, bootNodePort: number, numberOfValidators: number, initialValidatorConfig: SetupOptions, numberOfNodes?: number, metricsPort?: number | undefined, startProverNode?: boolean, mockZkPassportVerifier?: boolean);
    static create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode, mockZkPassportVerifier, }: {
        testName: string;
        numberOfNodes: number;
        numberOfValidators: number;
        basePort?: number;
        metricsPort?: number;
        initialConfig?: SetupOptions;
        startProverNode?: boolean;
        mockZkPassportVerifier?: boolean;
    }): Promise<P2PNetworkTest>;
    get fundedAccount(): InitialAccountData;
    addBootstrapNode(): Promise<void>;
    getValidators(): {
        validators: Operator[];
    };
    applyBaseSnapshots(): Promise<void>;
    setupAccount(): Promise<void>;
    deploySpamContract(): Promise<void>;
    removeInitialNode(): Promise<void>;
    sendDummyTx(): Promise<{
        receipt: import("viem").TransactionReceipt;
        state: import("@aztec/ethereum").L1TxState;
    }>;
    private _sendDummyTx;
    setup(): Promise<void>;
    stopNodes(nodes: AztecNodeService[]): Promise<void>;
    teardown(): Promise<void>;
    getContracts(): Promise<{
        rollup: RollupContract;
        slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
        slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
        slashFactory: SlashFactoryContract;
    }>;
}
//# sourceMappingURL=p2p_network.d.ts.map