import { AwsCredentialConfig } from './clients/aws'; import { SNSClient } from './clients/sns'; import { SQSClient, SQSMessage, SQSQueueConfig } from './clients/sqs'; import { Logger } from './logger'; export interface SNSSQSSubscriberConfig { awsCredentials?: AwsCredentialConfig; topicName: string | string[]; snsClient: SNSClient; sqsClient?: SQSClient; sqsQueueName?: string; sqsQueueConfig?: SQSQueueConfig; baseRetryIntervalSec?: number; maxRetryIntervalSec?: number; log?: Logger; } export declare abstract class SNSSQSSubscriber { private subscribed; private readonly topicNames; private readonly snsClient; private readonly sqsClient; private readonly baseRetryIntervalSec; private readonly maxRetryIntervalSec; protected readonly log: Logger; constructor(config: SNSSQSSubscriberConfig); protected getNext(): Promise; protected ensureSubscribed(): Promise; protected getSqsClient(): SQSClient; protected getSnsClient(): SNSClient; backoff(message: SQSMessage): Promise; delay(message: SQSMessage, delaySecs: number): Promise; subscribeQueueToTopic(): Promise; isReady(): boolean; private getReceiveCount; }