import { IStateStorageAdapter, ITask, TaskStatus, TaskQueryOptions } from '../interfaces/storage-adapter.interface';
/**
 * Redis storage adapter options
 */
export interface RedisStorageOptions {
    host?: string;
    port?: number;
    password?: string;
    url?: string;
    keyPrefix?: string;
    options?: any;
}
/**
 * Redis storage adapter
 */
export declare class RedisStorageAdapter implements IStateStorageAdapter {
    private options;
    private redis;
    private keyPrefix;
    constructor(options: RedisStorageOptions);
    initialize(): Promise<void>;
    private getTaskKey;
    private getUniquenessKey;
    private getRateLimitKey;
    private getQueueKey;
    private getChainKey;
    saveTask(task: ITask): Promise<void>;
    private deserializeTask;
    getTask(taskId: string): Promise<ITask | null>;
    updateTaskStatus(taskId: string, status: TaskStatus, updateData?: Partial<ITask>): Promise<void>;
    deleteTask(taskId: string): Promise<boolean>;
    createTask(task: ITask): Promise<ITask>;
    getTasks(options?: TaskQueryOptions): Promise<ITask[]>;
    getTaskCount(options?: TaskQueryOptions): Promise<number>;
    isUniquenessKeyActive(key: string): Promise<boolean>;
    setUniquenessKeyActive(key: string, taskId: string, ttlSeconds?: number): Promise<void>;
    removeUniquenessKey(key: string): Promise<void>;
    getRateLimit(key: string): Promise<{
        count: number;
        resetTime: Date;
    } | null>;
    incrementRateLimit(key: string, windowMs: number, maxRequests: number): Promise<{
        allowed: boolean;
        count: number;
        resetTime: Date;
    }>;
    hasActiveTaskInChain(chainId: string): Promise<boolean>;
    getNextChainIndex(chainId: string): Promise<number>;
    cleanup(options?: {
        olderThan?: Date;
        statuses?: TaskStatus[];
        removeCompleted?: boolean;
        removeFailed?: boolean;
    }): Promise<number>;
    close(): Promise<void>;
    /**
     * Clear all tasks - for testing purposes only
     */
    private clearAllTasks;
}
