import { Arguments } from 'yargs';
import { mockDebugger } from '@boost/debug/lib/testing';
import Console from './Console';
import Context from './Context';
import Plugin from './Plugin';
import Routine from './Routine';
import Task, { TaskAction } from './Task';
import Tool, { ToolConfig, ToolOptions, ToolPluginRegistry } from './Tool';
import { PackageConfig, PluginSetting } from './types';
export { mockDebugger };
export interface TestToolPlugins extends ToolPluginRegistry {
    plugin: Plugin;
}
export interface TestToolConfig extends ToolConfig {
    plugins: PluginSetting<Plugin>;
}
export declare type TestTool = Tool<TestToolPlugins, TestToolConfig>;
export declare function stubArgs<T extends object = {}>(fields?: Partial<T>): Arguments<T>;
export declare function stubPackageJson<T extends object = {}>(fields?: Partial<PackageConfig & T>): PackageConfig & T;
export declare function stubToolConfig<T extends ToolConfig = TestToolConfig>(config?: Partial<T>): T;
export declare function mockTool<P extends ToolPluginRegistry = TestToolPlugins, C extends ToolConfig = TestToolConfig>(options?: Partial<ToolOptions>, config?: Partial<C>, injectPlugin?: boolean): Tool<P, C>;
export declare function mockConsole(tool: Tool<any, any>): Console;
export declare class MockRoutine<Ctx extends Context, T extends Tool<any, any> = TestTool> extends Routine<Ctx, T> {
    execute(context: Ctx, value: unknown): Promise<unknown>;
}
export declare function mockRoutine<Ctx extends Context, T extends Tool<any, any> = TestTool>(tool: T, key?: string, title?: string): Routine<Ctx, T>;
export declare function mockTask<Ctx extends Context>(action?: TaskAction<Ctx> | null, title?: string): Task<Ctx>;
//# sourceMappingURL=testUtils.d.ts.map