import { Cluster, Ok, Redis, RedisOptions } from 'ioredis'; import { PubSubEngine } from 'graphql-subscriptions'; declare type RedisClient = Redis | Cluster; declare type OnMessage = (message: T) => void; export interface PubSubRedisOptions { connection?: RedisOptions; triggerTransform?: TriggerTransform; connectionListener?: (err: Error) => void; publishers?: RedisClient[]; subscriber?: RedisClient; reviver?: Reviver; serializer?: Serializer; deserializer?: Deserializer; } export declare class RedisPubSub implements PubSubEngine { constructor(options?: PubSubRedisOptions); publish(trigger: string, payload: T): Promise; subscribe(trigger: string, onMessage: OnMessage, options?: unknown): Promise; unsubscribe(subId: number): void; asyncIterator(triggers: string | string[], options?: unknown): AsyncIterator; getSubscriber(): RedisClient; getPublishers(): RedisClient[]; close(): Promise; private readonly serializer?; private readonly deserializer?; private readonly triggerTransform; private readonly redisSubscriber; private readonly redisPublishers; private readonly reviver; private readonly subscriptionMap; private readonly subsRefsMap; private currentSubscriptionId; private onMessage; } export declare type Path = Array; export declare type Trigger = string | Path; export declare type TriggerTransform = (trigger: Trigger, channelOptions?: unknown) => string; export declare type Reviver = (key: any, value: any) => any; export declare type Serializer = (source: any) => string; export declare type Deserializer = (source: string) => any; export {};