import type { BuildConfig, BuildRawConfig } from '..';
import type { Mock, MockInstance } from 'vitest';
import { Run } from '../run';
import { Build } from '..';
export declare const handler: Mock<(...args: any[]) => any>;
declare const Mocked: unique symbol;
export type RunSpy = Run & {
    glob: MockInstance<Run['glob']>;
    copy: MockInstance<Run['copy']>;
    read: MockInstance<Run['read']>;
    write: MockInstance<Run['write']>;
    [Mocked]: boolean;
};
export declare function setupRun(config: DeepPartial<BuildConfig>, run?: Run): RunSpy;
export declare function run(build: Build): Run;
type BuildState = {
    globs?: Hash<NormalizedPath[]>;
    files?: Hash<string>;
};
export declare function setupBuild(state?: BuildState): Build;
export declare function runBuild(argv: string, build?: Build): Promise<void>;
export declare function testConfig(name: string, args: string, result: DeepPartial<BuildConfig>): void;
export declare function testConfig(name: string, args: string, error: Error): void;
export declare function testConfig(name: string, args: string, config: DeepPartial<BuildRawConfig>, result: DeepPartial<BuildConfig>): void;
export declare function testConfig(name: string, args: string, config: DeepPartial<BuildRawConfig>, error: Error): void;
export declare function testNestedBooleanFlag(name: string, arg: string, defaults: boolean, configPath: string[]): void;
export declare function testBooleanFlag(name: string, arg: string, defaults: boolean): void;
export {};
