import * as plugins from '../plugins.js';
import type { IStoredRoute, IMergedRoute, IRouteWarning, IRouteMetadata } from '../../dist_ts_interfaces/data/route-management.js';
import { type IHttp3Config } from '../http3/index.js';
import type { ReferenceResolver } from './classes.reference-resolver.js';
export declare class RouteConfigManager {
    private getHardcodedRoutes;
    private getSmartProxy;
    private getHttp3Config?;
    private getVpnAllowList?;
    private referenceResolver?;
    private onRoutesApplied?;
    private storedRoutes;
    private overrides;
    private warnings;
    constructor(getHardcodedRoutes: () => plugins.smartproxy.IRouteConfig[], getSmartProxy: () => plugins.smartproxy.SmartProxy | undefined, getHttp3Config?: (() => IHttp3Config | undefined) | undefined, getVpnAllowList?: ((tags?: string[]) => string[]) | undefined, referenceResolver?: ReferenceResolver | undefined, onRoutesApplied?: ((routes: plugins.smartproxy.IRouteConfig[]) => void) | undefined);
    /** Expose stored routes map for reference resolution lookups. */
    getStoredRoutes(): Map<string, IStoredRoute>;
    /**
     * Load persisted routes and overrides, compute warnings, apply to SmartProxy.
     */
    initialize(): Promise<void>;
    getMergedRoutes(): {
        routes: IMergedRoute[];
        warnings: IRouteWarning[];
    };
    createRoute(route: plugins.smartproxy.IRouteConfig, createdBy: string, enabled?: boolean, metadata?: IRouteMetadata): Promise<string>;
    updateRoute(id: string, patch: {
        route?: Partial<plugins.smartproxy.IRouteConfig>;
        enabled?: boolean;
        metadata?: Partial<IRouteMetadata>;
    }): Promise<boolean>;
    deleteRoute(id: string): Promise<boolean>;
    toggleRoute(id: string, enabled: boolean): Promise<boolean>;
    setOverride(routeName: string, enabled: boolean, updatedBy: string): Promise<void>;
    removeOverride(routeName: string): Promise<boolean>;
    private loadStoredRoutes;
    private loadOverrides;
    private persistRoute;
    private computeWarnings;
    private logWarnings;
    /**
     * Re-resolve specific routes by ID (after a profile or target is updated).
     * Persists each route and calls applyRoutes() once at the end.
     */
    reResolveRoutes(routeIds: string[]): Promise<void>;
    applyRoutes(): Promise<void>;
}
