import { AriaLabelingProps, DOMAttributes, DOMProps } from '@react-types/shared';
import { ReactNode } from 'react';
export interface ProgressBarBaseProps {
    /**
     * The current value (controlled).
     * @default 0
     */
    value?: number;
    /**
     * The smallest value allowed for the input.
     * @default 0
     */
    minValue?: number;
    /**
     * The largest value allowed for the input.
     * @default 100
     */
    maxValue?: number;
    /** The content to display as the label. */
    label?: ReactNode;
    /**
     * The display format of the value label.
     * @default {style: 'percent'}
     */
    formatOptions?: Intl.NumberFormatOptions;
    /** The content to display as the value's label (e.g. 1 of 4). */
    valueLabel?: ReactNode;
}
export interface AriaProgressBarBaseProps extends ProgressBarBaseProps, DOMProps, AriaLabelingProps {
}
export interface ProgressBarProps extends ProgressBarBaseProps {
    /**
     * Whether presentation is indeterminate when progress isn't known.
     */
    isIndeterminate?: boolean;
}
export interface AriaProgressBarProps extends ProgressBarProps, DOMProps, AriaLabelingProps {
}
export interface ProgressBarAria {
    /** Props for the progress bar container element. */
    progressBarProps: DOMAttributes;
    /** Props for the progress bar's visual label element (if any). */
    labelProps: DOMAttributes;
}
/**
 * Provides the accessibility implementation for a progress bar component.
 * Progress bars show either determinate or indeterminate progress of an operation
 * over time.
 */
export declare function useProgressBar(props: AriaProgressBarProps): ProgressBarAria;
