/**
 * Installation Detector
 *
 * Detects package installations, updates, and dependency changes
 * to trigger appropriate analysis workflows.
 */
import { EventEmitter } from 'events';
export interface PackageChange {
    name: string;
    oldVersion?: string;
    newVersion: string;
    changeType: 'added' | 'updated' | 'removed';
    isDev: boolean;
}
export interface InstallationEvent {
    type: 'package_installed' | 'package_updated' | 'package_removed' | 'lockfile_changed';
    timestamp: Date;
    projectRoot: string;
    changes: PackageChange[];
    packageManager: 'npm' | 'yarn' | 'pnpm' | 'unknown';
    triggerAnalysis: boolean;
}
export interface DetectorConfig {
    projectRoot: string;
    watchLockFiles: boolean;
    watchPackageJson: boolean;
    debounceDelay: number;
    ignoreDevDependencies: boolean;
}
/**
 * Installation Detector
 *
 * Monitors package installations and dependency changes to trigger
 * automatic project analysis when significant changes occur.
 */
export declare class InstallationDetector extends EventEmitter {
    private config;
    private isActive;
    private watchers;
    private lastPackageSnapshot?;
    private debounceTimer?;
    constructor(config?: Partial<DetectorConfig>);
    /**
     * Start monitoring for installation events
     */
    startMonitoring(): Promise<void>;
    /**
     * Stop monitoring
     */
    stopMonitoring(): Promise<void>;
    /**
     * Manually detect changes (for testing or one-time checks)
     */
    detectChanges(): Promise<InstallationEvent | null>;
    /**
     * Get current monitoring status
     */
    getStatus(): {
        isActive: boolean;
        config: DetectorConfig;
        watcherCount: number;
        lastSnapshot?: Date | undefined;
    };
    private setupPackageJsonWatcher;
    private setupLockFileWatchers;
    private scheduleChangeDetection;
    private createPackageSnapshot;
    private compareSnapshots;
    private determineEventType;
    private shouldTriggerAnalysis;
    private detectPackageManager;
}
//# sourceMappingURL=InstallationDetector.d.ts.map