import { SQS } from 'aws-sdk';
import { Config } from '../config/config';
import { Logger } from '../utils/logger';
export declare class SQSService {
    private readonly config;
    private sqsClient;
    private sqsEnabled;
    private maxNumberOfMessages;
    private waitTimeSeconds;
    private queueUrlsCache;
    constructor(config: Config);
    isSQSEnabled(): boolean;
    /**
     * Initialize the SQS client
     */
    init(context: string): void;
    /**
     * Get the SQS queue URL, with caching
     */
    private getQueueUrl;
    /**
     * Push a message into the specified SQS queue
     */
    pushMessage(queueName: string, messageBody: string, childLogger: Logger, options?: {
        messageGroupId?: string;
        messageDeduplicationId?: string;
        messageAttributes?: Record<string, SQS.MessageAttributeValue>;
    }): Promise<boolean>;
    /**
     * Retrieve messages from the specified SQS queue
     */
    retrieveMessages(queueName: string, childLogger: Logger): Promise<SQS.Types.Message[]>;
    /**
     * Delete a message from the specified SQS queue after processing
     */
    deleteMessage(queueName: string, receiptHandle: string, childLogger: Logger, elapsedTimeSec?: number): Promise<boolean>;
    increaseVisibilityTimeout(queueName: string, receiptHandle: string, visibilityTimeout: number, childLogger: Logger): Promise<void>;
}
//# sourceMappingURL=sqs.service.d.ts.map