import type { Database } from "bun:sqlite"; import type { Workspace } from "../types/workspace.js"; export interface ProjectReportsServerOptions { db?: Database; host?: string; port?: number; token?: string; trustNetwork?: boolean; } export interface ProjectReportsServer { server: Bun.Server; url: string; host: string; port: number; } export interface ProjectReportFile { name: string; href: string; kind: "html" | "markdown"; size: number; updatedAt: string; } export interface ProjectReportDate { date: string; href: string; reports: ProjectReportFile[]; } export interface ProjectReportsSummary { project: Pick; href: string; dates: ProjectReportDate[]; latestDate: string | null; reportCount: number; } export declare function serveProjectReports(options?: ProjectReportsServerOptions): Promise; export declare function isLoopbackReportsHost(host: string): boolean; /** * Index every registered project that has dated reports on this machine. * * The project list is REGISTRY truth, so it comes from the active * `resolveProjectStore()` transport — the same seam every other registry * surface uses. It is deliberately not read from `db/workspaces.ts` directly: * on a box configured for the hosted API that served a frozen on-box sqlite * snapshot, so any project created after the file went stale returned 404 and * was indistinguishable from a project that does not exist. * * The report FILES stay machine-local by design — only the box holding a * project's directory can enumerate them. * * `options.db` is an explicit local override for tests and embedded callers; * when supplied it is authoritative and no transport is resolved. */ export declare function listProjectsWithReports(options?: { db?: Database; }): Promise; //# sourceMappingURL=project-reports-server.d.ts.map