///
import { ValkeyCommandArgument } from "../commands";
export declare enum PubSubType {
CHANNELS = "CHANNELS",
PATTERNS = "PATTERNS",
SHARDED = "SHARDED"
}
export type PubSubListener = (message: T, channel: T) => unknown;
export interface ChannelListeners {
unsubscribing: boolean;
buffers: Set>;
strings: Set>;
}
export type PubSubTypeListeners = Map;
export type PubSubCommand = ReturnType;
export declare class PubSub {
#private;
static isStatusReply(reply: Array): boolean;
static isShardedUnsubscribe(reply: Array): boolean;
get isActive(): boolean;
subscribe(type: PubSubType, channels: string | Array, listener: PubSubListener, returnBuffers?: T): {
args: ValkeyCommandArgument[];
channelsCounter: number;
resolve: () => void;
reject: () => void;
} | undefined;
extendChannelListeners(type: PubSubType, channel: string, listeners: ChannelListeners): {
args: (string | Buffer)[];
channelsCounter: number;
resolve: () => number;
reject: () => void;
} | undefined;
extendTypeListeners(type: PubSubType, listeners: PubSubTypeListeners): {
args: ValkeyCommandArgument[];
channelsCounter: number;
resolve: () => number;
reject: () => void;
} | undefined;
unsubscribe(type: PubSubType, channels?: string | Array, listener?: PubSubListener, returnBuffers?: T): {
args: ValkeyCommandArgument[];
channelsCounter: number;
resolve: () => void;
reject: undefined;
} | undefined;
reset(): void;
resubscribe(): Array;
handleMessageReply(reply: Array): boolean;
removeShardedListeners(channel: string): ChannelListeners;
getTypeListeners(type: PubSubType): PubSubTypeListeners;
}