/**
 * Git Service
 * Handles Git repository operations, monitoring, and change detection
 */
import { StatusResult } from 'simple-git';
import { EventEmitter } from 'events';
import { Repository, GitCommit, GitFileChange, RepositoryConfig } from './types';
export declare class GitService extends EventEmitter {
    private repositories;
    private monitoringIntervals;
    constructor();
    /**
     * Initialize Git service and load existing repositories
     */
    initialize(): Promise<void>;
    /**
     * Add a new repository for monitoring
     */
    addRepository(config: {
        name: string;
        path: string;
        url?: string;
        branch?: string;
        config?: Partial<RepositoryConfig>;
    }): Promise<Repository>;
    /**
     * Remove a repository from monitoring
     */
    removeRepository(repositoryId: string): Promise<void>;
    /**
     * Start monitoring a repository for changes
     */
    startMonitoring(repositoryId: string): Promise<void>;
    /**
     * Stop monitoring a repository
     */
    stopMonitoring(repositoryId: string): Promise<void>;
    /**
     * Check for changes in a repository
     */
    checkForChanges(repositoryId: string): Promise<void>;
    /**
     * Get commits since a specific commit hash
     */
    getCommitsSince(repository: Repository, sinceCommit?: string): Promise<GitCommit[]>;
    /**
     * Get file changes between two commits
     */
    getFileChanges(repositoryId: string, fromCommit: string, toCommit: string): Promise<GitFileChange[]>;
    /**
     * Get repository status
     */
    getRepositoryStatus(repositoryId: string): Promise<StatusResult>;
    /**
     * Get all repositories
     */
    getRepositories(): Repository[];
    /**
     * Get repository by ID
     */
    getRepository(repositoryId: string): Repository | undefined;
    /**
     * Update repository configuration
     */
    updateRepositoryConfig(repositoryId: string, config: Partial<RepositoryConfig>): Promise<Repository>;
    /**
     * Cleanup resources
     */
    cleanup(): Promise<void>;
    private loadRepositories;
    private saveRepositories;
    /**
     * Auto-detect and add the current project as a repository
     */
    private autoDetectCurrentProject;
    private generateRepositoryId;
    private mapGitStatus;
}
export default GitService;
//# sourceMappingURL=GitService.d.ts.map