import { Context } from 'koishi';
import { Config } from './config';
export interface AutoCollectOptions {
    minSize: number;
    maxSize: number;
    similarityThreshold: number;
    whitelistGroups: string[];
    groupAutoCollectLimit: Record<string, {
        hourLimit: number;
        dayLimit: number;
    }>;
}
export interface ImageInfo {
    buffer: Buffer;
    size: number;
    hash: string;
    format: string;
}
export interface ImageFeatures {
    phash: string;
    histogram: number[];
    aspectRatio: number;
    dimensions: {
        width: number;
        height: number;
    };
}
export declare class AutoCollector {
    private ctx;
    private config;
    private options;
    private emojiHashes;
    private imageFeatures;
    private static readonly MAX_HASHES;
    private groupAutoCollectLimit;
    constructor(ctx: Context, config: Config);
    private loadExistingHashes;
    private checkHitLimit;
    private registerCommands;
    start(): void;
    private shouldProcessMessage;
    private processImage;
    private getImageInfo;
    private checkFileSize;
    private calculateImageHash;
    private detectImageFormat;
    private extractImageFeatures;
    private getImageDimensions;
    private calculatePerceptualHash;
    private convertToGrayscale;
    private resizeImage;
    private applyDCT;
    private calculateMedian;
    private calculateHistogram;
    private hammingDistance;
    private histogramSimilarity;
    private calculateSimilarityScore;
    private calculateDimensionSimilarity;
    private isSimilarToExisting;
    private saveEmoji;
    updateConfig(config: Config): void;
    getStats(): {
        totalHashes: number;
        isEnabled: boolean;
        options: AutoCollectOptions;
    };
}
