import { Options } from 'prettier';
import { EventMap } from 'strict-event-emitter';
import { PrinterOptions } from '../printer/types';
import { OpenAPILatest } from '../types/openapi';
type RequiredWith<T, K extends keyof T> = T & {
    [P in K]-?: T[P];
};
export type OpenAPIOptions = PrinterOptions & {
    /**
     * 文件名称
     * @default ${module}.ts
     */
    fileName?: string;
    /**
     * openapi 的 document，可以是一个链接地址，也可以是本地路径，也可以是一个对象
     */
    document: OpenAPILatest.Document | string;
};
export type GeneratorOptions = PrinterOptions & {
    /**
     * 工作目录，默认为 process.cwd()
     */
    cwd?: string;
    /**
     * 生成文件目的地，默认为 src/apis
     */
    dest?: string;
    /**
     * 格式化配置，默认会读取当前工作目录下的配置文件
     */
    prettierOptions?: Options;
    /**
     * openapi 文档配置
     */
    documents: Record<string, OpenAPIOptions | string>;
};
export type StrictGeneratorOptions = RequiredWith<GeneratorOptions, 'cwd' | 'dest'>;
export type GeneratingStage = 'reading' | 'printing' | 'writing' | 'generated';
export type GeneratingOptions = OpenAPIOptions & Pick<StrictGeneratorOptions, 'cwd' | 'dest'>;
export interface GeneratorPayload {
    count: number;
}
export interface GeneratingPayload {
    index: number;
    count: number;
    name: string;
    stage: GeneratingStage;
    options: GeneratingOptions;
    file: string;
}
export interface GeneratorEmits extends EventMap {
    start: [GeneratorPayload];
    end: [GeneratorPayload];
    process: [GeneratingPayload];
    error: [Error, GeneratorPayload];
}
export {};
