/** * IAB Content Taxonomy Mapper * Maps IAB 2.x codes/labels to IAB 3.0 taxonomy */ export interface MapConfig { fuzzyCut?: number; fuzzyMethod?: 'rapidfuzz' | 'tfidf'; maxTopics?: number; dropScd?: boolean; cattax?: string; overridesPath?: string; } export interface TopicMatch { id: string; label: string; confidence: number; source: string; scd?: boolean; } export interface VectorValues { channel?: string; type?: string; format?: string; language?: string; source?: string; environment?: string; } export interface MappedRecord { in_code?: string; in_label: string; out_ids: string[]; out_labels: string[]; topic_ids: string[]; topic_confidence: number[]; topic_sources: string[]; topic_scd: boolean[]; vectors: VectorValues; cattax: string; openrtb: { content: { cat: string[]; cattax: string; }; }; vast_contentcat: string; topics: TopicMatch[]; } export interface InputRecord { code?: string; label: string; channel?: string; type?: string; format?: string; language?: string; source?: string; environment?: string; } export interface Override { code?: string | null; label?: string | null; ids: string[]; } export declare class Mapper { private cfg; private iab2; private iab3; private syn2; private syn3; private aliasIdx; private labels3; private labelToId; private idToRow; private retriever?; private vectors; private overrides; constructor(cfg?: MapConfig, dataDir?: string); private loadJson; private tryLoadJson; /** * Map a single label/code to IAB 3.0 topics */ mapTopics(inLabel: string): TopicMatch[]; private applyOverrides; private mapVectors; /** * Map a complete record with code, label, and optional vector attributes */ mapRecord(rec: InputRecord): MappedRecord; /** * Map multiple records */ mapRecords(records: InputRecord[]): MappedRecord[]; }