/**
 * Trigger Orchestrator
 *
 * Orchestrates automatic project analysis triggers from various sources
 * including NPM hooks, file system changes, and manual triggers.
 */
import { EventEmitter } from 'events';
export interface TriggerConfig {
    projectRoot: string;
    enableNPMHooks: boolean;
    enableInstallationDetection: boolean;
    enableFileWatching: boolean;
    analysisDelay: number;
    maxConcurrentAnalyses: number;
    cooldownPeriod: number;
}
export interface AnalysisTrigger {
    id: string;
    type: 'npm_hook' | 'installation' | 'file_change' | 'manual' | 'api';
    timestamp: Date;
    source: string;
    reason: string;
    priority: 'low' | 'medium' | 'high';
    metadata?: any;
}
export interface TriggerResult {
    triggerId: string;
    success: boolean;
    analysisId?: string;
    startTime: Date;
    endTime: Date;
    duration: number;
    error?: string;
}
/**
 * Trigger Orchestrator
 *
 * Central coordinator for all automatic analysis triggers.
 * Manages trigger sources, queuing, and execution coordination.
 */
export declare class TriggerOrchestrator extends EventEmitter {
    private config;
    private npmHookManager?;
    private installationDetector?;
    private projectAnalysisService?;
    private isInitialized;
    private triggerQueue;
    private activeTriggers;
    private lastAnalysisTime?;
    private triggerHistory;
    constructor(config?: Partial<TriggerConfig>);
    /**
     * Initialize the trigger orchestrator
     */
    initialize(): Promise<void>;
    /**
     * Manually trigger analysis
     */
    triggerAnalysis(reason?: string, priority?: AnalysisTrigger['priority'], metadata?: any): Promise<string>;
    /**
     * Get trigger status and statistics
     */
    getStatus(): {
        isInitialized: boolean;
        config: TriggerConfig;
        queueLength: number;
        activeTriggers: number;
        lastAnalysis?: Date | undefined;
        recentTriggers: TriggerResult[];
    };
    /**
     * Shutdown the orchestrator
     */
    shutdown(): Promise<void>;
    private setupNPMHookListeners;
    private setupInstallationDetectorListeners;
    private setupProjectAnalysisListeners;
    private queueTrigger;
    private startTriggerProcessing;
    private processTriggerQueue;
    private processTrigger;
    private isInCooldownPeriod;
    private getCooldownRemaining;
    private determinePriority;
    private generateTriggerId;
}
//# sourceMappingURL=TriggerOrchestrator.d.ts.map