export type AnalysisArtifactKind = 'directory.entries' | 'directory.structure' | 'repository.exportHistory' | 'file.referenceBase' | 'file.resolvedExports' | 'file.referenceResolvedTypes' | 'file.referenceSections'; export type AnalysisArtifactFamily = 'structure-history' | 'reference-render' | 'reference-sections' | 'type-resolution'; export type AnalysisArtifactPriority = 'bootstrap' | 'immediate' | 'background'; export interface AnalysisArtifactRequest { key: string; kind: AnalysisArtifactKind; family: AnalysisArtifactFamily; priority: AnalysisArtifactPriority; analysisScopeId?: string; targetPath?: string; dependencyHintPaths?: readonly string[]; } export interface AnalysisArtifactSubmitHooks { readFresh?: () => Promise; compute: () => Promise; } export interface AnalysisArtifactSubmitResult { value: Value; mode: 'fresh' | 'leader' | 'follower'; } export interface AnalysisArtifactSchedulerProfileHooks { onQueueDepthSample?: (options: { family: AnalysisArtifactFamily; priority: AnalysisArtifactPriority; depth: number; }) => void; onTaskComplete?: (options: { request: AnalysisArtifactRequest; mode: 'fresh' | 'leader' | 'follower'; queueWaitMs: number; runMs: number; promoted: boolean; error: boolean; }) => void; } export interface AnalysisArtifactScheduler { submit(request: AnalysisArtifactRequest, hooks: AnalysisArtifactSubmitHooks): Promise>; join(request: AnalysisArtifactRequest, hooks: Pick, 'readFresh'>): Promise | undefined>; promote(request: AnalysisArtifactRequest): void; has(requestKey: string): boolean; } export declare function createAnalysisArtifactScheduler(profileHooks?: AnalysisArtifactSchedulerProfileHooks): AnalysisArtifactScheduler; export declare function getSharedAnalysisArtifactScheduler(profileHooks?: AnalysisArtifactSchedulerProfileHooks): AnalysisArtifactScheduler; export declare function resetSharedAnalysisArtifactSchedulerForTests(): void;