import { ProgressOptions } from './progress.types';
/**
* Headless progress controller. Manages the ARIA `progressbar` role and value
* attributes, reflects state on `data-state`, and exposes the completion
* percentage as a `--c42-progress-percent` custom property on the root so CSS
* can size the indicator. It never applies visual styles itself.
*
* Determinate and indeterminate (loading) modes are both supported.
*
* Markup:
* ```html
*
* ```
*/
export declare class Progress {
private readonly root;
private readonly labelEl;
private value;
private min;
private max;
private indeterminate;
private cleanups;
constructor(root: HTMLElement, options?: ProgressOptions);
private clamp;
private get percent();
private render;
private emit;
/** Set the current value (clamped to [min, max]). Exits indeterminate mode. */
setValue(value: number): void;
/** Update the upper bound and re-clamp the value. */
setMax(max: number): void;
/** Toggle the indeterminate (loading) state. */
setIndeterminate(indeterminate: boolean): void;
getValue(): number;
/** Subscribe to a DOM event on the root element. Returns an unsubscribe fn. */
on(event: string, handler: (event: E) => void): () => void;
destroy(): void;
}