import { EventEmitter, ComponentInterface } from '../../stencil-public-runtime';
import { CheckboxChangeEventDetail } from './checkbox-interface';
import type { ControlValidity } from '../../types/shared';
/**
 * Checkboxes are used to let a user choose one or more values from a limited number of options.
 *
 * @status stable
 * @version 1.0.0
 *
 * @slot - used for more complex, label markup
 */
export declare class Checkbox implements ComponentInterface {
    private inputId;
    private input;
    private _slotWrapper;
    private get slotWrapper();
    private set slotWrapper(value);
    private host;
    inputType: 'checkbox' | 'radio';
    hasLabel: boolean;
    /** @internal */
    hasFocus: boolean;
    /**
     * checked property that can be used to get/set the value. accepts only boolean values
     */
    checked: boolean;
    handleCheckedChange(): Promise<void>;
    /**
     * If `true`, the user cannot interact with the checkbox.
     */
    disabled: boolean;
    /**
     * The value of a checkbox is analogous to the value of an `<input type='checkbox'>`,
     * it's only present when `checked` is true.
     */
    value: string;
    /**
     * The name of the control, which is submitted with the form data.
     */
    name: string;
    /**
     * Set to true to make the field required.
     */
    required: boolean;
    /**
     * Controls the underlying field type and style.
     */
    type: 'radio' | 'checkbox' | 'tag' | 'segment' | 'switch';
    typeChange(): void;
    /**
     * label property that can be used to set the label text. Alternatively you may use a label slot.
     */
    label?: string;
    /**
     * Visually hide the label - but make it accessible.
     */
    hideLabel?: boolean;
    /**
     * If `true`, the checkbox will visually appear as indeterminate (only relevant for type="checkbox")
     */
    indeterminate: boolean;
    handleIndeterminateChange(): void;
    /**
     * This will be true when the control is in an invalid state.
     * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly
     */
    get invalid(): boolean;
    _invalid: boolean;
    /**
     * Current validation message - if any. @readonly
     */
    get validityMessage(): string;
    /**
     * The form element to associate the input with (its form owner). Must be the id of a form.
     */
    form?: string | null;
    /**
     * Emited when the checkbox is toggled
     */
    nanoChange: EventEmitter<CheckboxChangeEventDetail>;
    /**
     * Emited when the checkbox is focused
     */
    nanoFocus: EventEmitter;
    /**
     * Emited when the checkbox is blurred
     */
    nanoBlur: EventEmitter;
    /**
     * Returns the native input control
     * @returns the native input control
     */
    getInputElement(): Promise<HTMLInputElement>;
    /**
     * Get the current state of the control.
     * @param validateFirst - perform validation first before reporting
     * @returns `Promise<{ isValid: boolean, errorMessage: string }>`
     */
    reportValidity(validateFirst?: boolean): Promise<ControlValidity>;
    /**
     * Sets a custom validation message.
     * If `message` is not empty, the field will be considered invalid. Use in conjunction with `nano-checkbox-group`
     */
    setError(message: string, updateStatus?: boolean): Promise<void>;
    /**
     * Sets focus on the checkbox.
     */
    setFocus(): Promise<void>;
    /**
     * Removes focus from the checkbox.
     */
    removeFocus(): Promise<void>;
    onHostClick(e: MouseEvent): void;
    onReset(e: any): void;
    private handleInvalid;
    private handleChange;
    private handleFocus;
    private handleBlur;
    private isRadioChecked;
    componentWillLoad(): void;
    componentDidLoad(): void;
    render(): any;
}
