import { Alepha, Static } from "alepha";
import { SubscribeCallback, TopicProvider, TopicPublishOptions, TopicSubscribeOptions, UnSubscribeFn } from "alepha/topic";
import { RedisProvider, RedisSubscriberProvider } from "alepha/redis";
//#region ../../src/topic/redis/providers/RedisTopicProvider.d.ts
/**
 * Redis topic configuration atom.
 */
declare const redisTopicOptions: import("alepha").Atom<import("zod").ZodObject<{
  prefix: import("zod").ZodString;
}, import("zod/v4/core").$strip>, "alepha.topic.redis.options">;
type RedisTopicOptions = Static<typeof redisTopicOptions.schema>;
declare module "alepha" {
  interface State {
    [redisTopicOptions.key]: RedisTopicOptions;
  }
}
declare class RedisTopicProvider extends TopicProvider {
  protected readonly options: Readonly<{
    prefix: string;
  }>;
  protected readonly alepha: Alepha;
  protected readonly redisProvider: RedisProvider;
  protected readonly redisSubscriberProvider: RedisSubscriberProvider;
  protected readonly log: import("alepha/logger").Logger;
  protected readonly start: import("alepha").HookPrimitive<"start">;
  protected wildcardChar(): string;
  prefix(queue: string): string;
  /**
   * Publish a message to a topic.
   */
  publish(topic: string, message: string, options?: TopicPublishOptions): Promise<void>;
  /**
   * Subscribe to a topic.
   */
  subscribe(name: string, callback: SubscribeCallback, _options?: TopicSubscribeOptions): Promise<UnSubscribeFn>;
  /**
   * Unsubscribe from a topic.
   */
  unsubscribe(name: string, callback?: SubscribeCallback): Promise<void>;
}
//#endregion
//#region ../../src/topic/redis/index.d.ts
/**
 * Plugin for Alepha Topic that provides Redis pub/sub capabilities.
 *
 * @see {@link RedisTopicProvider}
 * @module alepha.topic.redis
 */
declare const AlephaTopicRedis: import("alepha").Service<import("alepha").Module>;
//#endregion
export { AlephaTopicRedis, RedisTopicOptions, RedisTopicProvider, redisTopicOptions };
//# sourceMappingURL=index.d.ts.map