/** * `repeat=` built in memory the way the streaming engine builds it. * * A repeating column has two plans, not one. How MANY values a row keeps is an * exact quota over the run — permuted by `#replen`, so a row's length follows * from its own position and never from a running total over its predecessors. * What those values ARE then depends on the generator: a list is laid out over * the whole slot space and read at the row's slots, while anything drawn takes * one seekable sub-stream per element, `#e0`, `#e1`, and so on. * * Both halves are keyed by `(seed, streamId)` and mirror `stream-build.ts`. The * older sequential builder in `repeat.ts` stays for the cases with nothing to * key by — an inline generator inside a pack body. */ import type { SequenceBuildContext } from './context.js'; import { type RepeatSpec } from './repeat.js'; import type { GenSpec } from './types.js'; /** The same gen with `repeat` removed, so the per-element build cannot re-apply it. */ export declare function withoutRepeat(gen: GenSpec): GenSpec; /** * A repeating column of DRAWN values: element k of a row comes off the row's * own `#e{k}` stream, so the row still resolves alone. */ export declare function buildKeyedRepeatDraws(gen: GenSpec, spec: RepeatSpec, count: number, locale: string, now: number, ctx: SequenceBuildContext, seed: string, streamId: string, flagTextOut?: string[]): string[]; /** * A repeating column of LISTED values: the slot space covers every element of * every row at once, laid out exactly and permuted, and a row reads the slots * its length plan gave it. */ export declare function buildKeyedRepeatLayout(spec: RepeatSpec, values: readonly string[], percents: readonly number[], count: number, ctx: SequenceBuildContext, seed: string, streamId: string, modify?: (row: number, value: string, k: number) => string): string[]; /** * The `anomaly=`/`missing=`/`mask=` modifier for a repeating LISTED column. * * One draw per element, pulled a whole row at a time off the `#anom` and * `#miss` streams — the budget is the row's maximum length, so which uniform * element k gets does not depend on how long its row turned out to be. */ export declare function keyedElementUniforms(seed: string, streamId: string, purpose: string, budget: number): (row: number, k: number) => number; //# sourceMappingURL=repeat-keyed.d.ts.map