import type { PubSub, Subscription, Topic } from '@google-cloud/pubsub'; import type { QueueDependencies, QueueOptions } from '@message-queue-toolkit/core'; import { AbstractQueueService } from '@message-queue-toolkit/core'; import type { PubSubMessage } from '../types/MessageTypes.ts'; export declare const PUBSUB_MESSAGE_MAX_SIZE: number; export type PubSubDependencies = QueueDependencies & { pubSubClient: PubSub; }; export type PubSubTopicConfig = { name: string; options?: { messageRetentionDuration?: { seconds: number; nanos?: number; }; messageStoragePolicy?: { allowedPersistenceRegions?: string[]; }; kmsKeyName?: string; enableMessageOrdering?: boolean; }; }; export type PubSubSubscriptionConfig = { name: string; options?: { ackDeadlineSeconds?: number; retainAckedMessages?: boolean; messageRetentionDuration?: { seconds: number; nanos?: number; }; enableMessageOrdering?: boolean; deadLetterPolicy?: { deadLetterTopic: string; maxDeliveryAttempts: number; }; filter?: string; enableExactlyOnceDelivery?: boolean; }; }; export type PubSubCreationConfig = { topic: PubSubTopicConfig; subscription?: PubSubSubscriptionConfig; updateAttributesIfExists?: boolean; }; export type PubSubQueueLocatorType = { topicName: string; subscriptionName?: string; }; export declare abstract class AbstractPubSubService = QueueOptions, DependenciesType extends PubSubDependencies = PubSubDependencies, ExecutionContext = unknown, PrehandlerOutput = unknown> extends AbstractQueueService { protected readonly pubSubClient: PubSub; protected topicName: string; protected topic: Topic; protected subscriptionName?: string; protected subscription?: Subscription; constructor(dependencies: DependenciesType, options: PubSubOptionsType); init(): Promise; close(): Promise; }