import { EventEmitter } from 'events';
import { ConduitConfig, RoutingContext, RoutingDecision, ProviderConfig, RoutingRule } from '../types';
import { PluginManager } from '../plugins/EnhancedPluginManager';
/**
 * Standalone routing engine for Conduit
 */
export declare class ConduitRouter extends EventEmitter {
    private config;
    private pluginManager;
    private providers;
    private isInitialized;
    constructor(config: ConduitConfig, pluginManager?: PluginManager);
    /**
     * Initialize the router
     */
    initialize(): Promise<void>;
    /**
     * Route a request and return routing decision
     */
    route(context: RoutingContext): Promise<RoutingDecision>;
    /**
     * Evaluate custom routing rules
     */
    private evaluateCustomRules;
    /**
     * Evaluate a single routing rule
     */
    private evaluateRule;
    /**
     * Evaluate legacy string condition
     */
    private evaluateStringCondition;
    /**
     * Evaluate structured condition
     */
    private evaluateCondition;
    /**
     * Check if provider is available for a model
     */
    private isProviderAvailable;
    /**
     * Update router configuration
     */
    updateConfig(config: ConduitConfig): Promise<void>;
    /**
     * Get current configuration
     */
    getConfig(): ConduitConfig;
    /**
     * Get available providers
     */
    getProviders(): ProviderConfig[];
    /**
     * Get routing rules
     */
    getRoutingRules(): RoutingRule[];
    /**
     * Add a routing rule
     */
    addRoutingRule(rule: RoutingRule): void;
    /**
     * Remove a routing rule
     */
    removeRoutingRule(ruleId: string): boolean;
    /**
     * Get plugin manager
     */
    getPluginManager(): PluginManager;
    /**
     * Check if router is initialized
     */
    isReady(): boolean;
    /**
     * Get router statistics
     */
    getStats(): any;
    /**
     * Cleanup resources
     */
    cleanup(): Promise<void>;
}
//# sourceMappingURL=ConduitRouter.d.ts.map