import type { SNSClient } from '@aws-sdk/client-sns';
import type { SQSConsumerDependencies, SQSConsumerOptions, SQSCreationConfig, SQSMessage, SQSQueueLocatorType } from '@message-queue-toolkit/sqs';
import { AbstractSqsConsumer } from '@message-queue-toolkit/sqs';
import type { SNSSubscriptionOptions } from '../utils/snsSubscriber';
import type { STSClient } from '@aws-sdk/client-sts';
import type { SNSCreationConfig, SNSOptions, SNSTopicLocatorType } from './AbstractSnsService';
export type SNSSQSConsumerDependencies = SQSConsumerDependencies & {
    snsClient: SNSClient;
    stsClient: STSClient;
};
export type SNSSQSCreationConfig = SQSCreationConfig & SNSCreationConfig;
export type SNSSQSQueueLocatorType = Partial<SQSQueueLocatorType> & SNSTopicLocatorType & {
    subscriptionArn?: string;
};
export type SNSSQSConsumerOptions<MessagePayloadType extends object, ExecutionContext, PrehandlerOutput> = SQSConsumerOptions<MessagePayloadType, ExecutionContext, PrehandlerOutput, SNSSQSCreationConfig, SNSSQSQueueLocatorType> & SNSOptions & {
    subscriptionConfig?: SNSSubscriptionOptions;
};
export declare abstract class AbstractSnsSqsConsumer<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput = undefined> extends AbstractSqsConsumer<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, SNSSQSCreationConfig, SNSSQSQueueLocatorType, SNSSQSConsumerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>> {
    private readonly subscriptionConfig?;
    private readonly snsClient;
    private readonly stsClient;
    protected topicArn: string;
    protected subscriptionArn: string;
    protected constructor(dependencies: SNSSQSConsumerDependencies, options: SNSSQSConsumerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>, executionContext: ExecutionContext);
    init(): Promise<void>;
    protected resolveMessage(message: SQSMessage): import("@lokalise/node-core").Either<import("@message-queue-toolkit/core").MessageInvalidFormatError | import("@message-queue-toolkit/core").MessageValidationError, import("@message-queue-toolkit/core").ResolvedMessage>;
    protected resolveSchema(messagePayload: MessagePayloadSchemas): import("@lokalise/node-core").Either<Error, import("zod").ZodType<MessagePayloadSchemas, import("zod").ZodTypeDef, MessagePayloadSchemas>>;
}
