import { SampleClass, SampleClassKind } from '../../types/auto-group'; export interface ClassVocab { blankPattern: RegExp; iqcPattern: RegExp; eqcPattern: RegExp; standardPattern: RegExp; standardAllow: Set; spikeInPattern: RegExp; stockPattern: RegExp; /** * Matrix lookup: lowercase token → canonical display name. Matching is * case-insensitive, and several aliases can collapse to one display name * (cell → Cells, medium → Medium). */ matrixVocab: Map; /** Lowercase polarity tokens → POS / NEG. */ ionizationModes: Map; /** Lowercase tokens that flag the next token as the organ subKind. */ tissueParentTokens: Set; } export declare const classVocab: ClassVocab; export interface DetectClassOptions { vocab?: Partial; /** Per-sample explicit `sample_type` hint (e.g. from experiment design data). */ sampleTypeHints?: (string | undefined)[]; /** Number of leading tokens that all samples share (`TokenizedBatch.sharedPrefix`). */ sharedPrefix?: number; } /** A token that names a QC-type class (blank, QC, standard, spike-in, stock). */ export declare function isClassMarker(token: string, vocab?: ClassVocab): boolean; /** Kinds that form experimental groups; all other kinds are QC-type overlay classes. */ export declare function isExperimentalKind(kind: SampleClassKind): boolean; /** Classify each tokenized sample into a SampleClass. */ export declare function detectClass(tokenizedSamples: string[][], options: DetectClassOptions): SampleClass[];