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";
/**
 * @remarks \@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>, HTMLDivElement>;
    trackProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
    trackStyle?: CSSProperties;
    trackClassName?: string;
    ballAddon?: ReactNode;
    ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>;
    ballStyle?: CSSProperties;
    ballClassName?: string;
}
/**
 * **Server Component**
 *
 * @example
 * Simple Example
 * ```tsx
 * import { Form, Switch } from "@react-md/core";
 * 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>
 *   );
 * }
 * ```
 *
 * @remarks \@since 6.0.0 Added support for `FormMessage` behavior.
 */
export declare const Switch: import("react").ForwardRefExoticComponent<SwitchProps & import("react").RefAttributes<HTMLInputElement>>;
