import { n as CommandOptions } from "../command-LprKlNOC.js";
import { t as CheckboxStore } from "../checkbox-store-CVUINKKr.js";
import { Props } from "@ariakit/react-utils";
import { ComponentPropsWithoutRef, ElementType } from "react";
//#region src/checkbox/checkbox.d.ts
declare const TagName = "input";
type TagName = typeof TagName;
/**
 * Returns props to create a `Checkbox` component. If the element is not a
 * native checkbox, the hook will return additional props to make sure it's
 * accessible.
 * @see https://ariakit.com/components/checkbox
 * @example
 * ```jsx
 * const props = useCheckbox({ render: <div /> });
 * <Role {...props}>Accessible checkbox</Role>
 * ```
 */
declare const useCheckbox: import("@ariakit/react-utils").Hook<"input", CheckboxOptions<"input">>;
/**
 * Renders an accessible checkbox element. If the underlying element is not a
 * native checkbox, this component will pass additional attributes to make sure
 * it's accessible.
 * @see https://ariakit.com/components/checkbox
 * @example
 * ```jsx
 * <Checkbox render={<div />}>Accessible checkbox</Checkbox>
 * ```
 */
declare const Checkbox: (props: CheckboxProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
interface CheckboxOptions<T extends ElementType = TagName> extends CommandOptions<T> {
  /**
   * Object returned by the
   * [`useCheckboxStore`](https://ariakit.com/reference/use-checkbox-store)
   * hook. If not provided, the closest
   * [`CheckboxProvider`](https://ariakit.com/reference/checkbox-provider)
   * component's context will be used. Otherwise, the component will fall back
   * to an internal store.
   *
   * Live examples:
   * - [Checkbox as button](https://ariakit.com/examples/checkbox-as-button)
   */
  store?: CheckboxStore;
  /**
   * The native `name` attribute.
   *
   * Live examples:
   * - [MenuItemCheckbox](https://ariakit.com/examples/menu-item-checkbox)
   */
  name?: string;
  /**
   * The value of the checkbox. This is useful when the same checkbox store is
   * used for multiple [`Checkbox`](https://ariakit.com/reference/checkbox)
   * elements, in which case the value will be an array of checked values.
   *
   * Live examples:
   * - [Checkbox group](https://ariakit.com/examples/checkbox-group)
   * - [MenuItemCheckbox](https://ariakit.com/examples/menu-item-checkbox)
   * @example
   * ```jsx "value"
   * <CheckboxProvider defaultValue={["Apple", "Orange"]}>
   *   <Checkbox value="Apple" />
   *   <Checkbox value="Orange" />
   *   <Checkbox value="Watermelon" />
   * </CheckboxProvider>
   * ```
   */
  value?: ComponentPropsWithoutRef<TagName>["value"];
  /**
   * The default checked state of the checkbox. This prop is ignored if the
   * [`checked`](https://ariakit.com/reference/checkbox#checked) or the
   * [`store`](https://ariakit.com/reference/checkbox#store) props are provided.
   */
  defaultChecked?: "mixed" | boolean;
  /**
   * The checked state of the checkbox. This will override the value inferred
   * from [`store`](https://ariakit.com/reference/checkbox#store) prop, if
   * provided. This can be `"mixed"` to indicate that the checkbox is partially
   * checked.
   */
  checked?: "mixed" | boolean;
  /**
   * A function that is called when the checkbox's checked state changes.
   */
  onChange?: ComponentPropsWithoutRef<TagName>["onChange"];
}
type CheckboxProps<T extends ElementType = TagName> = Props<T, CheckboxOptions<T>>;
//#endregion
export { Checkbox, CheckboxOptions, CheckboxProps, useCheckbox };
//# sourceMappingURL=checkbox.d.ts.map