import type { Context } from "../context.js"; import { Resource } from "../resource.js"; import { CloudflareApi, type CloudflareApiOptions } from "./api.js"; /** * Settings for a Cloudflare Queue */ export interface QueueSettings { /** * Delay in seconds before message delivery * Queue will not deliver messages until this time has elapsed */ deliveryDelay?: number; /** * Whether delivery is paused * If true, the queue will not deliver messages to consumers */ deliveryPaused?: boolean; /** * Period in seconds to retain messages * Messages will be automatically deleted after this time */ messageRetentionPeriod?: number; } /** * Properties for creating or updating a Cloudflare Queue */ export interface QueueProps extends CloudflareApiOptions { /** * Name of the queue * Required during creation * Cannot be changed after creation * * @default id */ name?: string; /** * Settings for the queue * These can be updated after queue creation */ settings?: QueueSettings; /** * Whether to delete the queue. * If set to false, the queue will remain but the resource will be removed from state * * @default true */ delete?: boolean; } export declare function isQueue(eventSource: any): eventSource is Queue; /** * Output returned after Cloudflare Queue creation/update */ export interface Queue
extends Resource<"cloudflare::Queue">, QueueProps { /** * Type identifier for Cloudflare Queue */ type: "queue"; /** * The unique ID of the queue */ id: string; /** * The name of the queue */ name: string; /** * Time when the queue was created */ createdOn: string; /** * Modified timestamp */ modifiedOn: string; /** * Phantom property to allow type inference */ Body: Body; Batch: MessageBatch; } interface CloudflareQueueResponse { result: { queue_id?: string; queue_name: string; created_on?: string; modified_on?: string; settings?: { delivery_delay?: number; delivery_paused?: boolean; message_retention_period?: number; }; }; success: boolean; errors: Array<{ code: number; message: string; }>; messages: string[]; } /** * Creates and manages Cloudflare Queues. * * Queues provide a managed queue system for reliable message delivery * between workers and other systems. * * @example * // Create a basic queue with default settings * const basicQueue = await Queue("my-app-queue", { * name: "my-app-queue" * }); * * @example * // Create a queue with custom settings * const customQueue = await Queue("delayed-queue", { * name: "delayed-queue", * settings: { * deliveryDelay: 30, // 30 second delay before message delivery * messageRetentionPeriod: 86400 // Store messages for 1 day * } * }); * * @example * // Create a paused queue for later activation * const pausedQueue = await Queue("paused-queue", { * name: "paused-queue", * settings: { * deliveryPaused: true * } * }); * * @see https://developers.cloudflare.com/queues/ */ export declare const Queue: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | (