import { EventEmitter } from '../../stencil-public-runtime';
import { FormFieldValidationRule } from '../../helpers/validator/rules/form-field-validation-rule';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { VegaInputRangeRenderer } from './slimmers/renderers/vega-input-range-renderer';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
import { InputRangeStackType, InputRangeValueType } from './types';
import { VegaInputRangeValueController } from './slimmers/controllers/vega-input-range-value-controller';
import { VegaInputRangeInputRenderer } from './slimmers/renderers/vega-input-range-input-renderer';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { VegaInputRangeClearIconRenderer } from './slimmers/renderers/vega-input-range-clear-icon-renderer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { TranslationSlimmer } from '../../helpers/slimmers/translation';
/**
 * @vegaVersion 2.2.0
 */
export declare class VegaInputRange {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected translationSlimmer: TranslationSlimmer<HTMLVegaInputRangeElement>;
  protected formFieldController: FormFieldControllerSlimmer<InputRangeValueType>;
  protected inputRangeInputRenderer: VegaInputRangeInputRenderer;
  protected clearIconRenderer: VegaInputRangeClearIconRenderer;
  protected inputRangeRenderer: VegaInputRangeRenderer;
  protected valueController: VegaInputRangeValueController;
  protected inputChangeEventPrevent: ChildNodesEventPreventSlimmer;
  protected changeEventEmitter: EventEmitSlimmerBase;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaInputRangeElement>;
  host: HTMLVegaInputRangeElement;
  /**
   * Specifies the label or title for the input range.
   *
   * It provides descriptive text that helps identify the
   *    purpose or content expected in the input field.
   *
   * @vegaVersion 2.2.0
   */
  label: string;
  /**
   * Represents a pre-set or default value for the input field.
   *
   * It allows you to initialize the field with a specific value,
   *    which is displayed to the user when the input is
   *    initially rendered.
   *
   * If the value is too long, it may be truncated with
   *    an ellipsis for visual presentation.
   *
   * @vegaVersion 2.2.0
   */
  value: InputRangeValueType;
  /**
   * The input range component is embedded in other components.
   *
   * If modifying the input value does not meet the requirements
   *    of other components, such as limiting the maximum value, etc.,
   *    you need to modify the value of the input range component and
   *    display it in real time.
   *
   * Since the value of `inputRef` retains the old value,
   *    it needs to be updated manually when a value changes.
   *
   * @param {InputRangeValueType} newValue - The `newValue` parameter represents the new value of the input range.
   * @param {InputRangeValueType} oldValue - The `oldValue` parameter represents the previous value of the input range before it was changed to the `newValue`.
   */
  watchValue(newValue: InputRangeValueType, oldValue: InputRangeValueType): void;
  /**
   * Specifies an icon or symbol that appears before the input range,
   *    providing visual context or enhancing the aesthetic appearance
   *    of the input.
   *
   * @vegaVersion 2.2.0
   */
  prefixIcon: string;
  /**
   * Determines whether the clear icon should be displayed.
   *
   * @vegaVersion 2.2.0
   */
  showClearIcon: boolean;
  /**
   * Sets the minimum allowable numeric value for the input value.
   *
   * @vegaVersion 2.2.0
   */
  min: number;
  /**
   * Sets the maximum allowable numeric value for the input value.
   *
   * @vegaVersion 2.2.0
   */
  max: number;
  /**
   * Determines whether the input range is required.
   *
   * @vegaVersion 2.2.0
   */
  required: boolean;
  /**
   * Indicates whether the current value in the field is considered valid
   *    based on the defined validation rules.
   *
   * @vegaVersion 2.2.0
   */
  isValid: boolean;
  /**
   * Determines whether the input field should undergo automatic validation
   *    during the user's input.
   *
   * @vegaVersion 2.2.0
   */
  autoValidation: boolean;
  /**
   * Defines custom validation rules for the input field.
   *
   * @vegaVersion 2.2.0
   */
  validationRules: FormFieldValidationRule<unknown>[];
  watchValidationRules(): void;
  /**
   * Defines the size of the input range,
   *    specifying its width or length.
   *
   * @vegaVersion 2.2.0
   */
  size: 'default' | 'small';
  /**
   * Specifies a placeholder string that displays as a temporary hint
   *    or example inside the input field.
   *
   * It indicates the expected format or pattern of the input.
   *
   * @vegaVersion 2.2.0
   */
  placeholder: [string, string];
  /**
   * Determines whether the input range is disabled.
   *
   * @vegaVersion 2.2.0
   */
  disabled: boolean;
  /**
   * Provides a supplementary prompt message that assists users in
   *    understanding the expected value for the input field.
   *
   * @vegaVersion 2.2.0
   */
  hint: string;
  /**
   * Determines the arrangement and appearance of
   *    the label and input areas.
   *
   * @vegaVersion 2.2.0
   */
  stack: InputRangeStackType;
  /**
   * An event emitter notifying a value change.
   *
   * @vegaVersion 2.2.0
   */
  vegaChange: EventEmitter<[number, number]>;
  /**
   * An event emitter notifying a value change.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.2.0
   */
  change: EventEmitter<[number, number]>;
  render(): VegaInputRange;
}
