import { type Plugin } from "@trinacria/core"; import type { HttpMiddleware } from "./middleware/middleware-definition"; import { type OpenApiDocument, type OpenApiRouteEntry } from "./openapi"; import type { HttpResponseSerializer } from "./response"; import { type HttpExceptionHandler, type HttpServerErrorSerializer } from "./server/http-server"; export interface HttpPluginOpenApiOptions { enabled?: boolean; jsonPath?: string; title: string; version: string; description?: string; transformDocument?: (document: OpenApiDocument) => OpenApiDocument; onDocumentGenerated?: (document: OpenApiDocument) => void; /** Optional middleware applied only to the generated OpenAPI JSON route. */ jsonMiddlewares?: HttpMiddleware[]; } export interface HttpPluginOptions { port?: number; host?: string; middlewares?: HttpMiddleware[]; jsonBodyLimitBytes?: number; streamingBodyContentTypes?: string[]; exceptionHandler?: HttpExceptionHandler; responseSerializer?: HttpResponseSerializer; requestTimeoutMs?: number; headersTimeoutMs?: number; keepAliveTimeoutMs?: number; maxRequestsPerSocket?: number; /** * @deprecated Use `exceptionHandler`. */ errorSerializer?: HttpServerErrorSerializer; /** * @deprecated Use `openApi.onDocumentGenerated`. */ onRoutesRebuilt?: (routes: OpenApiRouteEntry[]) => void; openApi?: HttpPluginOpenApiOptions; } /** * Creates the Trinacria HTTP plugin. * The plugin discovers HTTP controllers by ProviderKind and registers their routes. */ export declare function createHttpPlugin(options?: HttpPluginOptions): Plugin;