import { AccessKey, ARN, ChannelDeliveryPolicy, DeliveryPolicy, EventItem, MessageAttributes, MessageStructure, SubscriptionAttributes, SupportedProtocol, TopicAttributes, TopicTag } from '../../../client'; import { Publish } from '../model/publish'; import { Queue } from '../model/queue'; import { Subscription } from '../model/subscription'; import { SubscriptionVerificationToken } from '../model/subscription-verification-token'; import { Topic } from '../model/topic'; import { User } from '../model/user'; interface StorageAdapter { getDBTableName(tableName: string): string; createUser(organizationId: string): Promise; accessKey(accessKey: string, secretAccessKey: string, userId: string): Promise; updateAccessKey(accessKey: AccessKey): Promise; findAccessKeys(where: Record, skip?: number, limit?: number): Promise>; findUsers(where: Record, skip?: number, limit?: number): Promise>; addEventItem(queue: Queue, item: EventItem): Promise; findByIdForQueue(queue: Queue, id: string): Promise; findByDeduplicationIdForQueue(queue: Queue, id: string): Promise; findById(id: string): Promise; findEventsToProcess(time: Date, limit: number): Promise>; updateEvent(id: string, data: Record, increment?: Record): Promise; getQueues(queueARNPrefix?: ARN): Promise>; createQueue(user: User, queueName: string, region: string, attributes: Record, tag: Record): Promise; getQueue(queueName: ARN): Promise; deleteQueue(queue: Queue): Promise; createTopic(name: string, displayName: string, region: string, deliveryPolicy: DeliveryPolicy, user: User, attributes: TopicAttributes, tags: TopicTag): Promise; findTopicARN(topicARN: ARN): Promise; findTopics(where: Record, skip?: number, limit?: number): Promise>; totalTopics(where: { [p: string]: unknown; }): Promise; deleteTopic(topic: Topic): Promise; removeSubscriptions(subscriptions: Array): Promise; updateTopicAttributes(topic: Topic): Promise; createSubscription(user: User, topic: Topic, protocol: SupportedProtocol, endPoint: string, Attributes: SubscriptionAttributes, deliveryPolicy: ChannelDeliveryPolicy, confirmed: boolean): Promise; totalSubscriptions(where: Record): Promise; findSubscriptions(where: Record, skip?: number, limit?: number): Promise>; createSubscriptionVerificationToken(subscription: Subscription, token: string): Promise; findSubscriptionVerificationTokenByToken(token: unknown): Promise; confirmSubscription(subscription: Subscription): Promise; markPublished(publish: Publish): Promise; createPublish(topicArn: ARN, targetArn: ARN, Message: string, PhoneNumber: string, Subject: string, messageAttributes: MessageAttributes, messageStructure: string, MessageStructureFinal: MessageStructure, status: string): Promise; findPublishes(where: Record, skip?: number, limit?: number): Promise>; } export type { StorageAdapter };