import type { RedisBroadcastDriverConfig } from './type';
import type { QueueMessage } from '../tools/queue/Queue';
export type QueueDriver = {
    enqueue<T = unknown>(queue: string, payload: T): Promise<string>;
    dequeue<T = unknown>(queue: string): Promise<QueueMessage<T> | undefined>;
    ack(queue: string, id: string): Promise<void>;
    length(queue: string): Promise<number>;
    drain(queue: string): Promise<void>;
};
export type RedisPublishClient = {
    connect?: () => Promise<void>;
    publish(channel: string, message: string): Promise<number>;
};
export declare const buildRedisUrl: (config?: RedisBroadcastDriverConfig) => string;
export declare const getRedisUrl: (config?: RedisBroadcastDriverConfig) => string | null;
export declare const ensureDriver: <T = QueueDriver>(type?: "queue" | "publish") => Promise<T>;
//# sourceMappingURL=redis.d.ts.map