export interface CrystallizerContext {
    purpose: string;
    keyTerms: string[];
    dependencies?: string[];
    patterns?: string[];
    relatedContexts?: string[];
    aiGuidance?: string;
    errorHandling?: string[];
    integrationPoints?: string[];
}
export interface FileMetadata {
    complexity: 'low' | 'medium' | 'high';
    category: 'config' | 'source' | 'test' | 'docs' | 'other';
    estimatedTokens: number;
}
export declare class CrystallizerCore {
    private fileScanner?;
    private contextStorage?;
    private queueManager?;
    private contextSearch?;
    private contextValidator?;
    private changeDetector?;
    private contextUpdater?;
    initializeCrystallization(repoPath: string, exclude?: string[]): Promise<{
        filesQueued: number;
        reinitialized?: boolean;
    }>;
    private isAlreadyInitialized;
    private ensureInfrastructure;
    private initializeComponents;
    private performFreshInitialization;
    private createTemplateFiles;
    private createDefaultTemplate;
    private createTimeoutConfigFile;
    getNextFileForCrystallization(): Promise<{
        path: string;
        relativePath: string;
        content: string;
        metadata: {
            size: number;
            priority: number;
            fileType: string;
            estimatedTokens: number;
            category: "config" | "source" | "test" | "docs" | "other";
            lastModified: Date;
        };
    } | null>;
    storeCrystallizedContext(filePath: string, context: CrystallizerContext, fileContent?: string, fileMetadata?: Partial<FileMetadata>): Promise<{
        filePath: string;
        totalContexts: number;
        totalTokens: number;
    }>;
    getCrystallizationProgress(): Promise<{
        contextStats: {
            totalContexts: number;
            byCategory: Record<string, number>;
            byTemplate: Record<string, number>;
            totalTokens: number;
            avgTokensPerContext: number;
        };
        session: {
            sessionId: string;
            startTime: Date | null;
            repoPath: string | null;
        };
        completionPercentage: number;
        estimatedCompletionTime: string | null;
        totalFiles: number;
        processedFiles: number;
        currentFile?: string;
        startTime: Date;
        estimatedTimeRemaining?: number;
        sessionId: string;
        totalEstimatedTokens: number;
        processedTokens: number;
        avgTokensPerFile: number;
        filesByCategory: Record<string, number>;
        processedByCategory: Record<string, number>;
    }>;
    searchCrystallizedContexts(query: string, maxTokens?: number, category?: string): Promise<{
        query: string;
        results: number;
        totalTokens: number;
        matches: {
            file: string;
            relevance: number;
            category: "config" | "source" | "test" | "docs" | "other";
            complexity: "low" | "medium" | "high";
            tokens: number | undefined;
            highlights: string[];
            purpose: string;
            keyTerms: string[];
        }[];
    }>;
    getCrystallizedBundle(files: string[], maxTokens?: number): Promise<{
        requestedFiles: number;
        includedFiles: number;
        totalTokens: number;
        contexts: {
            file: string;
            purpose: string;
            keyTerms: string[];
            dependencies: string[];
            patterns: string[];
            crossReferences: import("../types/index.js").CrossReference[];
            complexity: "low" | "medium" | "high";
            category: "config" | "source" | "test" | "docs" | "other";
            tokenCount: number | undefined;
        }[];
    }>;
    findRelatedCrystallizedContexts(filePath: string, maxResults?: number): Promise<{
        sourceFile: string;
        relatedContexts: number;
        matches: {
            file: string;
            relevance: number;
            category: "config" | "source" | "test" | "docs" | "other";
            purpose: string;
            keyTerms: string[];
            relationship: string;
        }[];
    }>;
    searchByComplexity(complexity: 'low' | 'medium' | 'high', maxResults?: number): Promise<{
        complexity: "low" | "medium" | "high";
        totalFound: number;
        contexts: {
            file: string;
            category: "config" | "source" | "test" | "docs" | "other";
            purpose: string;
            keyTerms: string[];
            tokenCount: number | undefined;
        }[];
    }>;
    validateCrystallizationQuality(filePath?: string, generateReport?: boolean): Promise<{
        overallScore: number;
        totalContexts: number;
        categoryScores: Record<string, number>;
        commonIssues: {
            issue: string;
            count: number;
        }[];
        recommendations: string[];
        metrics: {
            avgTokensPerContext: number;
            tokenEfficiencyRating: "excellent" | "good" | "fair" | "poor";
            coverageCompleteness: number;
            crossReferenceRatio: number;
        };
        type: string;
    } | {
        isValid: boolean;
        score: number;
        issues: import("../types/index.js").ValidationIssue[];
        suggestions: string[];
        metrics: import("../types/index.js").QualityMetrics;
        type: string;
        file: string;
    }>;
    updateCrystallizedContexts(options?: {
        forceUpdate?: boolean;
        includeUnchanged?: boolean;
        cleanupDeleted?: boolean;
        checkOnly?: boolean;
        generateReport?: boolean;
    }): Promise<{
        type: string;
        report: string;
    } | {
        needsUpdate: boolean;
        summary: {
            lastScan: Date | null;
            totalFiles: number;
            filesWithContext: number;
            contextCoverage: number;
            estimatedOutdated: number;
        };
        type: string;
        report?: undefined;
    } | {
        summary: {
            filesScanned: number;
            changesDetected: number;
            contextsUpdated: number;
            contextsAdded: number;
            contextsRemoved: number;
            errors: number;
        };
        changes: import("../core/change-detector.js").FileChange[];
        updatedContexts: string[];
        errors: Array<{
            file: string;
            error: string;
        }>;
        type: string;
        report?: undefined;
    }>;
    getCrystallizationGuidance(repoPath?: string): Promise<any>;
    private loadTemplatesFromFiles;
}
//# sourceMappingURL=crystallizer-core.d.ts.map