import { type Lang, type Key } from './i18n.js';
export declare const BACK: unique symbol;
export type BackSentinel = typeof BACK;
export declare class UserAbortError extends Error {
    constructor();
}
export interface MenuChoice<T> {
    /** Value returned when this choice is picked. */
    value: T;
    /** Display name (already localized). */
    name: string;
    /** Optional dim-text description shown to the right. */
    description?: string;
    /** Optional separator before this item (renders a divider). */
    separatorBefore?: boolean;
    /** When true, item is shown but cannot be selected. */
    disabled?: boolean | string;
}
/**
 * Single-choice menu with arrow keys + Enter. If `back` is provided
 * (a key from i18n.ts pointing at a `← Back`-style string), an extra
 * back entry is appended; picking it returns the BACK sentinel.
 */
export declare function menu<T>(opts: {
    lang: Lang;
    message: string;
    choices: MenuChoice<T>[];
    back?: Key;
    default?: T;
}): Promise<T | BackSentinel>;
/**
 * Multi-select with Space to toggle. Always returns an array (possibly
 * empty). No back option — typical usage is "pick which IMs to enable";
 * cancel is via Ctrl-C → UserAbortError.
 */
export declare function multiSelect<T extends string>(opts: {
    lang: Lang;
    message: string;
    choices: Array<{
        value: T;
        name: string;
        description?: string;
        checked?: boolean;
    }>;
    required?: boolean;
}): Promise<T[]>;
/** Free-text input with optional default + validator. */
export declare function inputText(opts: {
    message: string;
    default?: string;
    validate?: (v: string) => true | string;
    required?: boolean;
}): Promise<string>;
/** Hidden input for secrets (no echo). */
export declare function inputSecret(opts: {
    message: string;
    required?: boolean;
    validate?: (v: string) => true | string;
}): Promise<string>;
/** Yes/no with arrow-key navigation. */
export declare function yesNo(opts: {
    message: string;
    default?: boolean;
}): Promise<boolean>;
//# sourceMappingURL=prompts.d.ts.map