type OpenApiVersion = "3.0.0" | "3.0.1" | "3.0.2" | "3.0.3" | "3.1.0"; interface OpenApiServer { url: string; description?: string; } interface OpenApiTag { name: string; description?: string; } interface OpenApiSchema { type?: string; format?: string; description?: string; example?: unknown; nullable?: boolean; properties?: Record; required?: string[]; items?: OpenApiSchema; additionalProperties?: boolean | OpenApiSchema; enum?: unknown[]; oneOf?: OpenApiSchema[]; allOf?: OpenApiSchema[]; $ref?: string; } interface OpenApiParameter { name: string; in: "query" | "header" | "path" | "cookie"; description?: string; required?: boolean; schema: OpenApiSchema; example?: unknown; } interface OpenApiComponents { schemas?: Record; parameters?: Record; [key: string]: unknown; } interface OpenApiDocument { openapi: OpenApiVersion; info: { title: string; version: string; description?: string; }; servers?: OpenApiServer[]; tags?: OpenApiTag[]; paths: Record; components?: OpenApiComponents; [key: string]: unknown; } type SwaggerRouteMethod = "get" | "post" | "put" | "patch" | "delete" | "options" | "head"; interface SwaggerRouteOptions { method?: SwaggerRouteMethod; path: string; tag?: string; tags?: string[]; summary?: string; description?: string; parameters?: Array; responseDescription?: string; responseSchemaRef?: string; requestBodySchemaRef?: string; } interface CreateSwaggerSpecOptions { title: string; version: string; description?: string; servers?: OpenApiServer[]; tags?: OpenApiTag[]; openapi?: OpenApiVersion; paths?: Record; routes?: SwaggerRouteOptions[]; components?: OpenApiComponents; } interface SetupSwaggerDocsOptions extends CreateSwaggerSpecOptions { path?: string; spec?: OpenApiDocument; swaggerUiOptions?: Record; } interface ExpressLikeApp { use: (...args: unknown[]) => unknown; get?: (...args: unknown[]) => unknown; } declare function setupSwaggerDocs(app: ExpressLikeApp, options: SetupSwaggerDocsOptions): Promise; declare const maxQueryParameter: OpenApiParameter; declare const offsetQueryParameter: OpenApiParameter; declare const sortByQueryParameter: OpenApiParameter; declare const sortOrderQueryParameter: OpenApiParameter; declare const qQueryParameter: OpenApiParameter; declare const searchQueryParameter: OpenApiParameter; declare const swaggerQueryParameters: { readonly Max: OpenApiParameter; readonly Offset: OpenApiParameter; readonly SortBy: OpenApiParameter; readonly SortOrder: OpenApiParameter; readonly Q: OpenApiParameter; readonly Search: OpenApiParameter; }; declare function swaggerRoute(options: SwaggerRouteOptions): Record; declare function swaggerRoutes(routes: SwaggerRouteOptions[]): Record; declare const successResponseSchema: OpenApiSchema; declare const errorResponseSchema: OpenApiSchema; declare const validationErrorResponseSchema: OpenApiSchema; declare const paginationMetadataSchema: OpenApiSchema; declare const paginatedResponseSchema: OpenApiSchema; declare const swaggerSchemas: { readonly SuccessResponse: OpenApiSchema; readonly ErrorResponse: OpenApiSchema; readonly ValidationErrorResponse: OpenApiSchema; readonly PaginatedResponse: OpenApiSchema; readonly PaginationMeta: OpenApiSchema; }; declare function createSwaggerSpec(options: CreateSwaggerSpecOptions): OpenApiDocument; export { type CreateSwaggerSpecOptions, type ExpressLikeApp, type OpenApiComponents, type OpenApiDocument, type OpenApiParameter, type OpenApiSchema, type OpenApiServer, type OpenApiTag, type OpenApiVersion, type SetupSwaggerDocsOptions, type SwaggerRouteMethod, type SwaggerRouteOptions, createSwaggerSpec, errorResponseSchema, maxQueryParameter, offsetQueryParameter, paginatedResponseSchema, paginationMetadataSchema, qQueryParameter, searchQueryParameter, setupSwaggerDocs, sortByQueryParameter, sortOrderQueryParameter, successResponseSchema, swaggerQueryParameters, swaggerRoute, swaggerRoutes, swaggerSchemas, validationErrorResponseSchema };