import { type FunctionComponent } from "react";
import { type ButtonProps } from './Button';
import { type Input } from '../input';
export interface ToggleExtensionProps extends Input.Control<boolean> {
    checkedVariant?: ButtonProps["variant"];
    uncheckedVariant?: ButtonProps["variant"];
}
/**
 * Use.Toggle renders a button that can be toggled on and off. It implements the
 * InputControlProps interface, so it can be used as an input control in a form.
 *
 * @param props - Props for the component. Identical to the props for the Use
 * component, excluding 'variant', and  adding the following:
 * @param props.value - The boolean value of the button. If true, the button will be
 * rendered as "filled". If false, it will be rendered as "outlined".
 * @param props.onChange - A callback function that will be called when the button is
 * toggled. The callback will be passed the new value of the button.
 */
export declare const Toggle: FunctionComponent<Omit<Omit<Omit<import("../text/WithIcon").WithIconProps<"button", "h1">, "size" | "level" | "startIcon" | "endIcon"> & import('./Button').ButtonExtensionProps & import('./Button').BaseProps & {
    level?: "small" | "h1" | "h2" | "h3" | "h4" | "h5" | "p" | undefined;
    startIcon?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>[] | undefined;
    endIcon?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>[] | undefined;
    iconSpacing?: number | "small" | "medium" | "large" | undefined;
    disabled?: boolean | undefined;
    delay?: number | import("@synnaxlabs/x").TimeSpan | undefined;
} & import("../tooltip/wrap").WrapProps, "ref"> & import("react").RefAttributes<HTMLElement>, "value" | "onChange"> & ToggleExtensionProps>;
export type ToggleProps = Omit<Parameters<typeof Toggle>[0], "value" | "onChange"> & ToggleExtensionProps;
/**
 * Use.IconToggle renders a button that can be toggled on and off, and only
 * renders an icon. It implements the InputControlProps interface, so it can be used
 *  as an input control in a form.
 *
 * @param props - Props for the component. Identical to the props for the Use.Icon
 * component, excluding 'variant', and  adding the following:
 * @param props.value - The boolean value of the button. If true, the button will be
 * rendered as "filled". If false, it will be rendered as "outlined".
 * @param props.onChange - A callback function that will be called when the button is
 * toggled. The callback will be passed the new value of the button.
 */
export declare const ToggleIcon: FunctionComponent<Omit<Omit<import('./Icon').IconProps & import("react").RefAttributes<HTMLButtonElement> & import("../tooltip/wrap").WrapProps, "ref"> & import("react").RefAttributes<HTMLElement>, "value" | "onChange"> & ToggleExtensionProps>;
export type ToggleIconProps = Omit<Parameters<typeof ToggleIcon>[0], "value" | "onChange"> & ToggleExtensionProps;
