import { Redis, Cluster, type ClusterNode, type ClusterOptions, type RedisOptions } from 'ioredis'; import type { Presence } from '@colyseus/core'; import EventEmitter from 'events'; type Callback = (...args: any[]) => void; export declare class RedisPresence implements Presence { protected sub: Redis | Cluster; protected pub: Redis | Cluster; protected subscriptions: EventEmitter<[never]>; constructor(options?: number | string | RedisOptions | ClusterNode[] | Redis | Cluster, clusterOptions?: ClusterOptions); subscribe(topic: string, callback: Callback): Promise; unsubscribe(topic: string, callback?: Callback): Promise; publish(topic: string, data: any): Promise; channels(pattern?: string): Promise; exists(key: string): Promise; set(key: string, value: string): Promise; setex(key: string, value: string, seconds: number): Promise; expire(key: string, seconds: number): Promise; get(key: string): Promise; del(roomId: string): Promise; sadd(key: string, value: any): Promise; smembers(key: string): Promise; sismember(key: string, field: string): Promise; srem(key: string, value: any): Promise; scard(key: string): Promise; sinter(...keys: string[]): Promise; hset(key: string, field: string, value: string): Promise; hincrby(key: string, field: string, value: number): Promise; hincrbyex(key: string, field: string, value: number, expireInSeconds: number): Promise; hget(key: string, field: string): Promise; hgetall(key: string): Promise>; hdel(key: string, field: string): Promise; hlen(key: string): Promise; incr(key: string): Promise; decr(key: string): Promise; llen(key: string): Promise; rpush(key: string, value: string): Promise; lpush(key: string, value: string): Promise; rpop(key: string): Promise; lpop(key: string): Promise; brpop(...args: any): Promise<[string, string] | null>; shutdown(): void; setMaxListeners(number: number): void; protected handleSubscription: (channel: any, message: any) => void; } export {};