import * as _alepha_core1 from "alepha";
import * as _alepha_core0 from "alepha";
import { Alepha } from "alepha";
import { SubscribeCallback, TopicProvider, UnSubscribeFn } from "alepha/topic";
import { RedisProvider, RedisSubscriberProvider } from "alepha/redis";

//#region src/providers/RedisTopicProvider.d.ts
declare class RedisTopicProvider extends TopicProvider {
  protected readonly env: {
    REDIS_TOPIC_PREFIX: string;
  };
  protected readonly alepha: Alepha;
  protected readonly redisProvider: RedisProvider;
  protected readonly redisSubscriberProvider: RedisSubscriberProvider;
  protected readonly log: _alepha_core1.Logger;
  protected readonly start: _alepha_core1.HookDescriptor<"start">;
  prefix(queue: string): string;
  /**
   * Publish a message to a topic.
   */
  publish(topic: string, message: string): Promise<void>;
  /**
   * Subscribe to a topic.
   */
  subscribe(name: string, callback: SubscribeCallback): Promise<UnSubscribeFn>;
  /**
   * Unsubscribe from a topic.
   */
  unsubscribe(name: string, callback?: SubscribeCallback): Promise<void>;
}
//# sourceMappingURL=RedisTopicProvider.d.ts.map
//#endregion
//#region src/index.d.ts
/**
 * Plugin for Alepha Topic that provides Redis pub/sub capabilities.
 *
 * @see {@link RedisTopicProvider}
 * @module alepha.topic.redis
 */
declare const AlephaTopicRedis: _alepha_core0.Service<_alepha_core0.Module>;
//# sourceMappingURL=index.d.ts.map

//#endregion
export { AlephaTopicRedis, RedisTopicProvider };
//# sourceMappingURL=index.d.ts.map