import { Formatter } from './Formatter';
import { BabelCodeFrameOptions } from './CodeFrameFormatter';
declare type NotConfigurableFormatterType = undefined | 'basic' | Formatter;
declare type ConfigurableFormatterType = 'codeframe';
declare type FormatterType = NotConfigurableFormatterType | ConfigurableFormatterType;
declare type ConfigurableFormatterOptions = {
    codeframe: BabelCodeFrameOptions;
};
declare type ComplexFormatterOptions<T extends FormatterType> = T extends ConfigurableFormatterType ? ConfigurableFormatterOptions[T] : never;
declare function createFormatter<T extends NotConfigurableFormatterType>(type?: T): Formatter;
declare function createFormatter<T extends ConfigurableFormatterType>(type: T, options?: ConfigurableFormatterOptions[T]): Formatter;
declare function createFormatter<T extends FormatterType>(type: T, options?: object): Formatter;
export { createFormatter, FormatterType, ComplexFormatterOptions, NotConfigurableFormatterType, ConfigurableFormatterType, ConfigurableFormatterOptions, };