import { Context } from 'koishi';
import { Config } from '../config';
import { ImageMetadata } from '../image';
export interface ImageInfo {
    buffer: Buffer;
    size: number;
    hash: string;
    metadata: ImageMetadata;
}
export interface FrameFeatures {
    hash: string;
    histogram: number[];
}
export interface ImageFeatures {
    frames: FrameFeatures[];
    aspectRatio: number;
    dimensions: {
        width: number;
        height: number;
    };
    frameCount: number;
}
export interface FrequencyRecord {
    hash: string;
    timestamps: number[];
    groupId: string;
}
export declare class AutoCollector {
    private ctx;
    private config;
    private imageFeatures;
    private frequencyTracker;
    private featuresReady;
    private static readonly MAX_HASHES;
    private static readonly FREQUENCY_WINDOW;
    private static readonly SIMILARITY_FRAME_SAMPLES;
    private static readonly HASH_WIDTH;
    private static readonly HASH_HEIGHT;
    private static readonly HISTOGRAM_WIDTH;
    private static readonly HISTOGRAM_HEIGHT;
    private static readonly HISTOGRAM_BINS;
    private groupAutoCollectLimit;
    constructor(ctx: Context, config: Config);
    private loadExistingFeatures;
    private checkHitLimit;
    private registerCommands;
    start(): void;
    private shouldProcessMessage;
    private trackImageFrequency;
    private cleanupFrequencyTracker;
    private processImage;
    private getImageInfo;
    private checkFileSize;
    private extractImageFeatures;
    private calculateDifferenceHash;
    private calculateHistogramFromPixels;
    private hammingDistance;
    private histogramSimilarity;
    private calculateSimilarityScore;
    private calculateFrameSetSimilarity;
    private calculateFrameSimilarity;
    private calculateDimensionSimilarity;
    private isSimilarToExisting;
    private saveEmoji;
    private getDuplicateReason;
    getStats(): {
        featureCount: number;
        frequencyRecords: number;
        isEnabled: boolean;
    };
}
