import { EventEmitter } from 'events';
export interface ChangeDetectionConfig {
    sampleSize: number;
    minSampleInterval: number;
    changeThreshold: number;
    deepComparison: boolean;
    patternRecognition: boolean;
}
export interface ChangeDetectionResult {
    hasChanged: boolean;
    changeType: 'none' | 'minor' | 'major' | 'structural';
    confidence: number;
    currentHash: string;
    previousHash?: string;
    changeDetails?: {
        addedFields: string[];
        removedFields: string[];
        modifiedFields: string[];
        sizeChange: number;
    };
}
export interface PatternAnalysis {
    patternType: 'stable' | 'periodic' | 'volatile' | 'trending';
    strength: number;
    nextChangeTime?: number;
    changeFrequency: number;
    volatility: number;
}
interface DataSample {
    timestamp: number;
    dataHash: string;
    changeType: string;
    confidence: number;
    size: number;
}
export interface DataSourceActivity {
    dataSourceId: string;
    activityLevel: 'static' | 'low' | 'medium' | 'high' | 'volatile';
    pattern: PatternAnalysis;
    recommendedInterval: number;
    confidence: number;
}
export declare class ChangeDetector extends EventEmitter {
    private config;
    private dataSamples;
    private lastKnownHashes;
    private patternCache;
    private cacheExpiry;
    constructor(config?: Partial<ChangeDetectionConfig>);
    detectChange(dataSourceId: string, currentData: any, previousData?: any): ChangeDetectionResult;
    analyzePattern(dataSourceId: string): PatternAnalysis;
    classifyActivity(dataSourceId: string): DataSourceActivity;
    getSamples(dataSourceId: string): DataSample[];
    clearSamples(dataSourceId: string): void;
    getStatistics(): {
        totalDataSources: number;
        totalSamples: number;
        activityDistribution: Record<string, number>;
        patternDistribution: Record<string, number>;
    };
    private generateDataHash;
    private performDeepComparison;
    private performPatternAnalysis;
    private calculateVolatility;
    private detectPatternType;
    private isPeriodicPattern;
    private isTrendingPattern;
    private calculatePatternStrength;
    private predictNextChangeTime;
    private calculateClassificationConfidence;
    private estimateDataSize;
    private recordSample;
}
export {};
//# sourceMappingURL=change-detector.d.ts.map