import type { ReadonlySignal } from '@nonoun/native-core'; import type { Command, CommandSource } from './types.ts'; export interface LogEntry { readonly id: string; readonly timestamp: number; readonly category: 'command' | 'plan' | 'patch' | 'overlay' | 'focus' | 'error'; readonly source: CommandSource; readonly summary: string; readonly data?: unknown; readonly planId?: string; readonly commandId?: string; readonly duration?: number; } export interface LogFilter { readonly category?: LogEntry['category']; readonly source?: CommandSource; readonly planId?: string; readonly since?: number; readonly limit?: number; } export declare class EventLog { #private; readonly entries: ReadonlySignal; readonly size: ReadonlySignal; log(entry: Omit): LogEntry; query(filter: LogFilter): readonly LogEntry[]; clear(): void; setMaxSize(n: number): void; logCommand(command: Command): LogEntry; logPlan(planId: string, action: 'execute' | 'teardown' | 'patch', source: CommandSource, data?: unknown): LogEntry; logError(error: Error, context?: { readonly planId?: string; readonly commandId?: string; }): LogEntry; } export declare function createEventLog(maxSize?: number): EventLog; export interface PerfSample { readonly label: string; readonly duration: number; readonly timestamp: number; } export declare class PerfMetrics { #private; readonly samples: ReadonlySignal; measure(label: string, fn: () => T): T; measureAsync(label: string, fn: () => Promise): Promise; getSummary(label: string): { count: number; min: number; max: number; avg: number; p95: number; } | null; clear(): void; setMaxSamples(n: number): void; } export declare function createPerfMetrics(maxSamples?: number): PerfMetrics; //# sourceMappingURL=observability.d.ts.map