import { VegaDatePicker } from '../../vega-date-picker';
import { ElementAppenderSlimmer } from '../../../../helpers/slimmers/element-appender/element-appender-slimmer';
import { AriaDialogFocusableTrapSlimmer } from '../../../../helpers/slimmers/aria-dialog-focusable-trap-slimmer';
/** The date picker element appender controller slimmer */
export declare class VegaDatePickerCalendarOpenStateController extends ElementAppenderSlimmer {
  dropdownConfig: VegaDatePicker['dropdownConfig'];
  vegaDatePickerRenderer: VegaDatePicker['vegaDatePickerRenderer'];
  vegaDatePickerCalendarRenderer: VegaDatePicker['vegaDatePickerCalendarRenderer'];
  value: VegaDatePicker['value'];
  format: VegaDatePicker['format'];
  mode: VegaDatePicker['mode'];
  isCalendarShow: VegaDatePicker['isCalendarShow'];
  isMobileDevice: VegaDatePicker['isMobileDevice'];
  protected readonly ariaDialogFocusableTrapSlimmer: AriaDialogFocusableTrapSlimmer;
  private clearCalendarStateTaskQueue;
  /**
   * Since connectedCallback will init element appender again, and it will add `vega-force-hidden` class to calendar,
   *   so we should skip this in mobile side.
   */
  connectedCallback(): void;
  /**
   * Since it not init the element appender in mobile side, we also not need destroy element appender in disconnectedCallback.
   */
  disconnectedCallback(): void;
  /**
   * Since componentDidLoad will init element appender, and it will add `vega-force-hidden` class to calendar,
   *   so we should skip this in mobile side.
   */
  componentDidLoad(): void;
  /**
   * We need to clear the calendar state when the property or state of the vega-date-picker is completed,
   *   such as when the user inputs a range value. we can refill the selecting state in calendar according the new value.
   */
  componentDidRender(): Promise<void>;
  /**
   * Sets up the configuration the element appender of date picker.
   */
  constructor();
  /** doOpen */
  doOpen(): Promise<void>;
  /** doClose */
  doClose(): Promise<void>;
  /** watchDisabled */
  watchDisabled(): Promise<void>;
  /** watch calendar show state */
  watchIsCalendarShow(): Promise<void>;
  /**
   * Watch isCalendarShow state change to clear selecting state in calendar.
   */
  showCalendar(): Promise<void>;
  /**
   * Hide calendar in both mobile and desktop mode.
   * After hiding, focuses the input container with a temporary
   * aria-label so the screen reader announces the selection.
   */
  hideCalendar(): Promise<void>;
  /**
   * Update isCalendarShow state.
   *
   * @param {boolean} isShow - is calendar show
   */
  updateIsCalendarShowState(isShow: boolean): void;
  /**
   * Focus the input container div with a temporary aria-label.
   * VoiceOver always reads aria-label on programmatic .focus().
   *
   * The role, aria-label, and tabIndex attributes are set imperatively
   * only during the announcement and removed on blur, so they don't
   * interfere with VoiceOver navigation while the calendar is open.
   */
  private focusContainerWithAnnouncement;
  /**
   * Builds an aria announcement string based on the selected date value.
   *
   * @param {DatePickerValueType<DatePickerModeType>} value The date picker value to build announcement for
   * @returns {string} The aria announcement string
   */
  private buildAriaAnnouncement;
  /**
   * Clear selecting state in calendar.
   */
  private clearCalendarSelectingState;
}
