/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
/// <reference types="node" />
import type http from "http";
import type { Cluster } from "../../common/cluster/cluster";
import type { LensApiRequest, Route } from "./route";
import type { ServerIncomingMessage } from "../lens-proxy/lens-proxy";
import type { ParseRequest } from "./parse-request.injectable";
import type { CreateHandlerForRoute } from "./create-handler-for-route.injectable";
export interface RouterRequestOpts {
    req: http.IncomingMessage;
    res: http.ServerResponse;
    cluster: Cluster | undefined;
    params: Partial<Record<string, string>>;
    url: URL;
}
interface Dependencies {
    parseRequest: ParseRequest;
    createHandlerForRoute: CreateHandlerForRoute;
    readonly routes: Route<unknown, string>[];
}
export declare class Router {
    private readonly dependencies;
    private readonly router;
    constructor(dependencies: Dependencies);
    route(cluster: Cluster | undefined, req: ServerIncomingMessage, res: http.ServerResponse): Promise<boolean>;
    protected getRequest(opts: RouterRequestOpts): Promise<LensApiRequest<string>>;
}
export {};
