/** * Content Extractor - Converts HTML to clean markdown with table support * Enhanced with field-level confidence tracking (CX-002) */ import { type FieldConfidence } from '../types/field-confidence.js'; import { type SelectorAttempt, type TitleAttempt } from '../types/decision-trace.js'; export interface ExtractedTable { headers: string[]; rows: string[][]; caption?: string; id?: string; } export interface TableAsJSON { data: Record[]; headers: string[]; caption?: string; } /** * Title extraction metadata for confidence tracking */ export interface TitleExtraction { title: string; source: 'title_tag' | 'h1' | 'og_title' | 'unknown'; confidence: FieldConfidence; } /** * Content extraction metadata for confidence tracking */ export interface ContentExtraction { markdown: string; text: string; source: 'main' | 'article' | 'role_main' | 'content_class' | 'body_fallback'; selector: string; confidence: FieldConfidence; } /** * Enhanced extraction result with confidence tracking (CX-002) */ export interface ExtractionResultWithConfidence { markdown: string; text: string; title: string; confidence: { title: FieldConfidence; content: FieldConfidence; overall: FieldConfidence; }; metadata: { titleSource: TitleExtraction['source']; contentSource: ContentExtraction['source']; contentSelector: string; }; } /** * Enhanced extraction result with decision trace (CX-003) */ export interface ExtractionResultWithTrace extends ExtractionResultWithConfidence { trace: { titleAttempts: TitleAttempt[]; selectorAttempts: SelectorAttempt[]; }; } export declare class ContentExtractor { private turndown; constructor(); /** * Extract clean content from HTML */ extract(html: string, url: string): { markdown: string; text: string; title: string; }; /** * Extract clean content with field-level confidence tracking (CX-002) * Returns enhanced result with per-field confidence scores */ extractWithConfidence(html: string, url: string): ExtractionResultWithConfidence; /** * Extract clean content with decision trace (CX-003) * Returns enhanced result with per-field confidence and decision trace */ extractWithTrace(html: string, url: string): ExtractionResultWithTrace; /** * Extract title with trace of all attempts (CX-003) */ private extractTitleWithTrace; /** * Extract content with trace of all selector attempts (CX-003) */ private extractContentWithTrace; /** * Extract title with confidence tracking */ private extractTitleWithConfidence; /** * Extract main content with confidence tracking */ private extractContentWithConfidence; /** * Extract structured data from HTML */ extractStructured(html: string, selectors: Record): Record[]; /** * Extract all tables from HTML as structured data */ extractTables(html: string): ExtractedTable[]; /** * Extract tables as JSON objects (headers become keys) */ extractTablesAsJSON(html: string): TableAsJSON[]; /** * Find a specific table by ID, caption, or header content */ findTable(html: string, criteria: { id?: string; caption?: string; headerContains?: string; }): ExtractedTable | undefined; /** * Extract links from HTML with their context */ extractLinks(html: string): { href: string; text: string; context: string; }[]; } //# sourceMappingURL=content-extractor.d.ts.map