import { EventEmitter } from 'events';
import { GitDisciplineConfig } from '../types/orchestration';
export interface GitStats {
    totalCommits: number;
    commitsByAgent: Record<string, number>;
    averageCommitInterval: number;
    branchesCreated: number;
    tagsCreated: number;
    lastCommitTime?: Date;
    complianceRate: number;
}
export interface CommitInfo {
    agentId: string;
    agentRole: string;
    sessionId: string;
    changes: string[];
    tests?: string[];
    blockers?: string[];
    nextSteps?: string[];
}
export declare class GitDisciplineService extends EventEmitter {
    private config;
    private projectPath;
    private stats;
    private lastCommitTimes;
    private autoCommitIntervals;
    private commitTemplate;
    constructor(config: GitDisciplineConfig, projectPath: string);
    /**
     * Initialize git discipline for the project
     */
    initialize(): Promise<void>;
    /**
     * Ensure project is a git repository
     */
    private ensureGitRepo;
    /**
     * Configure git settings
     */
    private configureGit;
    /**
     * Set up git hooks
     */
    private setupGitHooks;
    /**
     * Start auto-commit for an agent
     */
    startAutoCommit(agentId: string, agentRole: string, sessionId: string): void;
    /**
     * Stop auto-commit for an agent
     */
    stopAutoCommit(agentId: string): void;
    /**
     * Perform auto-commit
     */
    private performAutoCommit;
    /**
     * Generate commit message from template
     */
    private generateCommitMessage;
    /**
     * Create feature branch
     */
    createFeatureBranch(branchName: string, agentId: string): Promise<string>;
    /**
     * Tag stable version
     */
    tagStableVersion(tagName: string, message: string, agentId: string): Promise<void>;
    /**
     * Check compliance with commit interval
     */
    checkCompliance(agentId: string): boolean;
    /**
     * Update commit statistics
     */
    private updateCommitStats;
    /**
     * Update average commit interval
     */
    private updateAverageInterval;
    /**
     * Get git statistics
     */
    getStats(): GitStats;
    /**
     * Get recent commits
     */
    getRecentCommits(limit?: number): Promise<any[]>;
    /**
     * Get current branch
     */
    getCurrentBranch(): Promise<string>;
    /**
     * Clean up resources
     */
    cleanup(): void;
}
//# sourceMappingURL=gitDiscipline.d.ts.map