import { OnModuleInit } from '@nestjs/common';
import { TelescopeEntry } from '../interfaces/telescope-entry.interface';
import { TelescopeConfig } from '../interfaces/telescope-config.interface';
import { StorageManagerService } from '../../storage/storage-manager.service';
export declare class EnhancedEntryManagerService implements OnModuleInit {
    private readonly storageManager;
    private readonly config;
    private readonly logger;
    private readonly batchQueues;
    private readonly retryQueue;
    private readonly metrics;
    private sequenceCounter;
    private processingIntervals;
    constructor(storageManager: StorageManagerService, config: TelescopeConfig);
    onModuleInit(): Promise<void>;
    process(entry: TelescopeEntry): Promise<void>;
    processBatch(entries: TelescopeEntry[]): Promise<void>;
    private getQueueKey;
    private shouldBatch;
    private addToQueue;
    private flushQueue;
    private processImmediate;
    private processRetryQueue;
    private startBatchProcessors;
    private startRetryProcessor;
    private startMetricsReporting;
    private reportMetrics;
    private ensureEntryFields;
    private generateFamilyHash;
    private getQueueConfig;
    private groupEntriesByQueue;
    getMetrics(): ProcessingMetrics;
    getQueueStatus(): Record<string, QueueStatus>;
    forceFlushAll(): Promise<void>;
    cleanup(): Promise<void>;
}
declare class ProcessingMetrics {
    private entriesProcessed;
    private batchesProcessed;
    private batchesSuccessful;
    private immediateProcessed;
    private immediateSuccessful;
    private retriesAttempted;
    private retriesSuccessful;
    private errors;
    private startTime;
    recordEntry(entry: TelescopeEntry): void;
    recordBatch(size: number, success: boolean): void;
    recordImmediate(success: boolean): void;
    recordRetry(success: boolean): void;
    recordError(): void;
    getMetrics(): MetricsSnapshot;
    reset(): void;
}
interface QueueConfig {
    batchSize: number;
    flushInterval: number;
}
interface QueueStatus {
    name: string;
    size: number;
    config: QueueConfig;
}
interface MetricsSnapshot {
    entriesProcessed: number;
    batchesProcessed: number;
    batchSuccessRate: number;
    immediateProcessed: number;
    immediateSuccessRate: number;
    retriesAttempted: number;
    retrySuccessRate: number;
    errors: number;
    throughput: number;
    elapsedSeconds: number;
}
export {};
