import type { DataSourceOptions } from '../data-source/resolve.js'; import { type RepeatSpec } from './repeat.js'; import type { GenSpec } from './types.js'; /** * The ordered value list of a list-backed generator, for `order="sequential"`: * `text` splits its `value`, `file` loads its lines (or a CSV column) as-is. */ export declare function sequentialList(gen: GenSpec, dataSources: DataSourceOptions): string[]; /** * Which of `size` values row `index` gets: `index mod size` (loop), or an error * past the end when `cycle=false`. * * The one place that decides, so a text list, a file column and a walked date * range answer the same way — and say the same thing when they run out. A date * range never becomes a list (a century by the second is not a list anyone * should hold), which is why this takes a SIZE rather than the values. */ export declare function sequentialIndex(size: number, index: number, cycle: boolean): number; /** Pick element `index mod N` (loop), or error past the end when `cycle=false`. */ export declare function pickSequential(list: readonly string[], index: number, cycle: boolean): string; /** * The walk a fixed `repeat="N"` rides, or undefined when this is not that column. * * Both engines ask the same question here, so neither spells the condition out and * they cannot drift apart on which configs are walked. */ export declare function walkedRepeat(gen: GenSpec, spec: RepeatSpec | undefined, dataSources: DataSourceOptions): ((row: number) => string) | undefined; /** * How a walked column answers ONE row — with a fixed `repeat=` or without. * * The streaming engine asks for exactly this and nothing else, so the choice * between the two shapes is made once, here, rather than at every row. */ export declare function walkedValueAt(gen: GenSpec, spec: RepeatSpec | undefined, dataSources: DataSourceOptions): (row: number) => string; //# sourceMappingURL=sequential.d.ts.map