/** * `uniq="true"` on a SIMPLE sequence: every row gets a different value. * * A compound's `uniq` rearranges what was already drawn — it can keep the * per-value proportions because a tuple has room to vary. A single column has * no such room: proportions and uniqueness contradict each other the moment * any value's share exceeds one row. So here `uniq` changes the DRAW itself: * values are sampled WITHOUT REPLACEMENT. A weighted pool keeps its meaning — * frequent values are more likely to make the cut — but nothing appears twice. * * When the pool holds fewer distinct values than there are rows, that is said * up front, in the same voice the compound infeasibility check uses. The one * thing this module never does is the old behavior: accept the attribute and * quietly ignore it. * * Draw budget: exactly one PRNG draw per row, whatever the pool — part of the * cross-language contract, like every other generator's budget. */ import type { SequenceBuildContext } from './context.js'; import type { GenSpec } from './types.js'; /** * True when this spec shape takes the without-replacement path. `increment` * and `decrement` are unique by construction and keep their normal build. */ export declare function genSupportsUniq(gen: GenSpec): boolean; /** * The reason a gen CANNOT take the path, for the refusal message. `undefined` * when it can. */ export declare function uniqUnsupportedReason(gen: GenSpec): string | undefined; /** * Build `count` pairwise-different values for a simple `uniq="true"` sequence. * Throws with the infeasibility said plainly when the pool is too small. */ export declare function buildUniqueValues(name: string, gen: GenSpec, count: number, prng: () => number, locale: string, ctx: SequenceBuildContext): string[]; //# sourceMappingURL=uniq-simple.d.ts.map