export interface LogContext { readonly id: number; readonly uuid: string; readonly retention_limit: number; } export interface LokiLogContext extends LogContext { readonly orgId: string; readonly appId: string; } interface DeviceLog { message: string; timestamp: number; isSystem: boolean; isStdErr: boolean; serviceId?: number; } export interface InternalDeviceLog extends DeviceLog { nanoTimestamp: bigint; } export interface OutputDeviceLog extends DeviceLog { createdAt: number; } export interface SupervisorLog { message: string; timestamp: number; isSystem?: boolean; isStdErr?: boolean; serviceId?: number; uuid?: string; } export interface OldSupervisorLog { message: string; timestamp: number | string; is_system?: boolean; is_stderr?: boolean; image_id?: number; } export type Subscription = (log: OutputDeviceLog) => void; export type HistoryOpts = { count: number; start: number; }; export interface DeviceLogsBackend { history(ctx: LogContext, opts: HistoryOpts): Promise; available: boolean; /** * `logs` will be mutated to empty and so must be handled synchronously */ publish(ctx: LogContext, logs: InternalDeviceLog[]): Promise; subscribe(ctx: LogContext, subscription: Subscription): void; unsubscribe(ctx: LogContext, subscription: Subscription): void; } export declare enum StreamState { Buffering = 0, Flushing = 1, Writable = 2, Saturated = 3, Closed = 4 } export {};