export declare function monotonicNow(): number; export type EnforcerRunOutcome = 'ok' | 'error'; export type EnforcerFailureReason = 'adapter-error' | 'timeout' | 'no-adapter'; export interface EnforcerMetricDescriptor { readonly name: string; readonly kind: 'histogram' | 'counter'; readonly unit: string; readonly description: string; } export declare const ENFORCER_METRICS: { readonly duration: { readonly name: "enforcer.run.duration"; readonly kind: "histogram"; readonly unit: "ms"; readonly description: "Wall-clock duration of a single enforcer adapter run."; }; readonly failures: { readonly name: "enforcer.run.failures"; readonly kind: "counter"; readonly unit: "{failure}"; readonly description: "Enforcer runs that produced no usable result (error, timeout or missing adapter)."; }; readonly timeouts: { readonly name: "enforcer.run.timeouts"; readonly kind: "counter"; readonly unit: "{timeout}"; readonly description: "Enforcer runs that exceeded their time budget."; }; readonly violations: { readonly name: "enforcer.run.violations"; readonly kind: "counter"; readonly unit: "{violation}"; readonly description: "Number of violations returned by an enforcer run."; }; }; export interface EnforcerRunAttributes { readonly tool: string; readonly runtime?: string; } export interface EnforcerDurationSample extends EnforcerRunAttributes { readonly durationMs: number; readonly outcome: EnforcerRunOutcome; } export interface EnforcerFailureSample extends EnforcerRunAttributes { readonly reason: EnforcerFailureReason; } export type EnforcerTimeoutSample = EnforcerRunAttributes; export interface EnforcerViolationSample extends EnforcerRunAttributes { readonly count: number; } export interface IEnforcerMetrics { recordDuration(sample: EnforcerDurationSample): void; recordFailure(sample: EnforcerFailureSample): void; recordTimeout(sample: EnforcerTimeoutSample): void; recordViolations(sample: EnforcerViolationSample): void; } export declare const NoopEnforcerMetrics: IEnforcerMetrics; export declare class RecordingEnforcerMetrics implements IEnforcerMetrics { readonly durations: EnforcerDurationSample[]; readonly failures: EnforcerFailureSample[]; readonly timeouts: EnforcerTimeoutSample[]; readonly violations: EnforcerViolationSample[]; recordDuration(sample: EnforcerDurationSample): void; recordFailure(sample: EnforcerFailureSample): void; recordTimeout(sample: EnforcerTimeoutSample): void; recordViolations(sample: EnforcerViolationSample): void; get failureCount(): number; get timeoutCount(): number; get totalViolations(): number; reset(): void; } export declare function isTimeoutError(err: unknown): boolean;