import { IEmitterOptions, IEmitter, Queue, Topic, IEmitOptions, EventListener, ConsumeOptions, ProcessMessageOptions, IBatchMessage, IBatchEmitOptions, IFailedEmitBatchMessage, IFailedConsumerMessages, Logger, IMessage, EmitPayload, EmitBatchPayload } from "../types";
import { Message } from "@aws-sdk/client-sqs";
export declare class SqnsEmitter implements IEmitter {
    private readonly logger;
    private snsProducer;
    private sqsProducer;
    private lambdaClient;
    private dynamoClient;
    private localEmitter;
    private options;
    private topicListeners;
    private topics;
    private queues;
    private consumersRunning;
    private outbox?;
    private totalActiveConsumers;
    private totalInflightMessages;
    constructor(logger: Logger, options: IEmitterOptions);
    private getUniqueKeyForTopicListener;
    private getTopicListeners;
    private addTopicListener;
    bootstrap(topics?: Topic[]): Promise<void>;
    private tagQueues;
    private createEventSourceMappings;
    private addDefaultTopics;
    private configureOutbox;
    private createTopic;
    private createTopics;
    private createQueue;
    private createQueues;
    private getTopicArn;
    private getQueueArn;
    private getQueueUrl;
    private subscribeToTopics;
    private getQueueName;
    private getTopicName;
    private logFailedEvent;
    private emitToTopic;
    private emitToQueue;
    getEmitPayload(eventName: string, options?: IEmitOptions, payload?: any): EmitPayload;
    emit(eventName: string, options?: IEmitOptions, payload?: any): Promise<void>;
    private internalEmit;
    private emitBatchToTopic;
    private emitBatchToQueue;
    getBatchEmitPayload(eventName: string, messages: IBatchMessage[], options?: IBatchEmitOptions): EmitBatchPayload;
    private getBatchMessagesForQueue;
    private getBatchMessagesForTopic;
    emitBatch(eventName: string, messages: IBatchMessage[], options?: IBatchEmitOptions): Promise<IFailedEmitBatchMessage[]>;
    startConsumers(): Promise<void>;
    drainConsumers(): Promise<void>;
    private stopConsumer;
    private addConsumerWorkerToQueue;
    private startConsumer;
    private handleMessageReceipt;
    removeListener(eventName: string, listener: EventListener<any>, consumeOptions?: ConsumeOptions): void;
    removeAllListener(): void;
    private getTopicFromEventNameAndConsumeOptions;
    on(eventName: string, listener: EventListener<any>, options?: ConsumeOptions): void;
    private getSeparateConsumer;
    private isConsumerFifo;
    private onMessageReceived;
    private getDeduplicationKey;
    private isMessageAlreadyProcessed;
    private handleOutboxEvent;
    parseDataFromMessage<T>(receivedMessage: Message): IMessage<T>;
    private mapMessageAttributesFromSNS;
    private deleteMessages;
    private processFifoQueueMessages;
    private processStandardQueueMessages;
    processMessages(messages: Message[], options?: ProcessMessageOptions): Promise<IFailedConsumerMessages>;
    processMessage(message: Message, options?: ProcessMessageOptions): Promise<void>;
    getTopicReference(topic: Topic): string;
    getInternalTopicName(topic: Topic): string;
    getQueues(): Queue[];
    getQueueReference(topic: Topic): string;
    getInternalQueueName(topic: Topic): string;
    private getQueueUrlFromMessage;
    private getQueueUrlFromARN;
    private getMessageIdFromMessage;
    private getQueueNameFromUrl;
    private saveEventToOutbox;
    private getOutboxTopicName;
    private getOutboxEmitOptions;
    private getApproximateReceiveCount;
}
