/**
 * Inquirer.js
 * A collection of common interactive command line user interfaces.
 */
import { Separator } from '@inquirer/prompts';
import type { Prettify, UnionToIntersection } from '@inquirer/type';
import { default as PromptsRunner } from './ui/prompt.mjs';
import type { LegacyPromptConstructor, PromptFn } from './ui/prompt.mjs';
import type { Answers, Question, QuestionAnswerMap, QuestionObservable, StreamOptions } from './types.mjs';
export type { QuestionMap } from './types.mjs';
type PromptReturnType<T> = (Promise<Prettify<T>> & {
    ui: PromptsRunner<Prettify<T>>;
}) | never;
/**
 * Create a new self-contained prompt module.
 */
export declare function createPromptModule(opt?: StreamOptions): {
    <const AnswerList extends readonly Answers[], PrefilledAnswers extends Answers = object>(questions: { [I in keyof AnswerList]: Question<PrefilledAnswers & AnswerList[I]>; }, answers?: PrefilledAnswers): PromptReturnType<PrefilledAnswers & UnionToIntersection<AnswerList[number]>>;
    <const Map extends QuestionAnswerMap<A>, const A extends Answers<Extract<keyof Map, string>>, PrefilledAnswers extends Answers = object>(questions: Map, answers?: PrefilledAnswers): PromptReturnType<PrefilledAnswers & A>;
    <const A extends Answers, PrefilledAnswers extends Answers = object>(questions: QuestionObservable<A>, answers?: PrefilledAnswers): PromptReturnType<PrefilledAnswers & A>;
    <const A extends Answers, PrefilledAnswers extends Answers = object>(questions: Question<A>, answers?: PrefilledAnswers): PromptReturnType<PrefilledAnswers & A>;
    prompts: {
        [x: string]: LegacyPromptConstructor | PromptFn<any, any>;
    };
    /**
     * Register a prompt type
     */
    registerPrompt(name: string, prompt: LegacyPromptConstructor | PromptFn): any;
    /**
     * Register the defaults provider prompts
     */
    restoreDefaultPrompts(): void;
};
declare function registerPrompt(name: string, newPrompt: LegacyPromptConstructor): void;
declare function restoreDefaultPrompts(): void;
declare const inquirer: {
    prompt: {
        <const AnswerList extends readonly Answers[], PrefilledAnswers extends Answers = object>(questions: { [I in keyof AnswerList]: Question<PrefilledAnswers & AnswerList[I]>; }, answers?: PrefilledAnswers): PromptReturnType<PrefilledAnswers & UnionToIntersection<AnswerList[number]>>;
        <const Map extends QuestionAnswerMap<A>, const A extends Answers<Extract<keyof Map, string>>, PrefilledAnswers extends Answers = object>(questions: Map, answers?: PrefilledAnswers): PromptReturnType<PrefilledAnswers & A>;
        <const A extends Answers, PrefilledAnswers extends Answers = object>(questions: QuestionObservable<A>, answers?: PrefilledAnswers): PromptReturnType<PrefilledAnswers & A>;
        <const A extends Answers, PrefilledAnswers extends Answers = object>(questions: Question<A>, answers?: PrefilledAnswers): PromptReturnType<PrefilledAnswers & A>;
        prompts: {
            [x: string]: LegacyPromptConstructor | PromptFn<any, any>;
        };
        /**
         * Register a prompt type
         */
        registerPrompt(name: string, prompt: LegacyPromptConstructor | PromptFn): any;
        /**
         * Register the defaults provider prompts
         */
        restoreDefaultPrompts(): void;
    };
    ui: {
        Prompt: typeof PromptsRunner;
    };
    createPromptModule: typeof createPromptModule;
    registerPrompt: typeof registerPrompt;
    restoreDefaultPrompts: typeof restoreDefaultPrompts;
    Separator: typeof Separator;
};
export default inquirer;
