import { type CSSProperties, type HTMLAttributes, type InputHTMLAttributes, type ReactNode } from "react";
import { type PropsWithRef } from "../types.js";
import { type InputToggleLabelProps } from "./InputToggle.js";
import { type FormComponentStates, type FormMessageContainerExtension } from "./types.js";
declare module "react" {
    interface CSSProperties {
        "--rmd-switch-track-background-color"?: string;
        "--rmd-switch-ball-background-color"?: string;
    }
}
/**
 * @since 6.0.0 Added `containerProps` and support for the
 * `FormMessage` behavior.
 */
export interface SwitchProps extends InputHTMLAttributes<HTMLInputElement>, InputToggleLabelProps, FormMessageContainerExtension, FormComponentStates {
    containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;
    trackProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;
    trackStyle?: CSSProperties;
    trackClassName?: string;
    ballAddon?: ReactNode;
    ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>>;
    ballStyle?: CSSProperties;
    ballClassName?: string;
}
/**
 * @example Simple Example
 * ```tsx
 * import { Form } from "@react-md/core/form/Form";
 * import { Switch } from "@react-md/core/form/Switch";
 * import type { ReactElement } from "react";
 * import { useState } from "react";
 *
 * function Example(): ReactElement {
 *   const [checked, setChecked] = useState(false);
 *
 *   return (
 *     <Form>
 *       <Switch
 *         label="Label"
 *         name="enabled"
 *         checked={checked}
 *         onChange={(event) => setChecked(event.currentTarget.checked)}
 *       />
 *     </Form>
 *   );
 * }
 * ```
 *
 * @see {@link https://react-md.dev/components/switch | Switch Demos}
 * @since 6.0.0 Added support for `FormMessage` behavior.
 */
export declare const Switch: import("react").ForwardRefExoticComponent<SwitchProps & import("react").RefAttributes<HTMLInputElement>>;
