import * as AWS from 'aws-sdk'; import { Logger } from '../logger'; import { AwsCredentialConfig } from './aws'; export interface SQSClientConfig { queueName: string; awsCredentials: AwsCredentialConfig; sqsQueueConfig: SQSQueueConfig; log?: Logger; } export interface SQSQueueConfig { namePrefix: string; visibilityTimeoutSeconds: number; messageRetentionSeconds: number; pollWaitSeconds: number; region: string; endpoint?: string; timeout?: number; connectTimeout?: number; } export declare type SQSMessage = AWS.SQS.Message; export declare class SQSClient { private readonly config; private readonly awsCredsConfig; private readonly log; private readonly sqsClient; private queueName; private queueUrl; private queueArn; private awsGetQueueAttributes; private awsSetQueueAttributes; private awsChangeMessageVisibility; private awsListQueues; private awsCreateQueue; private awsReceiveMessage; private awsSendMessage; private awsDeleteMessage; private awsDeleteQueue; constructor(queueName: string, config: SQSQueueConfig, awsCredsConfig: AwsCredentialConfig, log?: Logger); private awsAttrs; private awsAttrsWithTopicWritePermissions; private getQueueAttributes; /** * Resolve true if we had to do any work. */ private verifyQueueAttributes; /** * Resolve true if we had to do any work. */ findOrCreateQueue(): Promise; isReady(): boolean; deleteQueue(): Promise; getMessage(): Promise; getMessages(maxNumberOfMessages?: number): Promise; sendMessage(message: any): Promise; setMessageVisibilitySeconds(receiptHandle: string, visibilityTimeoutSeconds: number): Promise; deleteMessage(receiptHandle: string): Promise; getOrCreateArn(): Promise; private getCallerAwsAccountId; addSendMessagesPermissions(): Promise; }