import { BatchResultErrorEntry, DeleteMessageCommandInput, MessageAttributeValue, ReceiveMessageCommandOutput, SendMessageBatchRequestEntry, SendMessageBatchResultEntry, SQSClientConfig } from '@aws-sdk/client-sqs';
import { Logger } from 'winston';
export interface ISQS {
    clientConfig?: SQSClientConfig;
    logger?: Logger;
}
export type TGetQueueUrl = (queueName: string) => Promise<string | undefined>;
export type TSendMessage = (queueUrl: string, message: string, fifoSettings?: {
    MessageDeduplicationId?: string;
    MessageGroupId: string;
}, messageAttributes?: Record<string, MessageAttributeValue>, messageDelay?: number) => Promise<string | undefined>;
export type TGetQueueItems = (queueUrl: string, maxNumberOfMessages?: number) => Promise<ReceiveMessageCommandOutput | undefined>;
export type TDeleteQueueItem = (queueUrl: string, receiptHandle: DeleteMessageCommandInput['ReceiptHandle']) => Promise<ReceiveMessageCommandOutput | undefined>;
export type TSendBatchMessages = (queueUrl: string, queueEntries: SendMessageBatchRequestEntry[]) => Promise<{
    failed: BatchResultErrorEntry[] | undefined;
    successful: SendMessageBatchResultEntry[] | undefined;
}>;
export interface ISQSInstance {
    deleteQueueItem: TDeleteQueueItem;
    getQueueItems: TGetQueueItems;
    getQueueUrl: TGetQueueUrl;
    sendBatchMessages: TSendBatchMessages;
    sendMessage: TSendMessage;
}
declare const sqs: (userConfig: ISQS) => ISQSInstance;
export default sqs;
