import { Ora } from 'ora';
import { TableCell, TableOptions, UI } from './ui';
export interface ProgressResult {
    successful: boolean;
    message: string;
}
declare type TableData<Key extends string> = Record<Key, TableCell>[] | undefined | null;
export declare class CommandLineUI implements UI {
    private readonly verbose;
    private readonly logger;
    private readonly spinner;
    private readonly promptInternal;
    private insideProgress;
    private addedProgressPadding;
    private static ANSI_MOVE_CURSOR_UP_ONE;
    private static ANSI_CLEAR_CURSOR_LINE;
    private static NON_TTY_ENV_DEFAULT_COLUMNS;
    constructor(verbose: () => boolean, spinner?: Ora, logger?: Console);
    private getSeasonalSpinner;
    private prompt;
    get traceEnabled(): boolean;
    get debugEnabled(): boolean;
    displayProgress<Result>(progress: () => Promise<Result>, startText: string, successText: string | ((result: Result) => string | ProgressResult)): Promise<Result>;
    displayTemporaryMessage<Result>(progress: () => Promise<Result>, waitText: string): Promise<Result>;
    trace(message: string): void;
    debug(message: string): void;
    info(message: string): void;
    warn(message: string): void;
    error(error: Error, { pad }?: {
        pad?: boolean | undefined;
    }): void;
    emptyLine(): void;
    confirm(message: string): Promise<boolean>;
    promptForText(message: string, defaultValue?: string): Promise<string>;
    promptForSecret(message: string): Promise<string>;
    promptForList<T extends string>(message: string, choices: T[], config?: {
        format?: (choice: T) => string;
    }, pageSize?: number): Promise<T>;
    promptForTable(message: string, infoMessage: string, columns: string[], choices: object[], isBorderless?: boolean): Promise<number[]>;
    promptForSingleChoiceTable(message: string, infoMessage: string, columns: string[], choices: object[]): Promise<number>;
    private getScaledTableHeight;
    private clearLastNLines;
    dynamicTable<Key extends string>(head: [Key, string][], getData: () => Promise<TableData<Key>>, tableRefreshIntervalMs: number, { emptyMessage, preMessage, postMessage, format, groupRows }?: Omit<TableOptions<Key>, 'json'>): Promise<void>;
    table<Key extends string>(head: [Key, string][], data: TableData<Key>, { json, emptyMessage, preMessage, postMessage, format, groupRows }?: TableOptions<Key>): void;
    private formatTableValue;
    private shouldLogTableCell;
    private getTable;
    private logTable;
    private log;
    private logSuccess;
    private logError;
    private stopProgressSpinner;
    private replaceStartTextOnSuccess;
    private stopWaitSpinner;
    clearSpinner(): void;
    private promptForString;
    private registerCustomUIElements;
    formatKeyValueList(items: {
        key: string;
        value: string;
    }[], indent?: string, addNewLine?: boolean): string;
    formatYamlProperties(properties: any, key: string, showMessage?: boolean): string;
}
export {};
//# sourceMappingURL=command-line-ui.d.ts.map