import { Message } from "@aws-sdk/client-sqs";
import { ConsumeOptions, EmitBatchPayload, EmitPayload, EventListener, IBatchEmitOptions, IBatchMessage, IEmitOptions, IEmitter, IEmitterOptions, IFailedConsumerMessages, IFailedEmitBatchMessage, IMessage, ProcessMessageOptions, Queue, Topic } from "../types";
export declare class Emitter implements IEmitter {
    private localEmitter;
    private emitter;
    private options;
    private logger;
    constructor(options: IEmitterOptions);
    bootstrap(topics?: Topic[]): Promise<void>;
    emit(eventName: string, options?: IEmitOptions, payload?: any): Promise<void>;
    emitBatch(eventName: string, messages: IBatchMessage[], options?: IBatchEmitOptions): Promise<IFailedEmitBatchMessage[]>;
    emitLocal(eventName: string, ...args: any[]): boolean;
    on(eventName: string, listener: EventListener<any>, options?: ConsumeOptions): void;
    removeListener(eventName: string, listener: EventListener<any>): void;
    removeAllListener(): void;
    processMessage(message: Message, options?: ProcessMessageOptions): Promise<void>;
    processMessages(messages: Message[], options?: ProcessMessageOptions): Promise<IFailedConsumerMessages>;
    startConsumers(): Promise<void>;
    getTopicReference(topic: Topic): string;
    getInternalTopicName(topic: Topic): string;
    getQueues(): Queue[];
    getQueueReference(topic: Topic): string;
    getInternalQueueName(topic: Topic): string;
    getEmitPayload(eventName: string, options?: IEmitOptions, ...args: any[]): EmitPayload;
    getBatchEmitPayload(eventName: string, messages: IBatchMessage[], options?: IBatchEmitOptions): EmitBatchPayload;
    parseDataFromMessage<T>(receivedMessage: Message): IMessage<T>;
}
