/**
 * Core interfaces for content generation system
 * Following SOLID principles with clear separation of concerns
 */
import type { HIGSection, HIGCategory, ApplePlatform, SearchResult, ContentQualityMetrics, ProcessedContent, QualityValidationResult, ExtractionStatistics } from '../types.js';
export interface IFileSystemService {
    writeFile(path: string, content: string): Promise<void>;
    readFile(path: string): Promise<string>;
    mkdir(path: string, options?: {
        recursive: boolean;
    }): Promise<void>;
    readdir(path: string): Promise<string[]>;
    exists(path: string): Promise<boolean>;
    stat(path: string): Promise<{
        size: number;
        isDirectory(): boolean;
    }>;
    calculateDirectorySize(path: string): Promise<number>;
}
export interface IContentProcessor {
    process(section: HIGSection): Promise<string>;
    processContent(html: string, url: string): Promise<any>;
    extractSnippet(content: string, maxLength?: number): string;
    extractKeywords(content: string, section: HIGSection): string[];
}
export interface IContentEnhancer {
    canEnhance(section: HIGSection): boolean;
    enhance(content: string, section: HIGSection): string;
}
export interface ISearchIndexer {
    addSection(section: HIGSection): void;
    generateIndex(): Record<string, any>;
    clear(): void;
}
export interface ICrossReferenceGenerator {
    addSection(section: HIGSection): void;
    generateReferences(): Record<string, any>;
    clear(): void;
}
export interface IContentQualityValidator {
    validateContent(content: string, section: HIGSection): Promise<QualityValidationResult>;
    calculateQualityScore(content: string): number;
    isHighQualityContent(metrics: ContentQualityMetrics): boolean;
}
export interface IAdvancedContentExtractor {
    extractContent(rawContent: string, section: HIGSection): Promise<ProcessedContent>;
    extractCodeExamples(content: string): string[];
    extractImageReferences(content: string): string[];
    generateSummary(content: string, section: HIGSection): string;
}
export interface ICrawleeHIGService {
    discoverSections(): Promise<HIGSection[]>;
    fetchSectionContent(section: HIGSection): Promise<HIGSection>;
    searchContent(query: string, platform?: ApplePlatform, category?: HIGCategory, limit?: number): Promise<SearchResult[]>;
}
export interface IExtractionMonitor {
    recordExtraction(section: HIGSection, quality: ContentQualityMetrics): void;
    getStatistics(): ExtractionStatistics;
    generateReport(): string;
}
export interface ContentGenerationConfig {
    readonly outputDirectory: string;
    readonly batchSize: number;
    readonly rateLimitDelay: number;
    readonly forceUpdate: boolean;
    readonly maxRetries: number;
}
export interface GenerationMetadata {
    readonly lastUpdated: string;
    readonly totalSections: number;
    readonly sectionsByPlatform: Record<ApplePlatform, number>;
    readonly sectionsByCategory: Record<HIGCategory, number>;
    readonly totalSize: number;
    readonly generationDuration: number;
}
//# sourceMappingURL=content-interfaces.d.ts.map