import type { Task, Message, TaskStatusUpdateEvent, TaskArtifactUpdateEvent } from "@a2a-js/sdk"; /** * Configuration for AMQP connection and event publishing */ export interface AMQPConfig { /** * AMQP broker URL (e.g., 'amqp://localhost' or 'amqps://user:pass@host:5672/vhost') */ url: string; /** * Exchange name for publishing events * @default 'a2a.events' */ exchange?: string; /** * Exchange type for event publishing * @default 'topic' */ exchangeType?: 'topic' | 'direct' | 'fanout' | 'headers'; /** * LavinMQ stream configuration for event storage */ stream?: { /** * Maximum age of messages in the stream (e.g., '7d', '24h', '60m') * @default '7d' */ maxAge?: string; /** * Maximum size of the stream in bytes */ maxLengthBytes?: number; /** * Stream name pattern. Can include placeholders like {contextId}, {taskId} * @default 'a2a.stream' */ name?: string; }; /** * Connection options */ connection?: { /** * Heartbeat interval in seconds * @default 60 */ heartbeat?: number; /** * Reconnection delay in milliseconds * @default 5000 */ reconnectDelay?: number; /** * Maximum number of reconnection attempts * @default 10 */ maxReconnectAttempts?: number; }; /** * Logger instance for debugging and monitoring * @default ConsoleLogger */ logger?: Logger; } /** * Union type of all A2A events that can be published */ export type A2AEvent = Task | Message | TaskStatusUpdateEvent | TaskArtifactUpdateEvent; /** * Event metadata attached to AMQP messages */ export interface EventMetadata { /** * Task ID this event belongs to */ taskId: string; /** * Context ID for grouping related tasks */ contextId: string; /** * Event kind/type */ kind: string; /** * Timestamp when event was published */ timestamp: string; /** * Optional sequence number for ordering */ sequence?: number; } /** * AMQP message wrapper containing event and metadata */ export interface AMQPEventMessage { /** * The A2A event payload */ event: A2AEvent; /** * Metadata for routing and filtering */ metadata: EventMetadata; } /** * Options for publishing events to AMQP */ export interface PublishOptions { /** * Override default routing key */ routingKey?: string; /** * Additional headers to attach to the message */ headers?: Record; /** * Override persistent flag for this message */ persistent?: boolean; /** * Priority (0-9, higher is more important) */ priority?: number; } /** * Options for consuming events from AMQP streams */ export interface ConsumeOptions { /** * Filter events by task ID */ taskId?: string; /** * Filter events by context ID */ contextId?: string; /** * Start reading from specific offset * - 'first': Read from beginning * - 'last': Read from end (only new messages) * - 'next': Read from next available message * - number: Read from specific offset * @default 'first' */ offset?: 'first' | 'last' | 'next' | number; /** * Maximum number of messages to fetch */ limit?: number; } /** * Result of consuming events from stream */ export interface ConsumeResult { /** * Array of events in order */ events: A2AEvent[]; /** * Last offset consumed */ lastOffset: number; /** * Whether there are more events available */ hasMore: boolean; } /** * Logger interface for customizable logging * Users can provide their own implementation or use the default console logger */ export interface Logger { debug(message: string, ...args: any[]): void; info(message: string, ...args: any[]): void; warn(message: string, ...args: any[]): void; error(message: string, ...args: any[]): void; } /** * Default console-based logger implementation */ export declare class ConsoleLogger implements Logger { private prefix; constructor(prefix?: string); debug(message: string, ...args: any[]): void; info(message: string, ...args: any[]): void; warn(message: string, ...args: any[]): void; error(message: string, ...args: any[]): void; } /** * Silent logger that does nothing (useful for testing or quiet mode) */ export declare class SilentLogger implements Logger { debug(): void; info(): void; warn(): void; error(): void; } //# sourceMappingURL=types.d.ts.map