/**
 * @file ToggleButtonGroup.tsx
 * @input Uses React Context, ToggleButton children
 * @output Exports ToggleButtonGroup component and types
 * @position Groups toggle buttons for single or multi-select behavior
 *
 * Uses a discriminated union on `type` to enforce type-safe value/onChange:
 * - type='single' → value: string | null, onChange: (v: string | null) => void
 * - type='multiple' → value: string[], onChange: (v: string[]) => void
 *
 * SYNC: When modified, update these files to stay in sync:
 * - /packages/core/src/ToggleButton/index.ts
 * - /apps/storybook/stories/ToggleButton.stories.tsx
 * - /packages/cli/assets/templates/blocks/components/ToggleButton/ (showcase blocks)
 */
import { type ReactNode } from 'react';
import type { ButtonSize } from '../Button';
import type { StyleXStyles } from '@stylexjs/stylex';
interface ToggleButtonGroupContextValue {
    /** Currently selected value(s). */
    selectedValues: Set<string>;
    /** Toggle a value on/off. */
    toggle: (value: string) => void;
    /** Group size default — individual buttons can override. */
    size?: ButtonSize;
    /** Group disabled state. */
    isDisabled?: boolean;
}
/**
 * Hook for ToggleButton to read group context.
 * Returns null when used outside a group.
 */
export declare function useToggleButtonGroup(): ToggleButtonGroupContextValue | null;
interface ToggleButtonGroupBaseProps {
    /** Toggle button children. */
    children: ReactNode;
    /**
     * Accessible label for the group (used as aria-label).
     */
    label: string;
    /**
     * Orientation of the button group.
     * @default 'horizontal'
     */
    orientation?: 'horizontal' | 'vertical';
    /**
     * Default size for buttons in the group.
     * Individual buttons can override this with their own `size` prop.
     * @default 'md'
     */
    size?: ButtonSize;
    /**
     * Whether all buttons in the group are disabled.
     * @default false
     */
    isDisabled?: boolean;
    /**
     * StyleX styles for layout customization (margins, positioning, sizing).
     * Must be a `stylex.create()` value — not an inline style object.
     *
     * @example
     * ```
     * const styles = stylex.create({ wrapper: { marginTop: 8 } });
     * <ToggleButtonGroup xstyle={styles.wrapper} />
     * ```
     */
    xstyle?: StyleXStyles;
    /** Test ID for testing frameworks. */
    'data-testid'?: string;
}
/**
 * Single-select group props.
 * Only one button can be active at a time. Clicking the active
 * button deselects it (value becomes null).
 */
export interface ToggleButtonGroupSingleProps extends ToggleButtonGroupBaseProps {
    /**
     * Single selection mode (default).
     * @default 'single'
     */
    type?: 'single';
    /** Currently selected value, or null if none selected. */
    value: string | null;
    /** Called when selection changes. */
    onChange: (value: string | null) => void;
}
/**
 * Multi-select group props.
 * Multiple buttons can be active simultaneously.
 */
export interface ToggleButtonGroupMultipleProps extends ToggleButtonGroupBaseProps {
    /** Multiple selection mode. */
    type: 'multiple';
    /** Currently selected values. */
    value: string[];
    /** Called when selection changes. */
    onChange: (value: string[]) => void;
}
/** Discriminated union of single and multiple group props. */
export type ToggleButtonGroupProps = ToggleButtonGroupSingleProps | ToggleButtonGroupMultipleProps;
/**
 * Groups toggle buttons for exclusive (single) or multi-select behavior.
 *
 * Uses a discriminated union on `type` for type-safe value/onChange:
 * - `'single'` (default): `value: string | null`, click active deselects
 * - `'multiple'`: `value: string[]`, toggles individual items
 *
 * @example
 * ```
 * const [view, setView] = useState<string | null>('grid');
 * <ToggleButtonGroup value={view} onChange={setView} label="View mode">
 *   <ToggleButton value="list" label="List" icon={<ListIcon />} />
 *   <ToggleButton value="grid" label="Grid" icon={<GridIcon />} />
 * </ToggleButtonGroup>
 * ```
 */
export declare function ToggleButtonGroup(props: ToggleButtonGroupProps): ReactNode;
export declare namespace ToggleButtonGroup {
    var displayName: string;
}
export {};
//# sourceMappingURL=ToggleButtonGroup.d.ts.map