import { Type } from '../reflection';
import type { OpenApiReferenceObject, OpenApiSchemaObject } from './types';
export interface OpenApiSchemaContext {
    schemas: Record<string, OpenApiSchemaObject>;
    generating: Set<string>;
    componentNames: WeakMap<object, string>;
    componentTypes: Map<string, object>;
    objectLiteralComponents: Map<string, Array<{
        name: string;
        signature: string;
    }>>;
}
export interface OpenApiTypeProperty {
    name: string;
    type: Type;
    required: boolean;
    description?: string;
}
export declare function createOpenApiSchemaContext(): OpenApiSchemaContext;
export declare function typeToOpenApiSchema(type: Type, context?: OpenApiSchemaContext): OpenApiSchemaObject | OpenApiReferenceObject;
export declare function listOpenApiTypeProperties(type: Type): OpenApiTypeProperty[];
export declare function unwrapOpenApiType(type: Type): Type;
export declare function allowsUndefined(type: Type): boolean;
export declare function typeHasOpenApiFileUpload(type: Type, seenTypes?: Set<Type>, seenClasses?: Set<import("..").ClassType<any>>): boolean;
export declare function typeRequiresOpenApiFileUpload(type: Type, seenTypes?: Set<Type>, seenClasses?: Set<import("..").ClassType<any>>): boolean;
//# sourceMappingURL=schema.d.ts.map