export interface IDockerEventActor { ID: string; Attributes?: Record; } export interface IDockerEvent { Type?: string; Action?: string; /** Raw until parsed as a container event; malformed actors must reach the validator. */ Actor?: unknown; status?: string; scope?: string; time?: number; timeNano?: number; /** The original Docker JSON integer token, retained without JS number rounding. */ timeNanoExact?: string; [key: string]: unknown; } export interface IContainerDockerEvent extends IDockerEvent { Type: 'container'; Action: string; Actor: IDockerEventActor; } export interface IContainerTimedDockerEvent extends IContainerDockerEvent { timeNanoExact: string; } /** * Return undefined for a different Docker object type. A malformed container event throws so a * missing `oom` actor cannot be mistaken for a harmless unrelated event. */ export declare const parseDockerContainerEvent: (eventArg: IDockerEvent) => IContainerDockerEvent | undefined; /** Require a lossless Docker event timestamp before comparing against a physical run. */ export declare const parseDockerTimedContainerEvent: (eventArg: IDockerEvent) => IContainerTimedDockerEvent | undefined; export interface IDockerEventObservableOptions { filters?: Record; reconnect?: boolean; } export interface IDockerEventMonitorOptions { filters?: Record; /** HTTP readiness deadline. Defaults to 30 seconds; the active stream remains idle indefinitely. */ openTimeoutMs?: number; /** Called with listeners attached before openEventMonitor resolves. */ onEvent: (event: IDockerEvent) => void; /** Called once if the verified stream ends, errors, or delivers malformed data. */ onLost: (error: Error) => void; /** Aborts a pending open or intentionally closes an active monitor. */ signal?: AbortSignal; } export interface IDockerEventMonitor { readonly status: 'connected' | 'lost' | 'closed'; /** Idempotent; closes the stream without calling onLost. */ close(): void; }