import { Module, type ObjectTS } from "@intuitionrobotics/ts-common";
import { type ServerApi_Middleware } from "../server/HttpServer.js";
import { type HttpRequestData } from "../server/server-api.js";
import { type ExpressRequest, type QueryRequestInfo } from "../../utils/types.js";
type ProxyConfig = {
    extras?: ObjectTS;
    urls: string[];
    secret: string;
};
export type RemoteProxyConfig = {
    remotes: {
        [proxyId: string]: ProxyConfig;
    };
    secretHeaderName?: string;
    proxyHeaderName?: string;
};
export declare class RemoteProxy_Class<Config extends RemoteProxyConfig> extends Module<Config> implements QueryRequestInfo {
    constructor();
    __queryRequestInfo(request: ExpressRequest): Promise<{
        key: string;
        data: any;
    }>;
    getProxyHeader(request: ExpressRequest): string;
    private getSecretHeader;
    readonly Middleware: ServerApi_Middleware;
    private secretHeader;
    private proxyHeader;
    protected init(): void;
    assertSecret(request: ExpressRequest): ObjectTS | undefined;
    processApi(request: ExpressRequest, _requestData: HttpRequestData): Promise<ObjectTS | undefined>;
}
export declare const RemoteProxy: RemoteProxy_Class<RemoteProxyConfig>;
export {};
//# sourceMappingURL=RemoteProxy.d.ts.map