import { OpenAPIV3_1 } from 'openapi-types';
import { ValidationSchema } from 'fastest-validator';
import { addMappersFn, FastestValidatorType, openApiServiceOpenApi } from './types/index.js';
import { LoggerInstance } from 'moleculer';
import { Alias } from './objects/Alias.js';
import { OpenApiVersionsSupported } from './constants.js';
export declare class OpenApiGenerator {
    private readonly logger;
    private components;
    private readonly document;
    private readonly converter;
    constructor(logger: LoggerInstance, validator: FastestValidatorType, baseDocument: openApiServiceOpenApi, addMappersFn: addMappersFn);
    private isLoaded?;
    load(): Promise<void>;
    generate(openApiVersion: OpenApiVersionsSupported, aliases: Array<Alias>): OpenAPIV3_1.Document;
    private addServerToDocument;
    private mergeComponents;
    private addQueryParameters;
    private getRequestBody;
    private extractParameters;
    private getParameters;
    /**
     * file upload use a specific way to works, so we need to handle it here
     *
     * @link https://moleculer.services/docs/0.14/moleculer-web.html#File-upload-aliases
     */
    private generateFileUploadBody;
    private isReferenceObject;
    private getComponent;
    private getComponentByRef;
    createRequestBodyFromParams(rootSchemeName: string, obj: ValidationSchema, exclude?: Array<string>, parentNode?: {
        default?: any;
    }): OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject | undefined;
    /**
     * extract params from /{table}
     * @param url
     * @returns {[]}
     */
    extractParamsFromUrl(url?: string): Array<OpenAPIV3_1.ParameterObject>;
    /**
     * Convert moleculer params to openapi definitions(components schemas)
     * @param schemeName
     * @param obj
     * @param customProperties
     */
    _createSchemaComponentFromObject(schemeName: string, obj: Record<string, OpenAPIV3_1.SchemaObject>, customProperties?: {
        default?: any;
    }): OpenAPIV3_1.ReferenceObject;
    /**
     * convert /:table to /{table}
     * @param url
     * @returns {string|string}
     */
    private formatParamUrl;
    private _createSchemaPartFromRule;
    private extractSystemParams;
    private removeExtensions;
    private cleanComponents;
    private handleTags;
}
