import type { ProjectIndexServerActivity, ProjectIndexServerHealth } from './project-server-protocol.js'; export declare const CONNECT_ATTEMPT_TIMEOUT_MS = 750; export declare const SERVER_START_TIMEOUT_MS = 10000; export declare const SERVER_CONTROL_TIMEOUT_MS = 5000; export declare const SERVER_HEALTH_TIMEOUT_MS = 3000; export declare const SERVER_HEARTBEAT_INTERVAL_MS = 10000; export declare class StaleProjectIndexServerError extends Error { readonly pid: number; readonly name = "StaleProjectIndexServerError"; constructor(message: string, pid: number); } export interface PendingRequest { resolve(value: unknown): void; reject(error: unknown): void; timer: ReturnType; signal?: AbortSignal | undefined; onAbort?: (() => void) | undefined; onProgress?: ((current: number, total: number) => void) | undefined; } export interface ProjectServerCallOptions { timeoutMs: number; signal?: AbortSignal | undefined; onProgress?: ((current: number, total: number) => void) | undefined; } export interface ProjectIndexServerShutdownResult { stopped: boolean; pid?: number | undefined; reason?: string | undefined; } export type ProjectIndexServerConnectionStatus = 'unavailable' | 'offline' | 'connecting' | 'connected' | 'degraded' | 'unresponsive' | 'error' | 'stopping'; export interface ProjectIndexServerClientHealth { status: 'healthy' | 'degraded' | 'unresponsive'; checkedAt: number; lastHealthyAt: number | null; latencyMs: number | null; missedHeartbeats: number; server?: ProjectIndexServerHealth | undefined; } export interface ProjectIndexServerConnectionState { status: ProjectIndexServerConnectionStatus; connected: boolean; projectRoot?: string | undefined; indexDir?: string | undefined; endpoint?: string | undefined; pid?: number | undefined; lastError?: string | undefined; activity?: ProjectIndexServerActivity | undefined; health?: ProjectIndexServerClientHealth | undefined; } type ProjectIndexServerConnectionListener = (state: ProjectIndexServerConnectionState) => void; export declare const connectionStates: Map; export declare let latestConnectionState: ProjectIndexServerConnectionState; export declare function setLatestConnectionState(state: ProjectIndexServerConnectionState): void; export type ProjectIndexDaemonAvailability = { readonly kind: 'available'; readonly url: URL; } | { readonly kind: 'inline-requested'; } | { readonly kind: 'missing-build'; } | { readonly kind: 'endpoint-invalid'; readonly endpoint: string; readonly byteLength: number; readonly maxBytes: number; }; export declare function resolveProjectIndexDaemonAvailability(projectRoot?: string, indexDir?: string): ProjectIndexDaemonAvailability; export declare function resolveProjectServerUrl(): URL | null; export declare function projectIndexServerExpectedBuildId(): string | null; export declare function isProjectIndexServerAvailable(): boolean; export declare function publishConnectionState(endpoint: string, state: ProjectIndexServerConnectionState): void; export declare function getProjectIndexServerConnectionState(projectRoot?: string, indexDir?: string): ProjectIndexServerConnectionState; export declare function onProjectIndexServerConnectionStateChange(listener: ProjectIndexServerConnectionListener): () => void; export declare function remoteError(message: string, name?: string): Error; export declare function isProjectIndexServerHealth(value: unknown): value is ProjectIndexServerHealth; export declare function delay(ms: number): Promise; export declare function cancellationError(signal: AbortSignal): Error; export {}; //# sourceMappingURL=project-server-client-state.d.ts.map