import "reflect-metadata";
import { IBetterLogger } from "@codiac.io/codiac-common/IBetterLogger";
import { EntryValue, choice, IUserInputProvider, FileSelectionOptions, FolderSelectionOptions } from "./i-user-input-provider";
/** For use in a non-TTY scenario: Throws on any request for user interaction.
 */
export declare class ThrowingUserInputProvider implements IUserInputProvider {
    private logger;
    private userMessageHandling;
    /**
     *
     * @param logger
     * @param userMessageHandling Declares what to do with user messages (optional: defaults to `write`); `write`: write the message to stdout, `suppress`: do nothing, `throw` raise an exception describing that user messages are not permitted.
     */
    constructor(logger: IBetterLogger, userMessageHandling?: "write" | "suppress" | "throw");
    userMessage(message: string): void;
    prompt<T extends EntryValue>(id: string, prompt: string, required?: boolean, defaultValue?: T): Promise<T | undefined>;
    promptPassword(id: string, prompt: string): Promise<string>;
    promptSelect<T extends EntryValue>(id: string, prompt: string, choices: choice<T>[], multiSelect?: boolean): Promise<T | undefined>;
    promptSelectFile(id: string, prompt: string, fileOptions: FileSelectionOptions): Promise<string>;
    promptSelectFolder(id: string, prompt: string, folderOptions: FolderSelectionOptions): Promise<string>;
    promptConfirm(id: string, prompt: string, defaultValue?: boolean): Promise<boolean>;
    openUrl(url: string): Promise<void>;
    startSpinner(userMessage: string): void;
    stopSpinner(userMessage: string): void;
}
