import { IQueueRepository, PgmqMessage } from '../../domain/interfaces/repositories'; import { QueueMessageDto } from '../../domain/dtos'; import { PgmqAdapter } from '../adapters/pgmq.adapter'; /** * Queue Repository * Handles PGMQ queue operations using direct PostgreSQL connection */ export declare class QueueRepository implements IQueueRepository { private adapter; constructor(adapter: PgmqAdapter); /** * Reads a message from the queue (non-blocking) * @param queueName - Name of the queue * @param visibilityTimeoutSeconds - Visibility timeout in seconds * @returns PGMQ message or null if queue is empty */ readMessage(queueName: string, visibilityTimeoutSeconds: number): Promise; /** * Reads a message from the queue with blocking poll (event-driven) * Note: Not implemented with direct PG adapter - use readMessage instead * @param queueName - Name of the queue * @param visibilityTimeoutSeconds - Visibility timeout in seconds * @param pollTimeoutSeconds - How long to wait for a message (default: 5s) * @param pollIntervalMs - Internal polling interval (default: 250ms) * @returns PGMQ message or null if timeout reached */ readMessageWithPoll(queueName: string, visibilityTimeoutSeconds: number, _pollTimeoutSeconds?: number, _pollIntervalMs?: number): Promise; /** * Deletes a message from the queue * @param queueName - Name of the queue * @param messageId - PGMQ message ID * @returns true if deleted, false otherwise */ deleteMessage(queueName: string, messageId: number): Promise; /** * Sends a message to the queue * @param queueName - Name of the queue * @param message - Message to send * @returns PGMQ message ID */ sendMessage(queueName: string, message: QueueMessageDto): Promise; /** * Gets queue metrics * @param queueName - Name of the queue * @returns Queue metrics */ getMetrics(_queueName: string): Promise<{ queue_name: string; queue_length: number; newest_msg_age_sec: number | null; oldest_msg_age_sec: number | null; total_messages: number; }>; /** * Creates a new queue (idempotent - safe to call if queue exists) * @param queueName - Name of the queue to create * @returns true if created or already exists */ createQueue(queueName: string): Promise; /** * Sends a message to a specific CLI instance queue * @param baseQueueName - Base queue name (e.g., 'image_downloads') * @param targetInstanceId - Target CLI instance ID * @param message - Message to send * @returns PGMQ message ID */ sendMessageToInstance(baseQueueName: string, targetInstanceId: string, message: QueueMessageDto): Promise; } //# sourceMappingURL=queue.repository.d.ts.map