import type { InitialAccountData } from '@aztec/accounts/testing';
import type { AztecNodeService } from '@aztec/aztec-node';
import { AztecAddress } from '@aztec/aztec.js/addresses';
import { type EmpireSlashingProposerContract, RollupContract, type TallySlashingProposerContract } from '@aztec/ethereum/contracts';
import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
import { ChainMonitor } from '@aztec/ethereum/test';
import type { ViemClient } from '@aztec/ethereum/types';
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 { TopicType } from '@aztec/stdlib/p2p';
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
import { type GetContractReturnType } from 'viem';
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
import type { TestWallet } from '../test-wallet/test_wallet.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?;
    context: EndToEndContext;
    baseAccountPrivateKey: `0x${string}`;
    baseAccount: {
        address: `0x${string}`;
        nonceManager?: import("viem").NonceManager | undefined;
        sign: (parameters: {
            hash: `0x${string}`;
        }) => Promise<`0x${string}`>;
        signAuthorization: (parameters: import("viem").AuthorizationRequest) => Promise<import("viem/accounts").SignAuthorizationReturnType>;
        signMessage: ({ message }: {
            message: import("viem").SignableMessage;
        }) => Promise<`0x${string}`>;
        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<`0x${string}`>;
        signTypedData: <const typedData extends Record<string, unknown> | {
            [x: string]: readonly import("viem").TypedDataParameter[];
            [x: `address[${string}]`]: undefined;
            [x: `bool[${string}]`]: undefined;
            [x: `bytes10[${string}]`]: undefined;
            [x: `bytes11[${string}]`]: undefined;
            [x: `bytes12[${string}]`]: undefined;
            [x: `bytes13[${string}]`]: undefined;
            [x: `bytes14[${string}]`]: undefined;
            [x: `bytes15[${string}]`]: undefined;
            [x: `bytes16[${string}]`]: undefined;
            [x: `bytes17[${string}]`]: undefined;
            [x: `bytes18[${string}]`]: undefined;
            [x: `bytes19[${string}]`]: undefined;
            [x: `bytes1[${string}]`]: undefined;
            [x: `bytes20[${string}]`]: undefined;
            [x: `bytes21[${string}]`]: undefined;
            [x: `bytes22[${string}]`]: undefined;
            [x: `bytes23[${string}]`]: undefined;
            [x: `bytes24[${string}]`]: undefined;
            [x: `bytes25[${string}]`]: undefined;
            [x: `bytes26[${string}]`]: undefined;
            [x: `bytes27[${string}]`]: undefined;
            [x: `bytes28[${string}]`]: undefined;
            [x: `bytes29[${string}]`]: undefined;
            [x: `bytes2[${string}]`]: undefined;
            [x: `bytes30[${string}]`]: undefined;
            [x: `bytes31[${string}]`]: undefined;
            [x: `bytes32[${string}]`]: undefined;
            [x: `bytes3[${string}]`]: undefined;
            [x: `bytes4[${string}]`]: undefined;
            [x: `bytes5[${string}]`]: undefined;
            [x: `bytes6[${string}]`]: undefined;
            [x: `bytes7[${string}]`]: undefined;
            [x: `bytes8[${string}]`]: undefined;
            [x: `bytes9[${string}]`]: undefined;
            [x: `bytes[${string}]`]: undefined;
            [x: `function[${string}]`]: undefined;
            [x: `int104[${string}]`]: undefined;
            [x: `int112[${string}]`]: undefined;
            [x: `int120[${string}]`]: undefined;
            [x: `int128[${string}]`]: undefined;
            [x: `int136[${string}]`]: undefined;
            [x: `int144[${string}]`]: undefined;
            [x: `int152[${string}]`]: undefined;
            [x: `int160[${string}]`]: undefined;
            [x: `int168[${string}]`]: undefined;
            [x: `int16[${string}]`]: undefined;
            [x: `int176[${string}]`]: undefined;
            [x: `int184[${string}]`]: undefined;
            [x: `int192[${string}]`]: undefined;
            [x: `int200[${string}]`]: undefined;
            [x: `int208[${string}]`]: undefined;
            [x: `int216[${string}]`]: undefined;
            [x: `int224[${string}]`]: undefined;
            [x: `int232[${string}]`]: undefined;
            [x: `int240[${string}]`]: undefined;
            [x: `int248[${string}]`]: undefined;
            [x: `int24[${string}]`]: undefined;
            [x: `int256[${string}]`]: undefined;
            [x: `int32[${string}]`]: undefined;
            [x: `int40[${string}]`]: undefined;
            [x: `int48[${string}]`]: undefined;
            [x: `int56[${string}]`]: undefined;
            [x: `int64[${string}]`]: undefined;
            [x: `int72[${string}]`]: undefined;
            [x: `int80[${string}]`]: undefined;
            [x: `int88[${string}]`]: undefined;
            [x: `int8[${string}]`]: undefined;
            [x: `int96[${string}]`]: undefined;
            [x: `int[${string}]`]: undefined;
            [x: `string[${string}]`]: undefined;
            [x: `uint104[${string}]`]: undefined;
            [x: `uint112[${string}]`]: undefined;
            [x: `uint120[${string}]`]: undefined;
            [x: `uint128[${string}]`]: undefined;
            [x: `uint136[${string}]`]: undefined;
            [x: `uint144[${string}]`]: undefined;
            [x: `uint152[${string}]`]: undefined;
            [x: `uint160[${string}]`]: undefined;
            [x: `uint168[${string}]`]: undefined;
            [x: `uint16[${string}]`]: undefined;
            [x: `uint176[${string}]`]: undefined;
            [x: `uint184[${string}]`]: undefined;
            [x: `uint192[${string}]`]: undefined;
            [x: `uint200[${string}]`]: undefined;
            [x: `uint208[${string}]`]: undefined;
            [x: `uint216[${string}]`]: undefined;
            [x: `uint224[${string}]`]: undefined;
            [x: `uint232[${string}]`]: undefined;
            [x: `uint240[${string}]`]: undefined;
            [x: `uint248[${string}]`]: undefined;
            [x: `uint24[${string}]`]: undefined;
            [x: `uint256[${string}]`]: undefined;
            [x: `uint32[${string}]`]: undefined;
            [x: `uint40[${string}]`]: undefined;
            [x: `uint48[${string}]`]: undefined;
            [x: `uint56[${string}]`]: undefined;
            [x: `uint64[${string}]`]: undefined;
            [x: `uint72[${string}]`]: undefined;
            [x: `uint80[${string}]`]: undefined;
            [x: `uint88[${string}]`]: undefined;
            [x: `uint8[${string}]`]: undefined;
            [x: `uint96[${string}]`]: undefined;
            [x: `uint[${string}]`]: undefined;
            address?: undefined;
            bool?: undefined;
            bytes?: undefined;
            bytes1?: undefined;
            bytes10?: undefined;
            bytes11?: undefined;
            bytes12?: undefined;
            bytes13?: undefined;
            bytes14?: undefined;
            bytes15?: undefined;
            bytes16?: undefined;
            bytes17?: undefined;
            bytes18?: undefined;
            bytes19?: undefined;
            bytes2?: undefined;
            bytes20?: undefined;
            bytes21?: undefined;
            bytes22?: undefined;
            bytes23?: undefined;
            bytes24?: undefined;
            bytes25?: undefined;
            bytes26?: undefined;
            bytes27?: undefined;
            bytes28?: undefined;
            bytes29?: undefined;
            bytes3?: undefined;
            bytes30?: undefined;
            bytes31?: undefined;
            bytes32?: undefined;
            bytes4?: undefined;
            bytes5?: undefined;
            bytes6?: undefined;
            bytes7?: undefined;
            bytes8?: undefined;
            bytes9?: undefined;
            int104?: undefined;
            int112?: undefined;
            int120?: undefined;
            int128?: undefined;
            int136?: undefined;
            int144?: undefined;
            int152?: undefined;
            int16?: undefined;
            int160?: undefined;
            int168?: undefined;
            int176?: undefined;
            int184?: undefined;
            int192?: undefined;
            int200?: undefined;
            int208?: undefined;
            int216?: undefined;
            int224?: undefined;
            int232?: undefined;
            int24?: undefined;
            int240?: undefined;
            int248?: undefined;
            int256?: undefined;
            int32?: undefined;
            int40?: undefined;
            int48?: undefined;
            int56?: undefined;
            int64?: undefined;
            int72?: undefined;
            int8?: undefined;
            int80?: undefined;
            int88?: undefined;
            int96?: undefined;
            string?: undefined;
            uint104?: undefined;
            uint112?: undefined;
            uint120?: undefined;
            uint128?: undefined;
            uint136?: undefined;
            uint144?: undefined;
            uint152?: undefined;
            uint16?: undefined;
            uint160?: undefined;
            uint168?: undefined;
            uint176?: undefined;
            uint184?: undefined;
            uint192?: undefined;
            uint200?: undefined;
            uint208?: undefined;
            uint216?: undefined;
            uint224?: undefined;
            uint232?: undefined;
            uint24?: undefined;
            uint240?: undefined;
            uint248?: undefined;
            uint256?: undefined;
            uint32?: undefined;
            uint40?: undefined;
            uint48?: undefined;
            uint56?: undefined;
            uint64?: undefined;
            uint72?: undefined;
            uint8?: undefined;
            uint80?: undefined;
            uint88?: undefined;
            uint96?: undefined;
        }, primaryType extends "EIP712Domain" | keyof typedData = keyof typedData>(parameters: import("viem").TypedDataDefinition<typedData, primaryType>) => Promise<`0x${string}`>;
        publicKey: `0x${string}`;
        source: "privateKey";
        type: "local";
    };
    logger: Logger;
    monitor: ChainMonitor;
    ctx: EndToEndContext;
    attesterPrivateKeys: `0x${string}`[];
    attesterPublicKeys: string[];
    peerIdPrivateKeys: string[];
    validators: Operator[];
    deployedAccounts: InitialAccountData[];
    prefilledPublicData: PublicDataTreeLeaf[];
    wallet?: TestWallet;
    defaultAccountAddress?: AztecAddress;
    spamContract?: SpamContract;
    bootstrapNode?: BootstrapNode;
    private setupOptions;
    private deployL1ContractsArgs;
    constructor(testName: string, bootstrapNodeEnr: string, bootNodePort: number, numberOfValidators: number, initialValidatorConfig: SetupOptions, numberOfNodes?: number, metricsPort?: number | undefined, startProverNode?: boolean);
    static create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode }: {
        testName: string;
        numberOfNodes: number;
        numberOfValidators: number;
        basePort?: number;
        metricsPort?: number;
        initialConfig?: SetupOptions;
        startProverNode?: boolean;
    }): Promise<P2PNetworkTest>;
    get fundedAccount(): InitialAccountData;
    addBootstrapNode(): Promise<void>;
    getValidators(): {
        validators: Operator[];
    };
    applyBaseSetup(): Promise<void>;
    setupAccount(): Promise<void>;
    deploySpamContract(): Promise<void>;
    removeInitialNode(): Promise<void>;
    sendDummyTx(): Promise<{
        receipt: import("viem").TransactionReceipt;
        state: import("@aztec/ethereum/l1-tx-utils").L1TxState;
    }>;
    private _sendDummyTx;
    setup(): Promise<void>;
    stopNodes(nodes: AztecNodeService[]): Promise<void>;
    /**
     * Wait for P2P mesh to be fully formed across all nodes.
     * This ensures that all nodes are connected to each other before proceeding,
     * preventing race conditions where validators propose blocks before the network is ready.
     *
     * @param nodes - Array of nodes to check for P2P connectivity
     * @param expectedNodeCount - Expected number of nodes in the network (defaults to nodes.length)
     * @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
     * @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
     */
    waitForP2PMeshConnectivity(nodes: AztecNodeService[], expectedNodeCount?: number, timeoutSeconds?: number, checkIntervalSeconds?: number, topics?: TopicType[]): Promise<void>;
    teardown(): Promise<void>;
    getContracts(): Promise<{
        rollup: RollupContract;
        slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
        slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
        slashFactory: SlashFactoryContract;
    }>;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX25ldHdvcmsuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfcDJwL3AycF9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBR3JFLE9BQU8sRUFDTCxLQUFLLDhCQUE4QixFQUVuQyxjQUFjLEVBQ2QsS0FBSyw2QkFBNkIsRUFDbkMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQTRCLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQWEsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUs5RCxPQUFPLEVBQUUsS0FBSyxxQkFBcUIsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFHM0UsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUNwQixLQUFLLFlBQVksRUFNbEIsTUFBTSxzQkFBc0IsQ0FBQztBQU85QixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUtoRSxlQUFPLE1BQU0sbUJBQW1CLFFBQTBDLENBQUM7QUFFM0UsZUFBTyxNQUFNLHFDQUFxQzs7OztDQUlqRCxDQUFDO0FBRUYscUJBQWEsY0FBYzthQTZCUCxRQUFRLEVBQUUsTUFBTTtJQUN6QixnQkFBZ0IsRUFBRSxNQUFNO0lBQ3hCLFlBQVksRUFBRSxNQUFNO0lBQ3BCLGtCQUFrQixFQUFFLE1BQU07SUFFMUIsYUFBYTtJQUVwQixPQUFPLENBQUMsV0FBVyxDQUFDO0lBbkNmLE9BQU8sRUFBRyxlQUFlLENBQUM7SUFDMUIscUJBQXFCLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUNyQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFBQztJQUVaLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixPQUFPLEVBQUcsWUFBWSxDQUFDO0lBRXZCLEdBQUcsRUFBRyxlQUFlLENBQUM7SUFDdEIsbUJBQW1CLEVBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxDQUFNO0lBQzFDLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQ2xDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQ2pDLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBTTtJQUU1QixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxDQUFNO0lBQzVDLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLENBQU07SUFHL0MsTUFBTSxDQUFDLEVBQUUsVUFBVSxDQUFDO0lBQ3BCLHFCQUFxQixDQUFDLEVBQUUsWUFBWSxDQUFDO0lBQ3JDLFlBQVksQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUU1QixhQUFhLENBQUMsRUFBRSxhQUFhLENBQUM7SUFHckMsT0FBTyxDQUFDLFlBQVksQ0FBZTtJQUNuQyxPQUFPLENBQUMscUJBQXFCLENBQU07SUFFbkMsWUFDa0IsUUFBUSxFQUFFLE1BQU0sRUFDekIsZ0JBQWdCLEVBQUUsTUFBTSxFQUN4QixZQUFZLEVBQUUsTUFBTSxFQUNwQixrQkFBa0IsRUFBRSxNQUFNLEVBQ2pDLHNCQUFzQixFQUFFLFlBQVksRUFDN0IsYUFBYSxTQUFJLEVBRWhCLFdBQVcsQ0FBQyxvQkFBUSxFQUM1QixlQUFlLENBQUMsRUFBRSxPQUFPLEVBbUQxQjtJQUVELE9BQWEsTUFBTSxDQUFDLEVBQ2xCLFFBQVEsRUFDUixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLFFBQVEsRUFDUixXQUFXLEVBQ1gsYUFBYSxFQUNiLGVBQWUsRUFDaEIsRUFBRTtRQUNELFFBQVEsRUFBRSxNQUFNLENBQUM7UUFDakIsYUFBYSxFQUFFLE1BQU0sQ0FBQztRQUN0QixrQkFBa0IsRUFBRSxNQUFNLENBQUM7UUFDM0IsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ2xCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNyQixhQUFhLENBQUMsRUFBRSxZQUFZLENBQUM7UUFDN0IsZUFBZSxDQUFDLEVBQUUsT0FBTyxDQUFDO0tBQzNCLDJCQXFCQTtJQUVELElBQUksYUFBYSx1QkFLaEI7SUFFSyxnQkFBZ0Isa0JBV3JCO0lBRUQsYUFBYTs7TUFnQlo7SUFFSyxjQUFjLGtCQXdFbkI7SUFFSyxZQUFZLGtCQVlqQjtJQUVLLGtCQUFrQixrQkFTdkI7SUFFSyxpQkFBaUIsa0JBVXRCO0lBRUssV0FBVzs7O09BRWhCO1lBRWEsWUFBWTtJQVFwQixLQUFLLGtCQTBCVjtJQUVLLFNBQVMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsaUJBV3hDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0csMEJBQTBCLENBQzlCLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxFQUN6QixpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFDMUIsY0FBYyxTQUFLLEVBQ25CLG9CQUFvQixTQUFNLEVBQzFCLE1BQU0sR0FBRSxTQUFTLEVBQW1CLGlCQWlEckM7SUFFSyxRQUFRLGtCQUliO0lBRUssWUFBWSxJQUFJLE9BQU8sQ0FBQztRQUM1QixNQUFNLEVBQUUsY0FBYyxDQUFDO1FBQ3ZCLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RSxnQkFBZ0IsRUFBRSw4QkFBOEIsR0FBRyw2QkFBNkIsR0FBRyxTQUFTLENBQUM7UUFDN0YsWUFBWSxFQUFFLG9CQUFvQixDQUFDO0tBQ3BDLENBQUMsQ0F5QkQ7Q0FDRiJ9