export type TelemetryCommand = 'install' | 'generate' | 'pack' | 'prompt' | 'context_pack' | 'doctor' | 'status' | 'compare'; export type TelemetryStage = 'started' | 'succeeded' | 'failed'; export type TelemetryRepoSizeBucket = '1-24' | '25-99' | '100-499' | '500-999' | '1000+'; export type TelemetryGraphSizeBucket = '1-99' | '100-499' | '500-999' | '1000-4999' | '5000+'; export type TelemetryFailureBucket = 'usage_error' | 'invalid_params' | 'missing_graph' | 'stale_graph' | 'stale_context' | 'tool_profile' | 'unsupported_corpus' | 'install_error' | 'unknown'; export type TelemetryStatusBucket = 'healthy' | 'attention_needed'; export type TelemetryAnswerabilityBucket = 'ready' | 'ready_with_caveat' | 'verify_targets' | 'insufficient'; export type TelemetryRecoveryAttemptsBucket = '0' | '1' | '2'; export type TelemetryRecoveryImprovementBucket = 'not_attempted' | 'improved' | 'unchanged'; export type TelemetryBroadSearchFallbackBucket = 'not_needed' | 'targeted_only' | 'allowed' | 'blocked'; export type TelemetryAgentTarget = 'claude' | 'cursor' | 'codex' | 'copilot' | 'gemini' | 'aider' | 'opencode' | 'windows' | 'claw' | 'droid' | 'trae' | 'trae-cn'; export interface TelemetryEventInput { command: TelemetryCommand; stage: TelemetryStage; version: string; os: NodeJS.Platform; nodeMajor: number; repoSizeBucket?: TelemetryRepoSizeBucket; graphSizeBucket?: TelemetryGraphSizeBucket; agentTarget?: TelemetryAgentTarget; spiEnabled?: boolean; failureBucket?: TelemetryFailureBucket; statusBucket?: TelemetryStatusBucket; initialAnswerabilityBucket?: TelemetryAnswerabilityBucket; recoveryAttemptsBucket?: TelemetryRecoveryAttemptsBucket; recoveryImprovementBucket?: TelemetryRecoveryImprovementBucket; finalAnswerabilityBucket?: TelemetryAnswerabilityBucket; broadSearchFallbackBucket?: TelemetryBroadSearchFallbackBucket; } export interface TelemetryOptions { configRoot?: string; cacheRoot?: string; env?: NodeJS.ProcessEnv; now?: () => number; maxEvents?: number; } export interface TelemetryStatus { enabled: boolean; reason: string; configFile: string; spoolFile: string; eventCount: number; } export declare function repoSizeBucketFromFileCount(fileCount: number): TelemetryRepoSizeBucket; export declare function graphSizeBucketFromNodeCount(nodeCount: number): TelemetryGraphSizeBucket; export declare function getTelemetryStatus(options?: TelemetryOptions): TelemetryStatus; export declare function formatTelemetryStatus(status: TelemetryStatus): string; export declare function enableTelemetry(options?: TelemetryOptions): string; export declare function disableTelemetry(options?: TelemetryOptions): string; export declare function clearTelemetry(options?: TelemetryOptions): string; export declare function recordTelemetryEvent(input: TelemetryEventInput, options?: TelemetryOptions): boolean; export declare function readTelemetryReport(options?: TelemetryOptions, spoolPaths?: string[]): string;