import { type ComponentPropsWithoutRef, type ReactNode } from "react";
export type SegmentedControlSize = "sm" | "md" | "lg";
export interface SegmentedControlOption<T extends string = string> {
    /** Stable value identifier. */
    value: T;
    /** Display label. */
    label: ReactNode;
    /** Optional leading icon. */
    icon?: ReactNode;
    /** Disable this segment. */
    disabled?: boolean;
}
export interface SegmentedControlProps<T extends string = string> extends Omit<ComponentPropsWithoutRef<"div">, "onChange" | "defaultValue" | "children" | "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart"> {
    /** Available segments. */
    options: SegmentedControlOption<T>[];
    /** Controlled: currently-selected value. */
    value?: T;
    /** Uncontrolled fallback. Default = first non-disabled option. */
    defaultValue?: T;
    /** Fires on selection change. */
    onChange?: (value: T) => void;
    /** Visual size. Default `"md"`. */
    size?: SegmentedControlSize;
    /** Stretch to fill the container. Default `false`. */
    fullWidth?: boolean;
    /** Hide labels (icon-only segments). Default `false`. */
    iconOnly?: boolean;
    /** Disable the entire control. */
    disabled?: boolean;
    /** Accessible label for the group (required when no visible label). */
    "aria-label"?: string;
    /** id of an element that labels the group. */
    "aria-labelledby"?: string;
}
export declare const SegmentedControl: <T extends string = string>(props: SegmentedControlProps<T> & {
    ref?: React.Ref<HTMLDivElement>;
}) => React.ReactElement;
//# sourceMappingURL=SegmentedControl.d.ts.map