import { Router } from "express"; import { describeProject, type PlatformSource, type ScanOptions, type Evaluate } from "@sapiom/mcp/map"; import type { ProjectMapResponse } from "../shared/project-map.js"; export interface ProjectMapProject { projectId: string; displayName: string; /** Active root bindings that are also open workspace scopes. */ roots: readonly string[]; } export interface ProjectMapRouterOptions { resolveProject: (projectId: string) => Promise; /** null: signed out. Read per request so a sign-in takes effect without a restart. */ platform: () => PlatformSource | null; /** Jev for the signed-in account, or null signed out: labels then read "unavailable". */ evaluate?: () => Evaluate | null; /** Called with every root the route has drawn, so the server can watch it. */ onRootRead?: (projectId: string, root: string) => void; /** Test seam; defaults to the real scan. */ describe?: (options: ScanOptions) => ReturnType; } /** Jev through the key the harness currently holds. */ export declare function evaluateForKey(apiKey: string | null, host: string): Evaluate | null; export declare function platformForKey(apiKey: string | null, host: string): PlatformSource | null; /** The refs the header offers: the current branch and every local branch. Null outside a repo. */ export declare function gitRefs(root: string): Promise; /** * The project's active root bindings that are open as workspace scopes. Folders are compared by * real path: macOS temp folders sit behind /var -> /private/var and Windows spells one folder * several ways, so the same folder can differ as text between the binding and the scope. */ export declare function openProjectRoots(bindings: ReadonlyArray<{ status: string; localRootRef: string; }>, scopes: ReadonlyArray<{ cwd: string; }>): Promise; /** Mounted beneath the boot-token-protected `/api` boundary. */ export declare function createProjectMapRouter(options: ProjectMapRouterOptions): Router; //# sourceMappingURL=project-map.d.ts.map