import type { RollupCheatCodes } from '@aztec/aztec/testing';
import type { L1ContractAddresses, ViemPublicClient } from '@aztec/ethereum';
import type { Logger } from '@aztec/foundation/log';
import { type AztecNodeAdmin, type AztecNodeAdminConfig } from '@aztec/stdlib/interfaces/client';
import { ChildProcess } from 'child_process';
import { z } from 'zod';
declare const testConfigSchema: z.ZodObject<{
    NAMESPACE: z.ZodDefault<z.ZodString>;
    REAL_VERIFIER: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodEffects<z.ZodNumber, 0 | 1, number>, boolean, number>, z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, boolean, string>]>>>;
    CREATE_ETH_DEVNET: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodEffects<z.ZodNumber, 0 | 1, number>, boolean, number>, z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, boolean, string>]>>>;
    L1_RPC_URLS_JSON: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    NAMESPACE: string;
    REAL_VERIFIER: boolean;
    CREATE_ETH_DEVNET: boolean;
    L1_RPC_URLS_JSON?: string | undefined;
}, {
    NAMESPACE?: string | undefined;
    REAL_VERIFIER?: string | number | boolean | undefined;
    CREATE_ETH_DEVNET?: string | number | boolean | undefined;
    L1_RPC_URLS_JSON?: string | undefined;
}>;
export type TestConfig = z.infer<typeof testConfigSchema>;
export declare function setupEnvironment(env: unknown): TestConfig;
export declare function getAztecBin(): string;
/**
 * Runs the Aztec binary
 * @param args - The arguments to pass to the Aztec binary
 * @param logger - The logger to use
 * @param env - Optional environment variables to set for the process
 * @returns The exit code of the Aztec binary
 */
export declare function runAztecBin(args: string[], logger: Logger, env?: Record<string, string>): Promise<number>;
export declare function runProjectScript(script: string, args: string[], logger: Logger, env?: Record<string, string>): Promise<number>;
export declare function startPortForward({ resource, namespace, containerPort, hostPort, }: {
    resource: string;
    namespace: string;
    containerPort: number;
    hostPort?: number;
}): Promise<{
    process: ChildProcess;
    port: number;
}>;
export declare function startPortForwardForRPC(namespace: string): Promise<{
    process: ChildProcess;
    port: number;
}>;
export declare function startPortForwardForEthereum(namespace: string): Promise<{
    process: ChildProcess;
    port: number;
}>;
export declare function deleteResourceByName({ resource, namespace, name, force, }: {
    resource: string;
    namespace: string;
    name: string;
    force?: boolean;
}): Promise<string>;
export declare function deleteResourceByLabel({ resource, namespace, label, timeout, force, }: {
    resource: string;
    namespace: string;
    label: string;
    timeout?: string;
    force?: boolean;
}): Promise<string>;
export declare function waitForResourceByLabel({ resource, label, namespace, condition, timeout, }: {
    resource: string;
    label: string;
    namespace: string;
    condition?: string;
    timeout?: string;
}): Promise<string>;
export declare function getChartDir(spartanDir: string, chartName: string): string;
/**
 * Installs a Helm chart with the given parameters.
 * @param instanceName - The name of the Helm chart instance.
 * @param targetNamespace - The namespace with the resources to be affected by the Helm chart.
 * @param valuesFile - The values file to use for the Helm chart.
 * @param chaosMeshNamespace - The namespace to install the Helm chart in.
 * @param timeout - The timeout for the Helm command.
 * @param clean - Whether to clean up the Helm chart before installing it.
 * @returns The stdout of the Helm command.
 * @throws If the Helm command fails.
 *
 * Example usage:
 * ```typescript
 * const stdout = await installChaosMeshChart({ instanceName: 'force-reorg', targetNamespace: 'smoke', valuesFile: 'prover-failure.yaml'});
 * console.log(stdout);
 * ```
 */
export declare function installChaosMeshChart({ instanceName, targetNamespace, valuesFile, helmChartDir, chaosMeshNamespace, timeout, clean, values, logger, }: {
    instanceName: string;
    targetNamespace: string;
    valuesFile: string;
    helmChartDir: string;
    chaosMeshNamespace?: string;
    timeout?: string;
    clean?: boolean;
    values?: Record<string, string | number>;
    logger: Logger;
}): Promise<string>;
export declare function applyProverFailure({ namespace, spartanDir, durationSeconds, logger, }: {
    namespace: string;
    spartanDir: string;
    durationSeconds: number;
    logger: Logger;
}): Promise<string>;
export declare function applyProverKill({ namespace, spartanDir, logger, }: {
    namespace: string;
    spartanDir: string;
    logger: Logger;
}): Promise<string>;
export declare function applyProverBrokerKill({ namespace, spartanDir, logger, }: {
    namespace: string;
    spartanDir: string;
    logger: Logger;
}): Promise<string>;
export declare function applyBootNodeFailure({ namespace, spartanDir, durationSeconds, logger, }: {
    namespace: string;
    spartanDir: string;
    durationSeconds: number;
    logger: Logger;
}): Promise<string>;
export declare function applyValidatorKill({ namespace, spartanDir, logger, values, }: {
    namespace: string;
    spartanDir: string;
    logger: Logger;
    values?: Record<string, string | number>;
}): Promise<string>;
export declare function applyNetworkShaping({ valuesFile, namespace, spartanDir, logger, }: {
    valuesFile: string;
    namespace: string;
    spartanDir: string;
    logger: Logger;
}): Promise<string>;
export declare function awaitL2BlockNumber(rollupCheatCodes: RollupCheatCodes, blockNumber: bigint, timeoutSeconds: number, logger: Logger): Promise<void>;
export declare function restartBot(namespace: string, logger: Logger): Promise<void>;
export declare function enableValidatorDynamicBootNode(instanceName: string, namespace: string, spartanDir: string, logger: Logger): Promise<void>;
export declare function getSequencers(namespace: string): Promise<string[]>;
export declare function updateSequencersConfig(env: TestConfig, config: Partial<AztecNodeAdminConfig>): Promise<AztecNodeAdminConfig[]>;
export declare function getSequencersConfig(env: TestConfig): Promise<AztecNodeAdminConfig[]>;
export declare function withSequencersAdmin<T>(env: TestConfig, fn: (node: AztecNodeAdmin) => Promise<T>): Promise<T[]>;
/**
 * Returns a public viem client to the eth execution node. If it was part of a local eth devnet,
 * it first port-forwards the service and points to it. Otherwise, just uses the external RPC url.
 */
export declare function getPublicViemClient(env: TestConfig, 
/** If set, will push the new process into it */
processes?: ChildProcess[]): Promise<{
    url: string;
    client: ViemPublicClient;
    process?: ChildProcess;
}>;
/** Queries an Aztec node for the L1 deployment addresses */
export declare function getL1DeploymentAddresses(env: TestConfig): Promise<L1ContractAddresses>;
/**
 * Rolls the Aztec pods in the given namespace.
 * @param namespace - The namespace to roll the Aztec pods in.
 * @dev - IMPORTANT: This function DOES NOT delete the underlying PVCs.
 *        This means that the pods will be restarted with the same persistent storage.
 *        This is useful for testing, but you should be aware of the implications.
 */
export declare function rollAztecPods(namespace: string): Promise<void>;
/**
 * Returns the absolute path to the git repository root
 */
export declare function getGitProjectRoot(): string;
export {};
//# sourceMappingURL=utils.d.ts.map