export type ConnectorVerdict = 'not-expected' | 'blocked-by-env-token' | 'pending' | 'expected-not-loaded' | 'ok'; /** True when the credentials file body carries a non-empty claudeAiOauth * accessToken AND the `user:mcp_servers` scope (both gates for the CLI's * account-connector fetch). Never throws. Pure. */ export declare function credsHaveConnectorScope(fileBody: string): boolean; /** Count the connected `claude.ai …` servers in `claude mcp list` output. Only * `✔ Connected` claude.ai entries count; `! Needs authentication` and non- * claude.ai servers are excluded. Pure. */ export declare function parseLoadedClaudeAiConnectors(mcpListOutput: string): number; export type SpawnAuthMode = 'keychain-writeback' | 'token-fallback' | 'none'; export interface ClassifyInput { expected: boolean; mode: SpawnAuthMode; /** Number of loaded claude.ai connectors, or null when not yet probed. */ loaded: number | null; } /** Reduce expected/mode/loaded to a single verdict. When connectors are expected * but the spawn fell back to env-token injection, the env token is the known * suppressor — `blocked-by-env-token` — regardless of a later probe. Pure. */ export declare function classifyConnectorAvailability(input: ClassifyInput): ConnectorVerdict; export interface AuditInput { configDir: string; mode: SpawnAuthMode; readCredsFile: (configDir: string) => string; runMcpList: (configDir: string) => string; log: (line: string) => void; } export interface AuditResult { expected: boolean; loaded: number; verdict: ConnectorVerdict; } /** Run the full reconciliation: read the file to decide `expected`, probe the CLI * for `loaded`, classify, and emit one `op=connector-availability` line. */ export declare function auditConnectorAvailability(input: AuditInput): AuditResult; //# sourceMappingURL=connector-availability.d.ts.map