import { OpenAPIV3 } from "openapi-types"; import { UploadConfig } from "./types/upload-config"; declare class ArkosRouterOpenAPIManager { private resolveSchemaFieldName; /** * Generates OpenAPI schema for file upload fields in multipart/form-data requests. * Converts upload configuration into OpenAPI-compliant schema and merges with existing body schema. * * @param {UploadConfig} uploadConfig - The upload configuration from config.experimental.uploads * @param {any} existingSchema - Existing JSON schema from config.validation.body (optional) * @returns {{ schema: any }} OpenAPI schema object for multipart/form-data content type * * @example * // Single file upload * addUploadFields({ type: 'single', field: 'avatar', maxSize: 5242880 }) * // Returns: { schema: { type: 'object', properties: { avatar: { type: 'string', format: 'binary' } } } } * * @example * // Array file upload * addUploadFields({ type: 'array', field: 'gallery', maxCount: 10 }) * * @example * // Multiple fields upload * addUploadFields({ * type: 'fields', * fields: [ * { name: 'avatar', type: 'single', uploadDir: 'images' }, * { name: 'gallery', type: 'array', maxCount: 6, uploadDir: 'gallery' }, * { name: 'banners[][images]', type: 'array', maxCount: 5, uploadDir: 'banners' } * ] * }) */ addUploadFields(uploadConfig: UploadConfig, existingSchema?: OpenAPIV3.SchemaObject): OpenAPIV3.SchemaObject; /** * Builds the OpenAPI property schema for a single field entry. * Legacy entries (no type) are treated as array. */ private buildFieldSchema; /** * Validates that a user-defined multipart/form-data schema includes all required upload fields * with correct types, formats, and required flags. * * @param {any} userDefinedMultipartSchema - The schema object from openapi.requestBody.content['multipart/form-data'].schema * @param {UploadConfig} uploadConfig - The upload configuration from config.experimental.uploads * @param {string} routePath - The route path for error context * @throws {Error} If upload fields are missing or incorrectly defined * * @example * validateMultipartFormDocs( * { type: 'object', properties: { avatar: { type: 'string', format: 'binary' } } }, * { type: 'single', field: 'avatar', required: true }, * '/users/:id/avatar' * ) */ validateMultipartFormDocs(userDefinedMultipartSchema: any, routePath: string, uploadConfig?: UploadConfig): void; } declare const arkosRouterOpenApiManager: ArkosRouterOpenAPIManager; export default arkosRouterOpenApiManager;