/** * `missing=` and `anomaly=` for the streaming engines, and the `anomaly_flag` * column that goes with them. * * Split out of `stream-build.ts` because it is a self-contained node: the * per-row modifier that rewrites a value, and the companion column that says * what happened to it. The two have to agree exactly — the anomalies guide * promises the flag and the spike "can never disagree" — so keeping them side * by side is the point rather than an accident of size. */ import type { SequenceBuildOptions } from './build.js'; import type { Domain } from './stream-build.js'; import type { GenSpec, Sequence } from './types.js'; /** * A seekable per-row `missing`/`anomaly` modifier, or null if the gen sets * neither. The inline-built types (counters, timeseries, pattern, text) don't * route through `buildGenValues`, so they apply this to match the in-memory * engine. Each modifier draws one uniform on its OWN dedicated seekable stream * — deterministic, seekable, and independent of value generation. */ export declare function missingAnomalyMod(gen: GenSpec, seed: string, streamId: string, elementDraws?: number, /** * The columns `missing_when=` may read. Absent — a nested build with no * registry of its own — leaves `_value` answering and a named column absent, * which is what `if=` does in the same place. */ options?: SequenceBuildOptions): ((i: number, v: string | undefined, k?: number) => string | undefined) | null; /** * Build the `anomaly_flag="NAME"` companion column for a streaming simple gen, or * null when there is no flag. It mirrors HOW `build()` applies anomaly so the flag * agrees with the value on every row: inline types use the seekable `#anom` draw * (same as `missingAnomalyMod`); independent types re-run the per-row build via * `resolveGenAnomalyFlagAt`. Parent-filtered rows are `undefined`. */ export declare function anomalyFlagSequence(gen: GenSpec, seed: string, streamId: string, domain: Domain, locale: string, now: number, options: SequenceBuildOptions, rawAt?: RawAt): { name: string; sequence: Sequence; } | null; /** * The value a gen produced for row `i` BEFORE `anomaly=`/`missing=`/`mask=` * touched it. Only the inline types publish one, and only `anomaly_flag` reads * it — to answer "was this row actually spiked?", which needs the raw value: * after the fact a blanked cell and a text cell look alike. */ export type RawAt = (i: number) => string | undefined; //# sourceMappingURL=stream-anomaly.d.ts.map