import type { OpenAPIV3 } from 'openapi-types';
import type { ArraySchemaObject, ISchemaObject, OpenAPIObject, ParameterObject, ReferenceObject, ResponseObject, ResponsesObject, SchemaObject } from '../type';
import type { IPropObject, ITypeItem } from './type';
/**
 * 解析对象类型参数
 */
export interface ResolveObjectParams {
    schemaObject: ISchemaObject;
    openAPIData: OpenAPIObject;
    config: {
        namespace?: string;
        isSupportParseEnumDesc?: boolean;
        supportParseEnumDescByReg?: string | RegExp;
    };
    getType: (schemaObject: ISchemaObject, namespace?: string) => string;
    resolveRefObject: <T>(refObject: ReferenceObject | T) => T;
}
/**
 * 解析数组类型
 */
export declare function resolveArray(params: {
    schemaObject: ArraySchemaObject;
    namespace?: string;
    getType: (schemaObject: ISchemaObject, namespace?: string) => string;
}): {
    type: string;
};
/**
 * 解析属性
 */
export declare function resolveProperties(params: {
    schemaObject: SchemaObject;
    getProps: (schemaObject: SchemaObject) => IPropObject[];
}): {
    props: IPropObject[][];
};
/**
 * 解析枚举对象
 */
export declare function resolveEnumObject(params: {
    schemaObject: SchemaObject;
    config: {
        isSupportParseEnumDesc?: boolean;
        supportParseEnumDescByReg?: string | RegExp;
    };
}): {
    isEnum: boolean;
    type: string;
    enumLabelType: string;
    description?: string;
};
/**
 * 解析 allOf 对象
 */
export declare function resolveAllOfObject(params: {
    schemaObject: SchemaObject;
    getType: (schemaObject: ISchemaObject) => string;
    getProps: (schemaObject: SchemaObject) => IPropObject[];
}): {
    props: (IPropObject[] | {
        type: string;
    }[])[];
};
/**
 * 获取 TS 类型的属性列表
 */
export declare function getProps(params: {
    schemaObject: SchemaObject;
    getType: (schema: SchemaObject) => string;
    openAPIData?: OpenAPIObject;
}): IPropObject[];
/**
 * 解析参数引用
 */
export declare function resolveParameterRef(params: {
    param: ParameterObject | ReferenceObject;
    openAPIData: OpenAPIObject;
}): ParameterObject | null;
/**
 * 解析引用对象
 */
export declare function resolveRefObject<T>(params: {
    refObject: ReferenceObject | T;
    openAPIData: OpenAPIObject;
    resolveRefObjectFunc: (params: {
        refObject: ReferenceObject | T;
        openAPIData: OpenAPIObject;
        resolveRefObjectFunc: (params: {
            refObject: ReferenceObject | T;
            openAPIData: OpenAPIObject;
            resolveRefObjectFunc: any;
        }) => T;
    }) => T;
}): T;
/**
 * 生成多状态码响应类型定义
 */
export declare function getResponsesType(params: {
    responses: ResponsesObject;
    functionName: string;
    interfaceTPConfigs: ITypeItem[];
    components: OpenAPIV3.ComponentsObject;
    getResponseTypeFromContentFunc: (params: {
        response: ResponseObject;
        components: OpenAPIV3.ComponentsObject;
    }) => string;
    resolveRefObjectFunc: <T>(refObject: ReferenceObject | T) => T;
}): string | null;
/**
 * 解析响应条目
 */
export declare function parseResponseEntries(params: {
    responses: ResponsesObject;
    components: OpenAPIV3.ComponentsObject;
    getResponseTypeFromContentFunc: (params: {
        response: ResponseObject;
        components: OpenAPIV3.ComponentsObject;
    }) => string;
    resolveRefObjectFunc: <T>(refObject: ReferenceObject | T) => T;
}): Array<{
    statusCode: string;
    type: string;
    description: string;
}>;
/**
 * 从响应内容中提取 TypeScript 类型
 */
export declare function getResponseTypeFromContent(params: {
    response: ResponseObject;
    components: OpenAPIV3.ComponentsObject;
    config: {
        dataFields?: string[];
        binaryMediaTypes?: string[];
    };
    getType: (schema: SchemaObject) => string;
}): string;
/**
 * 获取参数模板
 */
export declare function getParamsTP(params: {
    parameters?: (ParameterObject | ReferenceObject)[];
    path?: string;
    namespace?: string;
    openAPIData: OpenAPIObject;
    getType: (schema: ISchemaObject, namespace?: string) => string;
    resolveParameterRefFunc: (params: {
        param: ParameterObject | ReferenceObject;
        openAPIData: OpenAPIObject;
    }) => ParameterObject | null;
}): Record<string, ParameterObject[]>;
/**
 * 分析类型定义中使用的类型名称
 */
export declare function analyzeTypeReferences(types: ITypeItem[]): Set<string>;
/**
 * 获取模块需要导入的类型
 */
export declare function getModuleImports(params: {
    moduleTypes: ITypeItem[];
    commonTypes: ITypeItem[];
    enumTypes: ITypeItem[];
}): {
    commonImports: string[];
    enumImports: string[];
};
/**
 * 将公共类型依赖的类型从模块类型移到公共类型
 * 同时检测跨模块引用，将被多个模块使用的类型移到公共类型
 * @param moduleTypes 模块类型
 * @param commonTypes 公共类型
 */
export declare function moveCommonTypeDependenciesToCommon(params: {
    moduleTypes: Map<string, ITypeItem[]>;
    commonTypes: ITypeItem[];
}): void;
/**
 * 解析文件模板
 */
export declare function resolveFileTP(params: {
    obj: SchemaObject;
    resolveObjectFunc: (schemaObject: SchemaObject) => any;
}): Array<{
    title: string;
    multiple: boolean;
}>;
