import EventEmitter from 'events';

declare type ExportFormat = "svg" | "png" | "ps" | "eps" | "pdf" | "emf" | "wmf" | "xaml";
declare type ImportFormat = "ai" | "cdr" | "vsd" | "pdf" | "jpg" | "jpeg" | "png" | "gif" | "bmp";
interface Config {
    format: ExportFormat;
    width: number;
    height: number;
    force: boolean;
}
declare type OutputConfig = {
    [key in ExportFormat]?: (number | string)[] | null;
};
declare type ConverterEvent = "conversion-start" | "conversion-finish" | "directory-start" | "directory-finish" | "file-start" | "file-finish" | "task-start" | "task-succeeded" | "task-skipped" | "task-failed";

declare class Converter extends EventEmitter {
    private imports;
    private exports;
    emit(event: ConverterEvent, ...args: unknown[]): boolean;
    private convert;
    convert_file(source: string, dir: string, parent_config: OutputConfig, force?: boolean, verbose?: boolean): Promise<void>;
    convert_directory(source: string, dir: string, types: ImportFormat[], parent_config: OutputConfig, force?: boolean, verbose?: boolean, recursive?: boolean): Promise<void>;
    export(format: ExportFormat, sizes?: (number | string)[] | null): this;
    clear_exports(): this;
    import(format: ImportFormat): this;
    clear_imports(): this;
    run(source: string, dest: string, recursive?: boolean, force?: boolean, verbose?: boolean): Promise<void>;
}
declare interface Converter {
    on(event: "conversion-start", listener: (source: string, dest: string) => void): this;
    on(event: "conversion-finish", listener: (source: string, dest: string) => void): this;
    on(event: "directory-start", listener: (source: string, dest: string, types: ImportFormat[], config: OutputConfig, force: boolean, verbose: boolean, recursive: boolean) => void): this;
    on(event: "directory-finish", listener: (source: string, dest: string, types: ImportFormat[], config: OutputConfig, force: boolean, verbose: boolean, recursive: boolean) => void): this;
    on(event: "file-start", listener: (source: string, dest: string, config: OutputConfig, force: boolean, verbose: boolean) => void): this;
    on(event: "file-finish", listener: (source: string, dest: string, config: OutputConfig, force: boolean, verbose: boolean) => void): this;
    on(event: "task-start", listener: (source: string, dest: string, config: Config) => void): this;
    on(event: "task-succeeded", listener: (source: string, dest: string, config: Config) => void): this;
    on(event: "task-skipped", listener: (source: string, dest: string, config: Config) => void): this;
    on(event: "task-failed", listener: (source: string, dest: string, config: Config) => void): this;
}

declare const _default: Converter;

export { Config, Converter, ConverterEvent, ExportFormat, ImportFormat, OutputConfig, _default as default };
