import { EventEmitter } from 'events';
export interface ApprovalComment {
    type: 'selection' | 'general';
    selectedText?: string;
    comment: string;
    timestamp: string;
    lineNumber?: number;
    characterPosition?: number;
    highlightColor?: string;
}
export interface ApprovalRequest {
    id: string;
    title: string;
    filePath: string;
    type: 'document' | 'action';
    status: 'pending' | 'approved' | 'rejected' | 'needs-revision';
    createdAt: string;
    respondedAt?: string;
    response?: string;
    annotations?: string;
    comments?: ApprovalComment[];
    revisionHistory?: {
        version: number;
        content: string;
        timestamp: string;
        reason?: string;
    }[];
    metadata?: Record<string, any>;
    category: 'spec';
    categoryName: string;
}
export declare class ApprovalStorage extends EventEmitter {
    projectPath: string;
    private approvalsDir;
    private watcher?;
    constructor(projectPath: string);
    start(): Promise<void>;
    stop(): Promise<void>;
    createApproval(title: string, filePath: string, category: 'spec', categoryName: string, type?: 'document' | 'action', metadata?: Record<string, any>): Promise<string>;
    getApproval(id: string): Promise<ApprovalRequest | null>;
    private findApprovalPath;
    updateApproval(id: string, status: 'approved' | 'rejected' | 'needs-revision', response: string, annotations?: string, comments?: ApprovalComment[]): Promise<void>;
    createRevision(originalId: string, newContent: string, reason?: string): Promise<string>;
    getAllPendingApprovals(): Promise<ApprovalRequest[]>;
    getAllApprovals(): Promise<ApprovalRequest[]>;
    deleteApproval(id: string): Promise<boolean>;
    cleanupOldApprovals(maxAgeDays?: number): Promise<void>;
    private generateId;
}
//# sourceMappingURL=approval-storage.d.ts.map