import { IHeartbeatPayload, IQueueParams, IQueueParsedParams, IQueueProperties, IRedisSMQParsedConfig } from '../../index.js';
import { EMessageDeadLetterCause, EMessageUnacknowledgementCause } from '../../consumer/index.js';
import { IQueueStateTransition } from '../../queue-state-manager/index.js';
export type TConfigurationEvent = {
    'configuration.updated': (config: IRedisSMQParsedConfig, version: number) => void;
};
export type TConsumerHeartbeatEvent = {
    'consumerHeartbeat.heartbeat': (consumerId: string, timestamp: number, heartbeatPayload: IHeartbeatPayload) => void;
    'consumerHeartbeat.error': (err: Error, consumerId: string) => void;
};
export type TConsumerConsumeMessageEvent = {
    'consumer.consumeMessage.messageAcknowledged': (messageId: string, queue: IQueueParsedParams, messageHandlerId: string, consumerId: string) => void;
    'consumer.consumeMessage.messageUnacknowledged': (messageId: string, queue: IQueueParsedParams, messageHandlerId: string, consumerId: string, unacknowledgmentCause: EMessageUnacknowledgementCause) => void;
    'consumer.consumeMessage.messageDeadLettered': (messageId: string, queue: IQueueParsedParams, messageHandlerId: string, consumerId: string, deadLetterCause: EMessageDeadLetterCause) => void;
    'consumer.consumeMessage.messageRequeued': (messageId: string, queue: IQueueParsedParams, messageHandlerId: string, consumerId: string) => void;
    'consumer.consumeMessage.messageDelayed': (messageId: string, queue: IQueueParsedParams, messageHandlerId: string, consumerId: string) => void;
    'consumer.consumeMessage.next': () => void;
    'consumer.consumeMessage.error': (err: Error, consumerId: string, queue: IQueueParsedParams) => void;
};
export type TConsumerDequeueMessageEvent = {
    'consumer.dequeueMessage.messageReceived': (messageId: string, queue: IQueueParsedParams, consumerId: string) => void;
    'consumer.dequeueMessage.nextMessage': () => void;
    'consumer.dequeueMessage.error': (err: Error, consumerId: string, queue: IQueueParsedParams) => void;
};
export type TConsumerMessageHandlerEvent = {
    'consumer.messageHandler.error': (err: Error, consumerId: string, queue: IQueueParsedParams) => void;
};
export type TConsumerMessageHandlerRunnerEvent = {
    'consumer.messageHandlerRunner.error': (err: Error, consumerId: string) => void;
};
export type TConsumerEvent = {
    'consumer.up': (consumerId: string) => void;
    'consumer.goingDown': (consumerId: string) => void;
    'consumer.down': (consumerId: string) => void;
    'consumer.goingUp': (consumerId: string) => void;
    'consumer.error': (err: Error, consumerId: string) => void;
};
export type TProducerEvent = {
    'producer.messagePublished': (messageId: string, queue: IQueueParsedParams, producerId: string) => void;
    'producer.up': (producerId: string) => void;
    'producer.goingDown': (producerId: string) => void;
    'producer.down': (producerId: string) => void;
    'producer.goingUp': (producerId: string) => void;
    'producer.error': (err: Error, producerId: string) => void;
};
export type TQueueEvent = {
    'queue.consumerGroupCreated': (queue: IQueueParams, groupId: string) => void;
    'queue.consumerGroupDeleted': (queue: IQueueParams, groupId: string) => void;
    'queue.queueCreated': (queue: IQueueParams, properties: IQueueProperties) => void;
    'queue.queueDeleted': (queue: IQueueParams) => void;
    'queue.stateChanged': (queue: IQueueParams, transition: IQueueStateTransition) => void;
};
export type TEventBusEvent = {
    error: (err: Error) => void;
};
export type TRedisSMQEvent = TEventBusEvent & TConfigurationEvent & TConsumerEvent & TConsumerHeartbeatEvent & TConsumerMessageHandlerRunnerEvent & TConsumerMessageHandlerEvent & TConsumerConsumeMessageEvent & TConsumerDequeueMessageEvent & TProducerEvent & TQueueEvent;
//# sourceMappingURL=event.d.ts.map