import { default as React } from 'react';
import { Key } from 'react-aria-components';
export type ToggleButtonGroupSize = 'sm' | 'md' | 'lg';
export interface ToggleButtonOption {
    /** Stable identity of the segment; the key reported in the selection. */
    value: string;
    /** Visible content of the segment. */
    label: React.ReactNode;
    /** Optional count badge rendered after the label. */
    count?: number;
    /** Native tooltip / longer description. */
    title?: string;
    /** Disable just this segment. */
    isDisabled?: boolean;
}
export interface ToggleButtonGroupProps {
    /** The segments, in display order. */
    options: ToggleButtonOption[];
    /** Segment size — same `sm | md | lg` scale as Button. @default 'md' */
    size?: ToggleButtonGroupSize;
    /** Stretch to fill the container; segments then share the width equally. */
    fullWidth?: boolean;
    /**
     * Whether one segment or several can be active at once. Mirrors React Aria.
     * @default 'single'
     */
    selectionMode?: 'single' | 'multiple';
    /** Controlled selection (the set of active `value`s). */
    selectedKeys?: Iterable<Key>;
    /** Uncontrolled initial selection. */
    defaultSelectedKeys?: Iterable<Key>;
    /** Fires with the full set of active keys (empty when the last is cleared). */
    onSelectionChange?: (keys: Set<Key>) => void;
    /**
     * Forbid clearing the last active segment — radio-style "exactly one".
     * Off by default, so segments can toggle fully off. Mirrors React Aria.
     * @default false
     */
    disallowEmptySelection?: boolean;
    /** Disable the whole control. */
    isDisabled?: boolean;
    /**
     * @deprecated Use `selectedKeys` (single-mode). Still honored for now;
     * removed in a future major.
     */
    value?: string | null;
    /**
     * @deprecated Use `onSelectionChange`. Still fires for now; removed in a
     * future major.
     */
    onChange?: (value: string | null) => void;
    /** Accessible label for the group (use when there's no visible label). */
    'aria-label'?: string;
    className?: string;
    testId?: string;
}
/**
 * ToggleButtonGroup — a pill-shaped row of options with a filled active segment
 * (iOS-style). A thin, token-driven skin over React Aria's `ToggleButtonGroup`,
 * so it inherits keyboard navigation, focus management, and RAC's selection
 * model verbatim: single or multiple selection, controlled or uncontrolled,
 * with an optional empty selection.
 *
 * Chrome is token-driven via `--primary` / `--text-*` / `--border-1`, so themes
 * reskin it without touching the component.
 *
 * @example
 * // Single-select view switcher (uncontrolled)
 * <ToggleButtonGroup
 *   aria-label="View"
 *   options={[
 *     { value: 'grid', label: 'Grid' },
 *     { value: 'list', label: 'List' },
 *   ]}
 *   defaultSelectedKeys={['grid']}
 *   onSelectionChange={(keys) => setView([...keys][0])}
 * />
 *
 * @example
 * // Multi-select filter with counts
 * <ToggleButtonGroup
 *   selectionMode="multiple"
 *   options={[
 *     { value: 'open', label: 'Open', count: 12 },
 *     { value: 'closed', label: 'Closed', count: 4 },
 *   ]}
 * />
 */
export declare function ToggleButtonGroup({ options, size, fullWidth, selectionMode, selectedKeys, defaultSelectedKeys, onSelectionChange, disallowEmptySelection, isDisabled, value, onChange, 'aria-label': ariaLabel, className, testId, }: Readonly<ToggleButtonGroupProps>): React.JSX.Element;
//# sourceMappingURL=ToggleButtonGroup.d.ts.map