import type { ReportArtifact, ReportKind, ReportRequest, ReportViewModel } from './types.js'; export interface AuthorizedReportProvider { readonly surface: 'cli' | 'rest' | 'messenger'; /** Implementations must authorize and allowlist every returned nested resource. */ collect(request: ReportRequest, limits: { maxRecords: number; }): Promise>; } export interface SafeSnapshot { /** Data must already be constructed by a per-kind allowlist. */ data: T; observedAt: Record; unavailable: string[]; stale: string[]; bounds: { shown: number; total: number; truncated: boolean; }; } export interface ReportDefinition { kind: R['kind']; maxRecords: number; validate(request: ReportRequest): request is R; resourceId(request: R): string | undefined; present(request: R, snapshot: SafeSnapshot, generatedAt: string): ReportViewModel; } export declare class ReportRegistry { #private; register(definition: ReportDefinition): this; get(kind: ReportKind): ReportDefinition; kinds(): ReportKind[]; } export declare class FleetReportService { private readonly registry; private readonly maxBytes; constructor(registry: ReportRegistry, maxBytes?: number); create(request: ReportRequest, context: { provider: AuthorizedReportProvider; generatedAt: string; }): Promise; }