import type { RouteRegistration } from '../routes/RouteRegistry';
type OpenApiSchema = {
    type?: string;
    format?: string;
    properties?: Record<string, OpenApiSchema>;
    required?: string[];
    items?: OpenApiSchema;
    enum?: Array<string | number | boolean | null>;
    minimum?: number;
    maximum?: number;
    minLength?: number;
    maxLength?: number;
    pattern?: string;
    [key: string]: unknown;
};
type OpenApiParameter = {
    name: string;
    in: 'path' | 'query' | 'header';
    required: boolean;
    schema: OpenApiSchema;
};
type OpenApiOperation = {
    summary?: string;
    description?: string;
    tags?: string[];
    operationId?: string;
    parameters?: OpenApiParameter[];
    requestBody?: {
        required?: boolean;
        content: {
            'application/json': {
                schema: OpenApiSchema;
            };
        };
    };
    responses: Record<string, {
        description: string;
        content?: {
            'application/json': {
                schema: OpenApiSchema;
            };
        };
    }>;
};
type OpenApiDocument = {
    openapi: '3.0.3';
    info: {
        title: string;
        version: string;
        description?: string;
    };
    servers?: Array<{
        url: string;
    }>;
    paths: Record<string, Record<string, OpenApiOperation>>;
};
export type OpenApiGeneratorOptions = {
    title: string;
    version: string;
    description?: string;
    serverUrl?: string;
    excludePaths?: readonly string[];
};
export declare const OpenApiGenerator: Readonly<{
    generate(routes: RouteRegistration[], options: OpenApiGeneratorOptions): OpenApiDocument;
}>;
export default OpenApiGenerator;
//# sourceMappingURL=OpenApiGenerator.d.ts.map