import { ICallback, ILogger, IRedisClient, Runnable } from 'redis-smq-common';
import { TProducerEvent } from '../../common/index.js';
import { RedisClient } from '../../common/redis-client/redis-client.js';
import { EventBus } from '../../common/index.js';
import { ProducibleMessage } from '../message/index.js';
import { MessageEnvelope } from '../message/message-envelope.js';
import { IQueueParams } from '../queue/index.js';
import { QueueConsumerGroupsCache } from './queue-consumer-groups-cache.js';
export declare class Producer extends Runnable<TProducerEvent> {
    protected logger: ILogger;
    protected redisClient: RedisClient;
    protected eventBus: EventBus;
    protected queueConsumerGroupsHandler: QueueConsumerGroupsCache | null;
    constructor();
    protected getLogger(): ILogger;
    protected initQueueConsumerGroupsHandler: (cb: ICallback<void>) => void;
    protected shutDownQueueConsumerGroupsHandler: (cb: ICallback<void>) => void;
    protected goingUp(): ((cb: ICallback<void>) => void)[];
    protected up(cb: ICallback<boolean>): void;
    protected goingDown(): ((cb: ICallback<void>) => void)[];
    protected down(cb: ICallback<boolean>): void;
    protected getQueueConsumerGroupsHandler(): QueueConsumerGroupsCache;
    protected enqueue(redisClient: IRedisClient, message: MessageEnvelope, cb: ICallback<void>): void;
    protected produceMessageItem(redisClient: IRedisClient, message: MessageEnvelope, queue: IQueueParams, cb: ICallback<string>): void;
    protected produceMessage(redisClient: IRedisClient, message: ProducibleMessage, queue: IQueueParams, cb: ICallback<string[]>): void;
    produce(msg: ProducibleMessage, cb: ICallback<string[]>): void;
}
//# sourceMappingURL=producer.d.ts.map