/** * How many characters a composed pack's own `` produces, when that is * a FACT rather than a guess. * * A pack parameter replaces one of the pack's sequences for the run: * `` swaps the * pack's own `prefix`. That is the documented way to pin part of an identifier. * * The packs that carry a CHECK DIGIT compute it over a fixed layout, so a pinned * value of the wrong width does not shift the layout — it breaks it. Measured on * `usa.finance.aba_routing`, whose `prefix` is 2 characters and `tail` is 6: * * prefix="12345" → the run aborts: : index 8 is out of range * tail="678" → 326784 — six digits, and not a routing number * * `check` passed on both. The first names no file, line or code; the second says * nothing at all and writes data that looks right. * * So the width is worked out here, and ONLY where it can be proven from the * pack's own body. Three shapes carry a width; everything else returns * undefined and the caller stays silent, because a refusal has to be a proof: * * every alternative is 2 → 2 * one class, fixed count → 6 * zero-padded, equal ends → 4 * * A list whose alternatives differ in length has no width. Neither has a name, a * `{2,4}` quantifier, an unpadded range, or a nested `template`. */ import type { SequenceSpec } from '../sequence/types.js'; /** Parameter name → the width the pack's own sequence always produces. */ export type ParamWidths = ReadonlyMap; /** Read the provable widths out of a composed pack's sequences. */ export declare function parameterWidths(sequences: readonly SequenceSpec[]): ParamWidths; //# sourceMappingURL=param-width.d.ts.map