import type { ProjectInfo } from '../types.js';
export interface DashboardServerOptions {
    port: number;
    projectRoots: string[];
    openBrowser: boolean;
    hooksEnabled?: boolean;
}
export interface DashboardServerInstance {
    url: string;
    port: number;
    stop: () => Promise<void>;
}
export declare class DashboardServer {
    private options;
    private server;
    private router;
    private sseManager;
    private hookEventStore;
    private hookEventRouter;
    private pidFilePath;
    private projects;
    constructor(options: DashboardServerOptions);
    /** Add a new project to the dashboard */
    addProject(projectRoot: string): ProjectInfo;
    /** Remove a project from the dashboard */
    removeProject(projectId: string): void;
    private getProjectInfo;
    start(): Promise<DashboardServerInstance>;
    stop(): Promise<void>;
    private handleRequest;
    /** Resolve project from query string ?project=<id> */
    private resolveProject;
    private registerRoutes;
    private serveStaticFile;
    private registerDefaultHookHandlers;
    private registerHookRoutes;
    private mapEventToCategory;
}
/** Scan repositories/ directory for cloned repos, with single-repo git fallback */
export declare function scanRepositories(projectRoot: string): Array<{
    name: string;
    org: string;
    path: string;
    remote?: string;
    branch?: string;
    hasSpecweave: boolean;
    isUmbrellaManaged?: boolean;
    isCurrent?: boolean;
    lastModified?: string;
}>;
//# sourceMappingURL=dashboard-server.d.ts.map