export type DesktopProxyStatus = 'fcd_gateway' | 'proxied' | 'direct' | 'reference' | 'unknown'; export declare function isReferenceConfigSource(source: string): boolean; export declare const FCD_GATEWAY_SERVER_NAMES: Set; export declare const FCD_HOOK_MARKER = "--fcd-managed true"; export declare const FCD_HOOK_TAG = "fullcourtdefense"; export interface ClientCoverageRow { client: string; clientKey: string; configPath: string; configPresent: boolean; mcpServerCount: number; mcpGatewayInstalled: boolean; cursorHooksInstalled: boolean; cursorHookEvents: string[]; cursorHookShadow: boolean; /** False when only leftover config exists — the app binary is not on disk. */ appInstalled: boolean; } export interface ProxyClassifiableServer { serverName: string; command?: string; args?: string[]; url?: string; source: string; configPath: string; } export declare function isFcdGatewayServer(server: ProxyClassifiableServer): boolean; export declare function extractGatewayDownstream(server: ProxyClassifiableServer): { command?: string; args?: string[]; url?: string; label?: string; } | null; /** Per-client downstream targets wrapped by FCD gateway entries in the same config file. */ export declare function buildGatewayWrapIndex(servers: ProxyClassifiableServer[]): Map>; export declare function classifyProxyStatus(server: ProxyClassifiableServer, wrapsByConfig: Map>): DesktopProxyStatus; export declare function scanCursorHooks(projectPath?: string): { installed: boolean; events: string[]; shadow: boolean; }; export declare function clientKeyFromSource(source: string): string; export declare function buildClientCoverage(scanned: Array<{ path: string; source: string; }>, servers: ProxyClassifiableServer[], cwd: string): ClientCoverageRow[];