import * as _radix_ui_react_context from '@radix-ui/react-context';
import * as React from 'react';
import { Primitive } from '@radix-ui/react-primitive';
import * as RovingFocusGroup from '@radix-ui/react-roving-focus';
import { Toggle } from '@radix-ui/react-toggle';

declare const ToggleGroupType: {
    readonly Single: "single";
    readonly Multiple: "multiple";
};
type ToggleGroupType = (typeof ToggleGroupType)[keyof typeof ToggleGroupType];
declare const createToggleGroupScope: _radix_ui_react_context.CreateScope;
interface ToggleGroupSingleProps extends ToggleGroupImplSingleProps {
    type: typeof ToggleGroupType.Single;
}
interface ToggleGroupMultipleProps extends ToggleGroupImplMultipleProps {
    type: typeof ToggleGroupType.Multiple;
}
declare const ToggleGroup: React.ForwardRefExoticComponent<(ToggleGroupSingleProps | ToggleGroupMultipleProps) & React.RefAttributes<HTMLDivElement>>;
interface ToggleGroupImplSingleProps extends ToggleGroupImplProps {
    /**
     * The controlled stateful value of the item that is pressed.
     */
    value?: string | undefined;
    /**
     * The value of the item that is pressed when initially rendered. Use
     * `defaultValue` if you do not need to control the state of a toggle group.
     */
    defaultValue?: string | undefined;
    /**
     * The callback that fires when the value of the toggle group changes.
     */
    onValueChange?: {
        bivarianceHack(value: string): void;
    }['bivarianceHack'] | undefined;
}
interface ToggleGroupImplMultipleProps extends ToggleGroupImplProps {
    /**
     * The controlled stateful value of the items that are pressed.
     */
    value?: string[] | undefined;
    /**
     * The value of the items that are pressed when initially rendered. Use
     * `defaultValue` if you do not need to control the state of a toggle group.
     */
    defaultValue?: string[] | undefined;
    /**
     * The callback that fires when the state of the toggle group changes.
     */
    onValueChange?: {
        bivarianceHack(value: string[]): void;
    }['bivarianceHack'] | undefined;
}
type RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;
type PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;
interface ToggleGroupImplProps extends PrimitiveDivProps {
    /**
     * Whether the group is disabled from user interaction.
     * @defaultValue false
     */
    disabled?: boolean | undefined;
    /**
     * Whether the group should maintain roving focus of its buttons.
     * @defaultValue true
     */
    rovingFocus?: boolean | undefined;
    loop?: RovingFocusGroupProps['loop'] | undefined;
    orientation?: RovingFocusGroupProps['orientation'] | undefined;
    dir?: RovingFocusGroupProps['dir'] | undefined;
}
interface ToggleGroupItemProps extends Omit<ToggleGroupItemImplProps, 'pressed'> {
}
declare const ToggleGroupItem: React.ForwardRefExoticComponent<ToggleGroupItemProps & React.RefAttributes<HTMLButtonElement>>;
type ToggleProps = React.ComponentPropsWithoutRef<typeof Toggle>;
interface ToggleGroupItemImplProps extends Omit<ToggleProps, 'defaultPressed' | 'onPressedChange'> {
    /**
     * A string value for the toggle group item. All items within a toggle group should use a unique value.
     */
    value: string;
}

export { ToggleGroupItem as Item, ToggleGroup as Root, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupMultipleProps, type ToggleGroupSingleProps, createToggleGroupScope };
