import type { AgentRegistryEntry } from '../types/coordination.js';
import type { Task, TaskType } from '../tasks/types.js';
/**
 * Agent capability definitions for intelligent task routing.
 */
export type AgentCapability = 'typescript' | 'javascript' | 'python' | 'rust' | 'go' | 'cpp' | 'java' | 'cli' | 'frontend' | 'backend' | 'database' | 'security' | 'performance' | 'documentation' | 'testing' | 'devops' | 'infrastructure' | 'code-review' | 'refactoring' | 'architecture' | 'product' | 'api-design' | 'test-strategy' | 'qa' | 'release' | 'compliance' | 'incident' | 'observability' | 'dependency' | 'accessibility' | 'cost';
/**
 * Droid/skill mapping for capability routing.
 */
export interface CapabilityMapping {
    capability: AgentCapability;
    droids: string[];
    skills: string[];
    filePatterns: string[];
    taskTypes: TaskType[];
    priority: number;
}
/**
 * Default capability mappings for UAP droids and skills.
 */
export declare const DEFAULT_CAPABILITY_MAPPINGS: CapabilityMapping[];
export interface RoutingResult {
    recommendedDroids: string[];
    recommendedSkills: string[];
    matchedCapabilities: AgentCapability[];
    confidence: number;
    reasoning: string;
}
export interface AgentMatch {
    agent: AgentRegistryEntry;
    matchedCapabilities: AgentCapability[];
    score: number;
}
/**
 * Capability-based router for intelligent task and agent routing.
 */
export declare class CapabilityRouter {
    private mappings;
    private routeCache;
    private readonly cacheTtlMs;
    private readonly cacheMaxEntries;
    constructor(customMappings?: CapabilityMapping[]);
    /**
     * Route a task to the best droids/skills based on task content and affected files.
     */
    routeTask(task: Task, affectedFiles?: string[]): RoutingResult;
    /**
     * Find the best agent for a task based on capabilities.
     */
    findBestAgent(task: Task, availableAgents: AgentRegistryEntry[], affectedFiles?: string[]): AgentMatch | null;
    /**
     * Route files to appropriate capabilities.
     */
    routeFiles(files: string[]): Map<AgentCapability, string[]>;
    /**
     * Get recommended parallel review droids for a set of files.
     */
    getParallelReviewDroids(files: string[]): string[];
    /**
     * Match files against a glob-like pattern.
     */
    private matchesPattern;
    /**
     * Convert glob pattern to regex.
     */
    private patternToRegex;
    /**
     * Extract keywords from task for matching.
     */
    private extractKeywords;
    /**
     * Add or update a capability mapping.
     */
    addMapping(mapping: CapabilityMapping): void;
    /**
     * Get all registered mappings.
     */
    getMappings(): CapabilityMapping[];
    private buildRouteCacheKey;
}
export declare function getCapabilityRouter(): CapabilityRouter;
export declare function setCapabilityRouter(router: CapabilityRouter): void;
//# sourceMappingURL=capability-router.d.ts.map