import { NodeSizeDto } from '../../../src/modules/providers/dto/node-size.dto';
interface ArrowSelectItem {
    label: string;
    disabled?: boolean;
    disabledReason?: string;
}
/**
 * Generic arrow-key interactive selector.
 * Returns the selected index, or -1 if cancelled (Ctrl+C / ESC).
 */
export declare function selectWithArrows(title: string, items: ArrowSelectItem[]): Promise<number>;
/**
 * Prompt for masked/hidden input (for API tokens).
 * Shows a blinking cursor while empty, asterisks once input arrives.
 * Supports both typing and paste (Cmd+V), including bracketed paste mode.
 */
export declare function promptMaskedInput(message: string): Promise<string>;
/**
 * Interactive provider setup wizard.
 * Shows arrow-key provider selection, prompts for token, saves to ConfigStorage.
 * Returns true if setup completed successfully, false if cancelled.
 */
export declare function runProviderSetupWizard(): Promise<boolean>;
/**
 * Prompt user for yes/no confirmation
 */
export declare function confirmPrompt(message: string, defaultValue?: boolean): Promise<boolean>;
export interface PromptInputOptions {
    message: string;
    default?: string;
    /** Returns an error message string when invalid, or null when valid. */
    validate?: (value: string) => string | null;
}
/**
 * Free-text prompt with optional default and per-character validation loop.
 *
 * Use this whenever a required value must come from the user — e.g. the
 * preferences resolver falls through here when nothing is set at any layer.
 *
 * Fails loudly in non-TTY contexts (CI, piped stdin) so commands break instead
 * of hanging on input that never arrives. For yes/no use `confirmPrompt`,
 * for destructive type-the-name use `confirmByTypingPrompt`, for masked
 * tokens use `promptMaskedInput`.
 */
export declare function promptInput(opts: PromptInputOptions): Promise<string>;
/**
 * Prompt the user to type an exact string to confirm a destructive action.
 * Returns true only when the input matches `expected` verbatim.
 */
export declare function confirmByTypingPrompt(message: string, expected: string): Promise<boolean>;
/**
 * Prompt user to select from a list of server types using arrow keys
 */
export declare function selectServerTypePrompt(serverTypes: NodeSizeDto[], message?: string): Promise<NodeSizeDto | null>;
/**
 * Display a warning message about deprecated server type
 */
export declare function displayDeprecationWarning(deprecatedType: string, suggestedType: NodeSizeDto, originalPrice?: string): void;
/**
 * Display server type not found error
 */
export declare function displayServerTypeNotFoundError(requestedType: string, provider: string): void;
/**
 * Prompt user to confirm alternative server type
 */
export declare function confirmAlternativeServerType(deprecatedType: string, suggestedType: NodeSizeDto, originalPrice?: string): Promise<boolean>;
export {};
