/** * Leaf module shared by `` and ``. * * The two components render completely different geometry (a track/indicator pair versus two SVG * circles) and neither inherits from the other, but they publish the *same* `value`/`max`/`label` * contract: identical normalization, identical percent formatting, and identical accessible-name * precedence. Those three had been maintained as byte-identical copies in both class files, which * is exactly the shape this library's `x-shared.ts` convention exists for -- a divergence between * the two copies would be invisible until a consumer noticed the ring and the bar disagreeing about * the same numbers. * * Pure functions rather than a mixin: everything here is a projection of already-public property * values onto a string or number, so nothing needs the element's lifecycle. */ import{type ComposedAccessibilityTextOptions}from'../../../internal/accessibility-visibility.js'; /** `max`, normalized to a finite number and guarded against `<= 0` -- which would otherwise * divide-by-zero in `progressPercent()` -- falling back to `PROGRESS_DEFAULT_MAX`. */ export declare function progressSafeMax(max:number):number; /** `value`, normalized to a finite number clamped to `[0, safeMax]`. Takes an already-normalized * `safeMax` so a caller that needs both does not run the guard above twice. */ export declare function progressSafeValue(value:number,safeMax:number):number; /** Completion as a percentage in `[0, 100]`, from already-normalized inputs. */ export declare function progressPercent(safeValue:number,safeMax:number):number; /** The percentage rendered as text, in the element's own effective locale (never `'en'`, never a * bare `undefined`). */ export declare function formatProgressPercent(locale:string,percent:number):string; /** Collapses the accessible, visible text of `nodes` into one whitespace-normalized string. */ export declare function joinAccessibleVisibleText(nodes:Iterable,options?:ComposedAccessibilityTextOptions):string; /** * Accessible name for the `role="progressbar"` node, in the precedence both components document. * * A host `aria-label` wins by attribute *presence*, so an explicitly empty value stays empty rather * than reviving a fallback. Otherwise: the mapped `label` property, then `accessibleLabel`, then the * visible slotted label text, then the localized default the caller passes in (never a literal * string here -- the caller resolves it through `localize()` so `registerLyraLocale()` keeps * working). */ export declare function resolveProgressLabel(host:Element,parts:{label:string;accessibleLabel:string;visibleText:string;localizedFallback:string;}):string;