/**
 * Code Ingestion Service
 * Main orchestrator for code ingestion, Git monitoring, and file watching
 */
import { EventEmitter } from 'events';
import { BaseAnalyzer } from '../ast-analyzer/BaseAnalyzer';
import { Repository, IngestionJob, WebhookPayload, IngestionConfig, IngestionMetrics } from './types';
export declare class CodeIngestionService extends EventEmitter {
    private gitService;
    private fileWatcher;
    private jobQueue;
    private astAnalyzer;
    private config;
    private metrics;
    private isInitialized;
    constructor(astAnalyzer: BaseAnalyzer, config?: Partial<IngestionConfig>);
    /**
     * Initialize the code ingestion service
     */
    initialize(): Promise<void>;
    /**
     * Add a repository for monitoring and analysis
     */
    addRepository(config: {
        name: string;
        path: string;
        url?: string;
        branch?: string;
        enableWebhooks?: boolean;
        enableFileWatcher?: boolean;
        includePatterns?: string[];
        excludePatterns?: string[];
        languages?: string[];
    }): Promise<Repository>;
    /**
     * Remove a repository from monitoring
     */
    removeRepository(repositoryId: string): Promise<void>;
    /**
     * Process webhook payload from Git providers
     */
    processWebhook(payload: WebhookPayload): Promise<void>;
    /**
     * Queue full repository analysis
     */
    queueFullAnalysis(repositoryId: string, triggerType?: 'manual' | 'webhook' | 'file_watcher' | 'scheduled'): Promise<IngestionJob>;
    /**
     * Queue incremental analysis for specific files
     */
    queueIncrementalAnalysis(repositoryId: string, commitHash?: string, changedFiles?: string[], triggerType?: 'manual' | 'webhook' | 'file_watcher' | 'scheduled'): Promise<IngestionJob>;
    /**
     * Queue TTL file synchronization
     */
    queueTTLSync(repositoryId: string, ttlFilePath: string): Promise<IngestionJob>;
    /**
     * Get repository by ID
     */
    getRepository(repositoryId: string): Repository | undefined;
    /**
     * Get all repositories
     */
    getRepositories(): Repository[];
    /**
     * Get job by ID
     */
    getJob(jobId: string): IngestionJob | undefined;
    /**
     * Get jobs for a repository
     */
    getRepositoryJobs(repositoryId: string): IngestionJob[];
    /**
     * Get service metrics
     */
    getMetrics(): IngestionMetrics;
    /**
     * Shutdown the service
     */
    shutdown(): Promise<void>;
    private setupEventHandlers;
    private processJob;
    private processFullAnalysis;
    private processIncrementalAnalysis;
    private processFileChange;
    private processTTLSync;
    private createAnalysisSummary;
    private updateMetrics;
    private parseTTLContent;
    private storeTTLMetadata;
    private calculateChecksum;
    private ensureInitialized;
}
export default CodeIngestionService;
//# sourceMappingURL=CodeIngestionService.d.ts.map