///
import { Context } from '@loopback/core';
import { ComponentsObject, ControllerSpec, PathObject, ReferenceObject, SchemaObject, SchemasObject } from '@loopback/openapi-v3';
import { RestServerResolvedConfig } from './rest.server';
import { ControllerClass, ControllerFactory, ResolvedRoute, RouteEntry, RoutingTable } from './router';
import { Request, Response } from './types';
export declare class HttpHandler {
protected readonly _rootContext: Context;
protected readonly _serverConfig: RestServerResolvedConfig;
protected readonly _routes: RoutingTable;
/**
* Shared OpenAPI spec objects as `components`
*/
protected _openApiComponents: ComponentsObject;
handleRequest: (request: Request, response: Response) => Promise;
constructor(_rootContext: Context, _serverConfig: RestServerResolvedConfig, _routes?: RoutingTable);
registerController(spec: ControllerSpec, controllerCtor: ControllerClass, controllerFactory?: ControllerFactory): void;
registerRoute(route: RouteEntry): void;
/**
* @deprecated Use `registerApiComponents`
* @param defs Schemas
*/
registerApiDefinitions(defs: SchemasObject): void;
/**
* Merge components into the OpenApi spec
* @param defs - Components
*/
registerApiComponents(defs: ComponentsObject): void;
getApiComponents(): ComponentsObject;
/**
* @deprecated Use `getApiComponents`
*/
getApiDefinitions(): {
[schema: string]: SchemaObject | ReferenceObject;
} | undefined;
describeApiPaths(): PathObject;
findRoute(request: Request): ResolvedRoute;
protected _handleRequest(request: Request, response: Response): Promise;
}