import { EventEmitter } from '../../../stencil-public-runtime';
import { GlobalSlimmers } from '../../../vega-slimmer/vega-slimmer-core';
import { FormFieldControllerSlimmer } from '../../../helpers/slimmers/form-field-controller-slimmer';
import { ChildNodesNotifyObserverSlimmer } from '../../../helpers/event-manager/slimmers/child-nodes-notify-observer-slimmer';
import { ChildNodesEventPreventSlimmer } from '../../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { EventEmitSlimmerBase } from '../../../helpers/event-manager/slimmers/event-emit-slimmer';
import { FormFieldValidationRule } from '../../../helpers/validator/rules/form-field-validation-rule';
import { VegaFlexProps } from '../../../types/ui.type';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../../helpers/slimmers/component-usage-runtime-metrics';
/**
 * @vegaVersion 1.0.7
 */
export declare class VegaCheckboxGroup {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected readonly formFieldController: FormFieldControllerSlimmer<string[]>;
  protected checkboxValueChangeObserver: ChildNodesNotifyObserverSlimmer<boolean>;
  protected checkboxEventPrevent: ChildNodesEventPreventSlimmer;
  protected changeEventEmitter: EventEmitSlimmerBase;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaCheckboxGroupElement>;
  private vegaFlexElement;
  private inputContainerRef;
  private vegaCheckboxArray;
  host: HTMLVegaCheckboxGroupElement;
  /**
   * Specifies the label or title for the checkbox group.
   *    It provides descriptive text that helps identify
   *    the purpose of the checkbox group.
   *
   * @vegaVersion 1.3.0
   */
  label: string;
  /**
   * Stores the selected values of the nested checkboxes
   *    within the checkbox group.
   *
   * @vegaVersion 1.0.7
   */
  value: string[];
  watchValue(): Promise<void>;
  /**
   * Specifies all properties of a `vega-flex` component,
   *    accessible as an object.
   *
   * @vegaVersion 1.3.0
   */
  vegaFlexProp: VegaFlexProps;
  watchVegaFlexProp(): void;
  /**
   * Indicates if the checkbox group is disabled.
   *
   * @vegaVersion 1.3.0
   */
  disabled: boolean;
  watchDisabled(): Promise<void>;
  /**
   * Indicates whether at least one checkbox in the
   *    checkbox group must be checked to pass
   *    form validation.
   *
   * @vegaVersion 1.3.0
   */
  required: boolean;
  /**
   * Provides a supplementary prompt message that
   *    assists users in selecting the appropriate
   *    value for the checkbox group.
   *
   * @vegaVersion 1.3.0
   */
  hint: string;
  /** Specifies the validation status of the
   *    checkbox group component.
   *
   * @vegaVersion 1.3.0
   */
  isValid: boolean;
  /**
   * Determines whether automatic validation should be implemented for
   *    the checkbox group upon selection.
   *
   * @vegaVersion 2.6.0
   */
  autoValidation: boolean;
  /**
   * Defines custom validation rules for the checkbox group.
   *
   * @vegaVersion 2.6.0
   */
  validationRules: FormFieldValidationRule<unknown>[];
  watchValidationRules(): void;
  /** An event emitter notifying changes in the value
   *    of any nested checkbox within the checkbox group,
   *    whether triggered programmatically or through
   *    user interaction.
   *
   * @vegaVersion 1.0.10
   */
  vegaChange: EventEmitter<string[]>;
  /** An event emitter notifying changes in the value
   *    of any nested checkbox within the checkbox group,
   *    whether triggered programmatically or through
   *    user interaction.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  change: EventEmitter<string[]>;
  componentDidLoad(): void;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-checkbox-group-dark-change-background-color }
   */
  render(): VegaCheckboxGroup;
  private renderLabelDom;
  private renderRequireDom;
  private renderHintDom;
  private setVegaFlexProperty;
  /**
   * Update checkbox group value when child checkbox is changed.
   *
   * @param {NotifyObserverPayload<boolean>} input change payload from child checkbox
   */
  private childCheckboxValueChange;
  /**
   * 1. If the checkbox is checked, the value of checkbox group doesn't contain the value of the selected checkbox and needs to be added
   * 2. If the checkbox isn't checked, the value of checkbox group contains the value of the selected checkbox and needs to be deleted
   * @see{module:vega-checkbox-group-with-listen-vega-change-event-e2e}
   */
  private syncCheckboxItemsValue;
  private initCheckboxArray;
  /**
   * This function notifies a change in the disabled state of a checkbox group component.
   */
  private notifyGroupDisabledChange;
  private touchableAreaGetter;
}
