import { Module } from "@intuitionrobotics/ts-common";
import type { ObjectTS } from "@intuitionrobotics/ts-common";
import type { ApiResponse, HttpRequestData } from "./server-api.js";
import { ApiException } from "../../exceptions.js";
import type { Express, ExpressRequest, ExpressRequestHandler } from "../../utils/types.js";
type ConfigType = {
    port: number;
    baseUrl: string;
    cors: {
        origins?: string[];
        methods?: string[];
        headers: string[];
        exposedHeaders?: string[];
    };
    ssl: {
        key: string;
        cert: string;
    };
    bodyParserLimit: number | string;
};
export type HttpErrorHandler = (requestData: HttpRequestData, error: ApiException) => Promise<string>;
export type ServerApi_Middleware = (request: ExpressRequest, data: HttpRequestData, response: ApiResponse, scopes: string[]) => Promise<ObjectTS | void>;
export declare class HttpServer_Class extends Module<ConfigType> {
    private static readonly expressMiddleware;
    private readonly express;
    constructor(_express: Express, configElement: ConfigType);
    static addMiddleware(middleware: ExpressRequestHandler): typeof HttpServer_Class;
    getBaseUrl(): string;
    init(): void;
    mountRouter(router: import("express").Router, urlPrefix?: string): void;
}
export declare class HeaderKey {
    private readonly key;
    private readonly responseCode;
    constructor(key: string, responseCode?: number);
    get(request: ExpressRequest): string;
}
export {};
//# sourceMappingURL=HttpServer.d.ts.map