import { RedisClientType } from 'redis'; import { Publisher, PublisherOptions, PublisherSubscribeListenerOptions } from '../index.js'; import { RPCSerializer } from '@orpc/client'; import '@orpc/shared'; interface RedisPublisherOptions extends PublisherOptions { /** * Redis subscriber instance. * Pub/Sub takes over the connection, so a client with subscriptions * cannot execute commands and must use a dedicated connection. * * @default redis.duplicate() */ subscriber?: undefined | RedisClientType; /** * The prefix to use for Redis keys. * * @default '' */ prefix?: string; /** * Serializer for serialize and deserialize payloads. * * @default RPCSerializer */ serializer?: undefined | Pick; /** * Configuration for event resume support. * * When enabled, published events are temporarily stored so new * subscribers can resume from a previous position using `lastEventId`. * * @default { enabled: false } */ resume?: { /** * Whether event resume support is enabled. * * When enabled, published events are temporarily stored so new * subscribers can resume from a previous position using `lastEventId`. * * @default false */ enabled: boolean; /** * How long (in seconds) to retain events for resume. * * Expired events are cleaned up lazily for performance reasons, so * some events may remain available slightly longer than this period. * * @default 300 (5 min) */ seconds?: number; }; } declare class RedisPublisher> extends Publisher { private readonly redis; private readonly subscriber; private readonly prefix; private readonly serializer; private readonly resumeEnabled; private readonly resumeSeconds; /** * The exactness of the `XTRIM` command. * Used for testing purpose. */ private readonly xTrimExactness; constructor(redis: RedisClientType, options?: RedisPublisherOptions); private readonly firstPublishTimeMap; publish(event: K, payload: T[K]): Promise; protected subscribeListener(event: K, originalListener: (payload: T[K]) => void, { lastEventId, onError }?: PublisherSubscribeListenerOptions): Promise<() => Promise>; private serializePayload; private deserializePayload; } export { RedisPublisher }; export type { RedisPublisherOptions };