import { SQS, SQSClientConfig, SendMessageResult, SendMessageRequest, SendMessageBatchResult, SendMessageBatchRequest } from "@aws-sdk/client-sqs";
import { ISQSMessage, ISQSMessageOptions, Logger, Topic } from "../types";
export declare class SQSProducer {
    private readonly logger;
    private readonly sqs;
    constructor(logger: Logger, config: SQSClientConfig);
    get client(): SQS;
    send: (queueUrl: string, message: ISQSMessage, messageOptions: ISQSMessageOptions) => Promise<SendMessageResult>;
    getSendMessageRequestInput(queueUrl: string, message: ISQSMessage, messageOptions: ISQSMessageOptions): SendMessageRequest;
    sendBatch: (queueUrl: string, messages: ISQSMessage[]) => Promise<SendMessageBatchResult>;
    getBatchMessageRequest(queueUrl: string, messages: ISQSMessage[]): SendMessageBatchRequest;
    createQueue: (queueName: string, attributes: Record<string, string>, tags?: Record<string, string>) => Promise<string | undefined>;
    createQueueFromTopic(params: {
        queueName: string;
        topic: Topic;
        isDLQ: boolean;
        queueArn: string;
        dlqArn?: string;
    }): Promise<void>;
    getQueueAttributes: (queueUrl: string, attributes: string[]) => Promise<Record<string, string> | undefined>;
    deleteQueue: (queueUrl: string) => Promise<boolean>;
    deleteMessage: (queueUrl: string, receiptHandle: string) => Promise<boolean>;
    deleteMessages: (queueUrl: string, receiptHandles: string[]) => Promise<boolean>;
    getQueueUrl: (queueName: string) => Promise<string | undefined>;
    setQueueAttributes: (queueUrl: string, attributes: Record<string, string>) => Promise<void>;
    tagQueue: (queueUrl: string, tags: Record<string, string>) => Promise<void>;
    isFifoQueue: (queueUrl: string) => boolean;
    private getMessageAttributes;
}
