/**
 * Module Knowledge Management System Types
 *
 * Type definitions for managing dual-purpose TTL files that serve both
 * Neo4j knowledge graph population and direct LLM context enhancement.
 */
export interface ModuleKnowledgeFile {
    filePath: string;
    modulePath: string;
    content: string;
    checksum: string;
    lastModified: Date;
    generatedAt: Date;
    version: string;
    businessContextEnhanced: boolean;
    validationStatus: ValidationStatus;
}
export interface ValidationStatus {
    isValid: boolean;
    syntaxErrors: ValidationError[];
    semanticWarnings: ValidationWarning[];
    businessContextCompleteness: number;
    lastValidated: Date;
}
export interface ValidationError {
    type: 'syntax' | 'schema' | 'reference';
    message: string;
    line?: number;
    column?: number;
    severity: 'error' | 'warning';
    suggestion?: string;
}
export interface ValidationWarning {
    type: 'incomplete_context' | 'placeholder_detected' | 'best_practice';
    message: string;
    suggestion: string;
    line?: number;
}
export interface BusinessContextEnhancement {
    domain?: string;
    businessRules?: string[];
    useCases?: string[];
    stakeholders?: string[];
    qualityAttributes?: QualityAttribute[];
    constraints?: string[];
    customProperties?: Record<string, string>;
}
export interface QualityAttribute {
    name: string;
    target: string;
    measurement: string;
}
export interface ConflictResolution {
    conflictId: string;
    filePath: string;
    conflictType: 'concurrent_edit' | 'code_vs_manual' | 'merge_conflict';
    baseContent: string;
    localChanges: string;
    remoteChanges: string;
    resolvedContent?: string;
    resolution: 'auto' | 'manual' | 'pending';
    timestamp: Date;
}
export interface KnowledgeFileUpdate {
    filePath: string;
    updateType: 'code_change' | 'manual_edit' | 'business_enhancement';
    changes: FileChange[];
    preserveBusinessContext: boolean;
    timestamp: Date;
    author?: string;
}
export interface FileChange {
    type: 'added' | 'modified' | 'removed';
    section: 'technical' | 'business' | 'documentation';
    property: string;
    oldValue?: string;
    newValue?: string;
    line?: number;
}
export interface LLMContextPreview {
    filePath: string;
    relevantFiles: string[];
    contextContent: string;
    tokenCount: number;
    relevanceScore: number;
    businessContextRatio: number;
    technicalContextRatio: number;
}
export interface ModuleKnowledgeManagerOptions {
    autoValidate: boolean;
    preserveBusinessContext: boolean;
    enableConflictResolution: boolean;
    enableLLMPreview: boolean;
    validationLevel: 'strict' | 'moderate' | 'lenient';
    backupEnabled: boolean;
    backupRetention: number;
}
export interface KnowledgeGraphUpdate {
    filePath: string;
    updateType: 'full' | 'incremental';
    affectedNodes: string[];
    affectedRelationships: string[];
    timestamp: Date;
    success: boolean;
    error?: string;
}
export interface MCPContextUpdate {
    filePath: string;
    contextId: string;
    updateType: 'refresh' | 'invalidate';
    affectedContext: string[];
    timestamp: Date;
    success: boolean;
}
export interface DeveloperTooling {
    enhancementSuggestions: EnhancementSuggestion[];
    completionStatus: CompletionStatus;
    impactAnalysis: ImpactAnalysis;
}
export interface EnhancementSuggestion {
    type: 'business_domain' | 'business_rules' | 'use_cases' | 'documentation';
    priority: 'high' | 'medium' | 'low';
    suggestion: string;
    example?: string;
    property: string;
    line?: number;
}
export interface CompletionStatus {
    businessDomain: boolean;
    businessRules: boolean;
    useCases: boolean;
    methodDocumentation: number;
    classDocumentation: number;
    overallCompleteness: number;
}
export interface ImpactAnalysis {
    llmContextImpact: 'high' | 'medium' | 'low';
    graphQueryImpact: 'high' | 'medium' | 'low';
    affectedFiles: string[];
    dependentModules: string[];
    estimatedBenefit: string;
}
export interface BackupMetadata {
    filePath: string;
    backupPath: string;
    timestamp: Date;
    reason: 'auto_update' | 'manual_edit' | 'conflict_resolution';
    checksum: string;
}
export interface SyncStatus {
    filePath: string;
    lastSync: Date;
    syncType: 'knowledge_graph' | 'mcp_context' | 'both';
    status: 'success' | 'failed' | 'pending';
    error?: string;
    retryCount: number;
}
export type KnowledgeFileEvent = {
    type: 'file_created';
    payload: ModuleKnowledgeFile;
} | {
    type: 'file_updated';
    payload: KnowledgeFileUpdate;
} | {
    type: 'file_validated';
    payload: ValidationStatus;
} | {
    type: 'conflict_detected';
    payload: ConflictResolution;
} | {
    type: 'business_context_enhanced';
    payload: BusinessContextEnhancement;
} | {
    type: 'sync_completed';
    payload: SyncStatus;
} | {
    type: 'backup_created';
    payload: BackupMetadata;
};
export interface ModuleKnowledgeResult<T = any> {
    success: boolean;
    data?: T;
    error?: string;
    warnings?: string[];
    metadata?: Record<string, any>;
}
export interface BatchOperationResult {
    totalFiles: number;
    successful: number;
    failed: number;
    errors: Array<{
        filePath: string;
        error: string;
    }>;
    warnings: Array<{
        filePath: string;
        warning: string;
    }>;
    duration: number;
}
//# sourceMappingURL=types.d.ts.map