import type { IndexingDiagnostic, IndexingOutcomeStatus, IndexingReasonCode } from '../../contracts/indexing.js'; import type { ExtractionEdge, ExtractionNode } from '../../contracts/types.js'; import { type CapabilityRegistry } from '../../infrastructure/capabilities.js'; import { type FileTypeValue } from '../detect.js'; import type { ExtractionStageObserver } from './pipeline.js'; export interface ExtractionFragment { nodes: ExtractionNode[]; edges: ExtractionEdge[]; diagnostics?: IndexingDiagnostic[]; } export interface ExtractionFileOutcome { filePath: string; status: Extract; reason: Extract; capability: string | null; diagnostics?: IndexingDiagnostic[]; } export interface ExtractionDispatchResult { fragment: ExtractionFragment; outcome: ExtractionFileOutcome; } export interface ExtractionCapabilitySelection { sourceFileType: FileTypeValue | null; capability: ReturnType; } export interface StagedExtractionFragment { fragment: ExtractionFragment; augmentFramework: () => ExtractionFragment; } export type ExtractorHandlerOutput = ExtractionFragment | StagedExtractionFragment; export type ExtractorHandler = (filePath: string, allowedTargets: ReadonlySet) => ExtractionFragment; export type PipelineExtractorHandler = (filePath: string, allowedTargets: ReadonlySet) => ExtractorHandlerOutput; export type ExtractorHandlerMap = Readonly>; export type PipelineExtractorHandlerMap = Readonly>; export interface SingleFileExtractionDependencies { registry?: CapabilityRegistry; readCached?: (filePath: string) => ExtractionFragment | null | undefined; writeCached?: (filePath: string, extraction: ExtractionFragment) => void; classifySourceFile?: (filePath: string) => FileTypeValue | null; onOutcome?: (outcome: ExtractionFileOutcome) => void; onStageDiagnostic?: ExtractionStageObserver; recoverFailures?: boolean; } export declare const selectExtractionCapability: (filePath: string, dependencies?: Pick) => ExtractionCapabilitySelection; export declare function dispatchSingleFileExtractionWithOutcome(filePath: string, allowedTargets: ReadonlySet, handlers: PipelineExtractorHandlerMap, dependencies?: SingleFileExtractionDependencies): ExtractionDispatchResult; export declare function dispatchSingleFileExtraction(filePath: string, allowedTargets: ReadonlySet, handlers: PipelineExtractorHandlerMap, dependencies?: SingleFileExtractionDependencies): ExtractionFragment;