import type * as React from 'react';
import { UseInlineErrorProps } from '../InlineError/useInlineError';
import { UseLabelPropsProps } from '../Label/useLabelProps';
import { UseHintProps } from '../Hint/useHint';
export type ChoiceSize = 'small';
export type ChoiceType = 'checkbox' | 'radio';
export type ChoiceValue = number | string;
export interface BaseChoiceProps {
    /**
     * Sets the initial `checked` state. Use this for an uncontrolled component;
     * otherwise, use the `checked` property.
     */
    defaultChecked?: boolean;
    /**
     * Sets the input's `checked` state. Use this in combination with `onChange`
     * for a controlled component; otherwise, set `defaultChecked`.
     */
    checked?: boolean;
    /**
     * Content to be shown when the choice is checked. See
     * **Checked children and the expose within pattern** on
     * the Guidance tab for detailed instructions.
     */
    checkedChildren?: React.ReactNode;
    /**
     * Content to be shown when the choice is not checked
     */
    uncheckedChildren?: React.ReactNode;
    /**
     * Disables the entire field.
     */
    disabled?: boolean;
    /**
     * Additional classes to be added to the root `div` element.
     */
    className?: string;
    /**
     * @hide-prop Internal prop used to determine if a Choice is the child of a another component (like ChoiceList or MonthPicker). Used to hide excessive error messages.
     */
    _choiceChild?: boolean;
    /**
     * Additional classes to be added to the `input` element.
     */
    inputClassName?: string;
    /**
     * Access a reference to the `input` element
     */
    inputRef?: React.Ref<any> | React.MutableRefObject<any>;
    /**
     * A unique ID to be used for the input field, as well as the label's
     * `for` attribute. A unique ID will be generated if one isn't provided.
     */
    id?: string;
    /**
     * Applies the "inverse" UI theme
     */
    inversed?: boolean;
    size?: ChoiceSize;
    /**
     * The `input` field's `name` attribute
     */
    name: string;
    onBlur?: (...args: any[]) => any;
    onChange?: (event: React.ChangeEvent<HTMLInputElement>) => any;
    /**
     * Sets the type to render `checkbox` fields or `radio` buttons
     */
    type: ChoiceType;
    /**
     * The `input` `value` attribute
     */
    value: ChoiceValue;
}
export type ChoiceProps = BaseChoiceProps & Omit<React.ComponentPropsWithRef<'input'>, keyof BaseChoiceProps> & Omit<UseLabelPropsProps & UseHintProps & UseInlineErrorProps, 'id' | 'inversed' | 'errorPlacement'>;
/**
 * This component passes any additional props to its underlying input element
 * as attributes. See the corresponding MDN documentation for
 * [input](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input) for
 * a list of valid attributes.

 * For information about how and when to use this component, refer to the
 * [checkbox](https://design.cms.gov/components/checkbox/) and
 * [radio](https://design.cms.gov/components/radio/) documentation pages.
 */
export declare const Choice: {
    ({ _choiceChild, ...props }: ChoiceProps): import("react/jsx-runtime").JSX.Element;
    defaultProps: {
        _choiceChild: boolean;
    };
};
export default Choice;
