import { EventEmitter } from '../../../stencil-public-runtime';
import { FormFieldControllerSlimmer } from '../../../helpers/slimmers/form-field-controller-slimmer';
import { GlobalSlimmers } from '../../../vega-slimmer/vega-slimmer-core';
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 { VegaRadioGroupKeyboardController } from './slimmers/controllers/vega-radio-group-keyboard-controller';
import { VegaRadioGroupValueController } from './slimmers/controllers/vega-radio-group-value-controller';
import { VegaRadioGroupRadioItemsController } from './slimmers/controllers/vega-radio-group-radio-items-controller';
import { FormFieldValidationRule } from '../../../helpers/validator/rules/form-field-validation-rule';
import { VegaFlexProps } from '../../../types/ui.type';
import { MutationObserverSlimmer } from '../../../helpers/slimmers/mutation-observer/mutation-observer-slimmer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../../helpers/slimmers/component-usage-runtime-metrics';
/**
 * @vegaVersion 1.0.7
 */
export declare class VegaRadioGroup {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected readonly formFieldController: FormFieldControllerSlimmer<string>;
  protected radioValueChangeObserver: ChildNodesNotifyObserverSlimmer<boolean>;
  protected radioEventPrevent: ChildNodesEventPreventSlimmer;
  protected slotMutationObserver: MutationObserverSlimmer;
  protected changeEventEmitter: EventEmitSlimmerBase;
  protected readonly keyboardController: VegaRadioGroupKeyboardController;
  protected radioItemsController: VegaRadioGroupRadioItemsController;
  protected valueController: VegaRadioGroupValueController;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaRadioGroupElement>;
  private inputContainerRef;
  private vegaFlexElement;
  host: HTMLVegaRadioGroupElement;
  /**
   * Specifies the label or title of the radio group.
   *
   * @vegaVersion 1.3.0
   */
  label: string;
  /**
   * Represents the value associated with the radio button.
   *
   * @vegaVersion 1.0.7
   */
  value: string;
  watchValue(newValue: string): Promise<void>;
  /**
   * Specifies the name attribute for each radio button
   *    in the radio group.
   *
   * @vegaVersion 1.3.0
   */
  name: string;
  watchName(): void;
  /**
   * Specifies all the properties of the `vega-flex` component
   *    in the radio group.
   *
   * @vegaVersion 1.3.0
   */
  vegaFlexProp: VegaFlexProps;
  watchVegaFlexProp(): void;
  /**
   * Specifies whether the radio button within the radio 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 radio group.
   *
   * @vegaVersion 1.3.0
   */
  hint: string;
  /**
   * Sets the validation status for the radio group.
   *
   * @vegaVersion 1.3.0
   */
  isValid: boolean;
  /**
   * Determines whether the radio group is disabled.
   *
   * @vegaVersion 1.8.0
   */
  disabled: boolean;
  watchDisabled(): Promise<void>;
  /**
   * Determines whether automatic validation should be implemented for
   *    the radio group upon selection.
   *
   * @vegaVersion 2.6.0
   */
  autoValidation: boolean;
  /**
   * Defines custom validation rules for the radio group.
   *
   * @vegaVersion 2.6.0
   */
  validationRules: FormFieldValidationRule<unknown>[];
  watchValidationRules(): void;
  /**
   * An event emitter notifying the change of the
   *    checked radio button in the radio group.
   *
   * @vegaVersion 1.0.10
   */
  vegaChange: EventEmitter<string>;
  /**
   * An event emitter notifying the change of the
   *    checked radio button in the radio group.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  change: EventEmitter<string>;
  componentWillLoad(): void;
  componentDidLoad(): void;
  render(): VegaRadioGroup;
  private renderLabelDom;
  private renderRequireDom;
  private renderHintDom;
  private setVegaFlexProperty;
  /**
   * Update radio group value when child radio is changed.
   */
  private childRadioValueChange;
  /**
   * This function notifies a change in the disabled state of a radio group component.
   */
  private notifyGroupDisabledChange;
}
