/**
 * 🔧 Queue Adapter Interface
 *
 * Base adapter interface for the unified queue system.
 * Implements the Adapter Pattern to provide a consistent API
 * for different queue implementations.
 */
import { QueueItem, QueueConfig, QueueStatistics, QueueProcessor, QueueResult, QueueEventCallbacks } from './types';
export declare abstract class QueueAdapter<T = any> {
    protected config: QueueConfig;
    protected callbacks?: QueueEventCallbacks<T>;
    protected items: Map<string, QueueItem<T>>;
    protected isProcessing: boolean;
    protected startTime?: Date;
    protected endTime?: Date;
    constructor(config: QueueConfig, callbacks?: QueueEventCallbacks<T>);
    /**
     * Add items to the queue
     */
    abstract enqueue(data: T[], options?: {
        priority?: number;
    }): string[];
    /**
     * Process all items in the queue
     */
    abstract process(processor: QueueProcessor<T>): Promise<QueueResult<T>>;
    /**
     * Get queue statistics
     */
    abstract getStatistics(): QueueStatistics;
    /**
     * Pause queue processing
     */
    abstract pause(): void;
    /**
     * Resume queue processing
     */
    abstract resume(): void;
    /**
     * Clear all items from the queue
     */
    abstract clear(): void;
    /**
     * Update queue configuration
     */
    configure(config: Partial<QueueConfig>): void;
    /**
     * Get current configuration
     */
    getConfiguration(): QueueConfig;
    /**
     * Check if queue is processing
     */
    isActive(): boolean;
    /**
     * Get all items
     */
    getItems(): QueueItem<T>[];
    /**
     * Get items by status
     */
    getItemsByStatus(status: QueueItem<T>['status']): QueueItem<T>[];
    /**
     * Calculate priority for an item based on patterns
     */
    protected calculatePriority(data: T, defaultPriority?: number): number;
    /**
     * Generate unique ID for queue item
     */
    protected generateId(): string;
    /**
     * Create a new queue item
     */
    protected createQueueItem(data: T, priority?: number): QueueItem<T>;
    /**
     * Update item status
     */
    protected updateItemStatus(id: string, status: QueueItem<T>['status'], data?: Partial<QueueItem<T>>): boolean;
    /**
     * Get basic statistics
     */
    protected getBaseStatistics(): QueueStatistics;
}
//# sourceMappingURL=queue-adapter.d.ts.map