import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import type { ControlValidityEventDetail, ControlValidity } from '../../types/shared';
/**
 * Checkbox group is an optional wrapper for all [checkbox](/components/checkbox) controls.
 * It provides a convenient place to anchor labels and validation messages.
 *
 * @status stable
 * @version 1.0.0
 *
 * @slot - Used for grouping checkboxes inside the group
 * @slot legend - used for more complex, label markup
 * @slot helper - text that describes how to use the checkbox group
 */
export declare class CheckboxGroup implements ComponentInterface {
    private mo?;
    private checkboxTypes;
    private grpId;
    private ignoreValueSet;
    host: HTMLNanoCheckboxGroupElement;
    checkboxes?: HTMLNanoCheckboxElement[];
    nativeCbs: HTMLInputElement[];
    errorMessage: string;
    showErrorMsg: boolean;
    hasHelperSlot: boolean;
    /**
     * When should the field perform validation
     */
    validateOn?: 'dirty' | 'submit' | 'submitThenDirty';
    /**
     * Whether to show validation errors underneath input
     */
    showInlineError: boolean;
    /**
     * The minimum number of checkboxes required to be valid. Only relevant for checkbox type controls.
     * A validation error will be thrown if not enough controls are checked.
     */
    min: number;
    /**
     * The maximum number of checkboxes allowed. Only relevant for checkbox type controls.
     * Other controls will automatically be disabled upon reaching this number.
     */
    max: number;
    /**
     * Disable all the nested form controls
     */
    disabled: boolean | null;
    private _legend;
    /**
     * A collective label for children controls
     */
    get legend(): string;
    set legend(value: string);
    /**
     * Visually hide the legend but still available to screen readers.
     */
    hideLegend?: boolean;
    /**
     * 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 current, collective checkbox value */
    value: string[] | string;
    handleValuePropChange(): void;
    /**
     * Get the current state of the control.
     * @param validateFirst - perform validation first before reporting
     * @returns `{ isValid: boolean, errorMessage: string }`
     */
    reportValidity(validateFirst: boolean): Promise<ControlValidity>;
    /**
     * Invalidate the field and show a custom error message.
     * To clear the error you will need to re-call this method with an empty string.
     * @param message - the error message to show
     * @param optVal - optionally supply an option value to target which checkbox to show invalidate against (default is the first)
     */
    showError(message: string, optVal?: string): Promise<void>;
    /**
     * Called when a nested checkbox changes
     */
    nanoChange: EventEmitter<string | string[]>;
    /**
     * Called when validation is performed (which depends on `validateOn`).
     * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.
     */
    nanoValidate: EventEmitter<ControlValidityEventDetail>;
    handleValueChange(ev: CustomEvent): void;
    /**
     * Notes on validation... custom validation messages should be set
     * no matter whether we show inline messages or native html5.
     * this will mean forms cannot submit when there are pending validation issues.
     */
    handleCbChange(): void;
    customValidate(): boolean;
    handleComponentChange(): void;
    handleDisabledChange(): void;
    private setInternalValue;
    private setCbValue;
    private attachSlotObserver;
    private handleSlotChange;
    private handleInvalid;
    private showInlineValidation;
    componentWillLoad(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    render(): any;
}
