/**
 * LocalProxy — In-process proxy for local mode.
 *
 * When proxyMode is "local", there is no separate server, no port, no child
 * process, and no encryption. LocalProxy imports the core functions from
 * drawlatch and calls them directly in-process.
 *
 * Supports multiple caller aliases: routes are resolved per-caller and cached.
 * A single shared IngestorManager handles all event sources (ingestors are
 * config-level, not per-caller).
 *
 * Key design: httpRequest() calls executeProxyRequest() imported from
 * drawlatch — the exact same function the remote server uses.
 * No behavioral drift possible.
 */
import { type ResolvedRoute } from "@wolpertingerlabs/drawlatch/shared/config";
import { IngestorManager } from "@wolpertingerlabs/drawlatch/remote/ingestors";
export declare class LocalProxy {
    private mcpConfigDir;
    /** Resolved routes per caller alias */
    private routesByCallerAlias;
    private _ingestorManager;
    /** The primary caller alias (used as fallback and for ingestor events) */
    private primaryCallerAlias;
    constructor(mcpConfigDir: string, primaryCallerAlias: string);
    /** Resolve routes for all callers defined in config */
    private resolveAllCallers;
    /** Get resolved routes for a specific caller (falls back to primary) */
    getRoutesForCaller(callerAlias: string): ResolvedRoute[];
    /** Access the ingestor manager (for webhook route forwarding) */
    get ingestorManager(): IngestorManager;
    start(): Promise<void>;
    stop(): Promise<void>;
    /** Reinitialize after config/secret changes (re-reads config from disk) */
    reinitialize(): Promise<void>;
    /**
     * Persist listener stopped/started state to remote.config.json.
     * For multi-instance listeners, sets listenerInstances[conn][instanceId].disabled.
     * For single-instance listeners, sets ingestorOverrides[conn].stopped.
     */
    private persistListenerState;
    /**
     * After startAll(), stop any listeners the user had explicitly stopped.
     * Reads stopped state from remote.config.json.
     */
    private stopUserStoppedListeners;
    /**
     * Same interface as ProxyClient.callTool() — drop-in replacement.
     * Optional callerAlias parameter selects which caller's routes to use.
     */
    callTool(toolName: string, toolInput?: Record<string, unknown>, callerAlias?: string): Promise<unknown>;
}
//# sourceMappingURL=local-proxy.d.ts.map