import { Maybe } from 'brookjs-types'; declare type RunnerResult = ReturnType extends Promise ? T : never; export declare type Level = 'notice' | 'warn' | 'error' | 'ok'; export declare type Log = { level: Level; msg: string; }; export declare type NewProjectConfig = { name: string; version: string; description: string; dir: string; license: string; typescript: boolean; }; export declare type ConfiguringState = { logs: Log[]; result: null; error: null; cwd: string; configuring: Configurable; config: { [K in keyof NewProjectConfig]: Maybe; }; step: 'configure'; }; export declare type ConfiguredStep = 'confirm' | 'creating' | 'cancelled'; export declare type ErrorState = { logs: Log[]; result: null; error: Error; cwd: string; configuring: null; config: NewProjectConfig; step: 'error'; }; export declare type CompleteState = { logs: Log[]; result: RunnerResult; error: null; cwd: string; configuring: null; config: NewProjectConfig; step: 'complete'; }; export declare type InteractingState = { logs: Log[]; result: null; error: null; cwd: string; configuring: null; config: NewProjectConfig; step: ConfiguredStep; }; export declare type ConfiguredState = ErrorState | CompleteState | InteractingState; export declare type State = ConfiguringState | ConfiguredState; export declare type Step = State['step']; export declare type Configurable = Exclude; export declare type LogAction = { type: 'LOG'; payload: Log; }; export declare type Action = { type: 'INPUT'; payload: { value: string; }; } | { type: 'SUBMIT'; } | { type: 'CONFIRM'; payload: { value: boolean; }; } | LogAction | { type: 'CREATED'; payload: { result: RunnerResult; }; } | { type: 'FAILED'; error: true; payload: { error: Error; }; }; export declare type Args = { name: string; yes: boolean; typescript: boolean; }; export declare const unreachable: (x: never) => never; export {};