export type PromptShellChoice = 'local' | 'cloud' | 'status' | 'connect' | 'exit';
export interface PromptShellRuntime {
    input?: NodeJS.ReadableStream;
    output?: NodeJS.WritableStream;
    signal?: AbortSignal;
}
export interface PromptShell {
    selectFirstScreen(runtime?: PromptShellRuntime): Promise<PromptShellChoice>;
}
export interface InquirerPromptShellDeps {
    promptKit?: PromptKit;
    selectPrompt?: SelectPrompt;
}
export declare class PromptCancelledError extends Error {
    readonly kind: 'abort' | 'exit';
    constructor(kind: 'abort' | 'exit');
}
export interface PromptChoice<Value> {
    value: Value;
    name?: string;
    description?: string;
    short?: string;
    checked?: boolean;
    disabled?: boolean | string;
}
export interface SelectPromptConfig<Value> {
    message: string;
    choices: readonly PromptChoice<Value>[];
    default?: Value;
    pageSize?: number;
    loop?: boolean;
}
export interface CheckboxPromptConfig<Value> {
    message: string;
    choices: readonly PromptChoice<Value>[];
    pageSize?: number;
    loop?: boolean;
    required?: boolean;
}
export interface PromptKit {
    select<Value>(config: SelectPromptConfig<Value>, runtime?: PromptShellRuntime): Promise<Value>;
    checkbox<Value>(config: CheckboxPromptConfig<Value>, runtime?: PromptShellRuntime): Promise<Value[]>;
}
type SelectPrompt = <Value>(config: {
    message: string;
    choices: readonly PromptChoice<Value>[];
    default?: Value;
    pageSize?: number;
    loop?: boolean;
}, context?: {
    input?: NodeJS.ReadableStream;
    output?: NodeJS.WritableStream;
    clearPromptOnDone?: boolean;
    signal?: AbortSignal;
}) => Promise<Value>;
type CheckboxPrompt = <Value>(config: {
    message: string;
    choices: readonly PromptChoice<Value>[];
    pageSize?: number;
    loop?: boolean;
    required?: boolean;
}, context?: {
    input?: NodeJS.ReadableStream;
    output?: NodeJS.WritableStream;
    clearPromptOnDone?: boolean;
    signal?: AbortSignal;
}) => Promise<Value[]>;
export declare const FIRST_SCREEN_PROMPT_CHOICES: readonly {
    value: PromptShellChoice;
    name: string;
    description: string;
}[];
export declare function createInquirerPromptKit(deps?: {
    selectPrompt?: SelectPrompt;
    checkboxPrompt?: CheckboxPrompt;
}): PromptKit;
export declare function createInquirerPromptShell(deps?: InquirerPromptShellDeps): PromptShell;
export declare function isPromptCancellation(error: unknown): error is PromptCancelledError;
export {};
