import type { ProcessedRequest, StandardizedRequest } from '../../conversion/hub/types/standardized.js';
import type { ProviderErrorEvent, ProviderFailureEvent, ProviderQuotaView, ProviderSuccessEvent, RouterMetadataInput, RoutingDecision, RoutingDiagnostics, RoutingStatusSnapshot, StopMessageStateSnapshot, PreCommandStateSnapshot, TargetMetadata, VirtualRouterConfig, VirtualRouterHealthStore } from './types.js';
export declare class VirtualRouterEngine {
    private readonly nativeProxy;
    private readonly registry;
    private readonly routingInstructionStateStore;
    constructor(deps?: {
        healthStore?: VirtualRouterHealthStore;
        routingStateStore?: {
            loadSync: (key: string) => unknown;
            saveAsync: (key: string, state: unknown) => void;
            saveSync?: (key: string, state: unknown) => void;
        };
        quotaView?: ProviderQuotaView;
    });
    get antigravitySessionAliasStore(): Map<string, string>;
    get routingInstructionState(): Map<string, unknown>;
    get providerRegistry(): unknown;
    initialize(config: VirtualRouterConfig): void;
    updateDeps(deps: {
        healthStore?: VirtualRouterHealthStore | null;
        routingStateStore?: {
            loadSync: (key: string) => unknown;
            saveAsync: (key: string, state: unknown) => void;
            saveSync?: (key: string, state: unknown) => void;
        } | null;
        quotaView?: ProviderQuotaView | null;
    }): void;
    updateVirtualRouterConfig(config: VirtualRouterConfig): void;
    markProviderCooldown(providerKey: string, cooldownMs: number | undefined): void;
    clearProviderCooldown(providerKey: string): void;
    route(request: StandardizedRequest | ProcessedRequest, metadata: RouterMetadataInput): {
        target: TargetMetadata;
        decision: RoutingDecision;
        diagnostics: RoutingDiagnostics;
    };
    getStopMessageState(metadata: RouterMetadataInput): StopMessageStateSnapshot | null;
    getPreCommandState(metadata: RouterMetadataInput): PreCommandStateSnapshot | null;
    handleProviderFailure(event: ProviderFailureEvent): void;
    handleProviderError(event: ProviderErrorEvent): void;
    handleProviderSuccess(event: ProviderSuccessEvent): void;
    getStatus(): RoutingStatusSnapshot;
}
