import { type AztecAddress, type EthAddress, type Fr, type FunctionSelector } from '@aztec/circuits.js';
import { z } from 'zod';
type AllowedInstance = {
    address: AztecAddress;
};
type AllowedInstanceFunction = {
    address: AztecAddress;
    selector: FunctionSelector;
};
type AllowedClass = {
    classId: Fr;
};
type AllowedClassFunction = {
    classId: Fr;
    selector: FunctionSelector;
};
export type AllowedElement = AllowedInstance | AllowedInstanceFunction | AllowedClass | AllowedClassFunction;
/**
 * The sequencer configuration.
 */
export interface SequencerConfig {
    /** The number of ms to wait between polling for pending txs. */
    transactionPollingIntervalMS?: number;
    /** The maximum number of txs to include in a block. */
    maxTxsPerBlock?: number;
    /** The minimum number of txs to include in a block. */
    minTxsPerBlock?: number;
    /** The maximum L2 block gas. */
    maxL2BlockGas?: number;
    /** The maximum DA block gas. */
    maxDABlockGas?: number;
    /** Recipient of block reward. */
    coinbase?: EthAddress;
    /** Address to receive fees. */
    feeRecipient?: AztecAddress;
    /** The working directory to use for simulation/proving */
    acvmWorkingDirectory?: string;
    /** The path to the ACVM binary */
    acvmBinaryPath?: string;
    /** The list of functions calls allowed to run in setup */
    allowedInSetup?: AllowedElement[];
    /** Max block size */
    maxBlockSizeInBytes?: number;
    /** Whether to require every tx to have a fee payer */
    enforceFees?: boolean;
    /** Payload address to vote for */
    governanceProposerPayload?: EthAddress;
    /** Whether to enforce the time table when building blocks */
    enforceTimeTable?: boolean;
    /** How many seconds into an L1 slot we can still send a tx and get it mined. */
    maxL1TxInclusionTimeIntoSlot?: number;
}
export declare const SequencerConfigSchema: z.ZodObject<{
    transactionPollingIntervalMS: z.ZodOptional<z.ZodNumber>;
    maxTxsPerBlock: z.ZodOptional<z.ZodNumber>;
    minTxsPerBlock: z.ZodOptional<z.ZodNumber>;
    maxL2BlockGas: z.ZodOptional<z.ZodNumber>;
    maxDABlockGas: z.ZodOptional<z.ZodNumber>;
    coinbase: z.ZodOptional<z.ZodType<EthAddress, any, string>>;
    feeRecipient: z.ZodOptional<z.ZodType<AztecAddress, any, string>>;
    acvmWorkingDirectory: z.ZodOptional<z.ZodString>;
    acvmBinaryPath: z.ZodOptional<z.ZodString>;
    allowedInSetup: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{
        address: z.ZodType<AztecAddress, any, string>;
        selector: z.ZodType<FunctionSelector, any, string>;
    }, "strip", z.ZodTypeAny, {
        selector: FunctionSelector;
        address: AztecAddress;
    }, {
        selector: string;
        address: string;
    }>, z.ZodObject<{
        address: z.ZodType<AztecAddress, any, string>;
    }, "strip", z.ZodTypeAny, {
        address: AztecAddress;
    }, {
        address: string;
    }>, z.ZodObject<{
        classId: z.ZodType<Fr, any, string>;
        selector: z.ZodType<FunctionSelector, any, string>;
    }, "strip", z.ZodTypeAny, {
        selector: FunctionSelector;
        classId: Fr;
    }, {
        selector: string;
        classId: string;
    }>, z.ZodObject<{
        classId: z.ZodType<Fr, any, string>;
    }, "strip", z.ZodTypeAny, {
        classId: Fr;
    }, {
        classId: string;
    }>]>, "many">>;
    maxBlockSizeInBytes: z.ZodOptional<z.ZodNumber>;
    enforceFees: z.ZodOptional<z.ZodBoolean>;
    governanceProposerPayload: z.ZodOptional<z.ZodType<EthAddress, any, string>>;
    maxL1TxInclusionTimeIntoSlot: z.ZodOptional<z.ZodNumber>;
    enforceTimeTable: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    transactionPollingIntervalMS?: number | undefined;
    maxTxsPerBlock?: number | undefined;
    minTxsPerBlock?: number | undefined;
    maxL2BlockGas?: number | undefined;
    maxDABlockGas?: number | undefined;
    coinbase?: EthAddress | undefined;
    feeRecipient?: AztecAddress | undefined;
    acvmWorkingDirectory?: string | undefined;
    acvmBinaryPath?: string | undefined;
    allowedInSetup?: ({
        selector: FunctionSelector;
        address: AztecAddress;
    } | {
        address: AztecAddress;
    } | {
        selector: FunctionSelector;
        classId: Fr;
    } | {
        classId: Fr;
    })[] | undefined;
    maxBlockSizeInBytes?: number | undefined;
    enforceFees?: boolean | undefined;
    governanceProposerPayload?: EthAddress | undefined;
    maxL1TxInclusionTimeIntoSlot?: number | undefined;
    enforceTimeTable?: boolean | undefined;
}, {
    transactionPollingIntervalMS?: number | undefined;
    maxTxsPerBlock?: number | undefined;
    minTxsPerBlock?: number | undefined;
    maxL2BlockGas?: number | undefined;
    maxDABlockGas?: number | undefined;
    coinbase?: string | undefined;
    feeRecipient?: string | undefined;
    acvmWorkingDirectory?: string | undefined;
    acvmBinaryPath?: string | undefined;
    allowedInSetup?: ({
        selector: string;
        address: string;
    } | {
        address: string;
    } | {
        selector: string;
        classId: string;
    } | {
        classId: string;
    })[] | undefined;
    maxBlockSizeInBytes?: number | undefined;
    enforceFees?: boolean | undefined;
    governanceProposerPayload?: string | undefined;
    maxL1TxInclusionTimeIntoSlot?: number | undefined;
    enforceTimeTable?: boolean | undefined;
}>;
export {};
//# sourceMappingURL=configs.d.ts.map