import { EventEmitter } from '../../stencil-public-runtime';
import { MarginType, PaddingType, ResponsiveType, SizeType } from '../../types/ui.type';
import { BreakpointsTokenType } from '../../types/design-token.type';
import { VegaModalBackdrop, VegaModalBackdropColor } from './types';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { ComponentGlobalStyleSlimmer } from '../../helpers/slimmers/component-global-style-slimmer';
import { DeprecatedPropertySlimmerBase } from '../../helpers/slimmers/deprecated-property-slimmer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaNestedModalController } from './slimmers/controllers/vega-nested-modal-controller';
import { VegaModalRenderer } from './slimmers/renderers/vega-modal-renderer';
import { VegaModalMobileController } from './slimmers/controllers/vega-modal-mobile-controller';
import { VegaModalScrollController } from './slimmers/controllers/vega-modal-scroll-controller';
import { VegaModalOpenStateController } from './slimmers/controllers/vega-modal-open-state-controller';
import { VegaModalBackdropController } from './slimmers/controllers/vega-modal-backdrop-controller';
import { VegaModalOpenedModalStackController } from './slimmers/controllers/vega-modal-opened-modal-stack-controller';
import { VegaModalZIndexController } from './slimmers/controllers/vega-modal-z-index-controller';
import { VegaModalOpenState } from './slimmers/models/vega-modal-open-state';
/**
 * @vegaVersion 1.0.6
 */
export declare class VegaModal {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected readonly nestedModalController: VegaNestedModalController;
  protected readonly openStateController: VegaModalOpenStateController;
  protected readonly mobileController: VegaModalMobileController;
  protected readonly scrollController: VegaModalScrollController;
  protected readonly backdropController: VegaModalBackdropController;
  protected readonly openedModalStackController: VegaModalOpenedModalStackController;
  protected readonly zIndexController: VegaModalZIndexController;
  protected readonly renderer: VegaModalRenderer;
  protected openEventEmitter: EventEmitSlimmerBase;
  protected closeEventEmitter: EventEmitSlimmerBase;
  protected childNodesEventPrevent: ChildNodesEventPreventSlimmer;
  protected readonly componentGlobalStyleSlimmer: ComponentGlobalStyleSlimmer<HTMLVegaModalElement>;
  protected readonly deprecatedPropertySlimmer: DeprecatedPropertySlimmerBase<boolean>;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaModalElement>;
  host: HTMLVegaModalElement;
  currentBreakpoint: BreakpointsTokenType;
  openState: VegaModalOpenState;
  watchOpenState(): void;
  /**
   * Provides options for controlling the behavior of the backdrop.
   * - `default`:
   *      indicates that the user can close the modal
   *      by clicking on the backdrop.
   * - `static`:
   *      means that the user cannot close the modal by
   *      clicking on the backdrop.
   * - `none`:
   *      specifies that the backdrop will not be rendered.
   *
   * _Note_:
   *    When changing this value, a page refresh is required
   *    for the changes to take effect.
   *
   * @vegaVersion 1.0.6
   */
  backdrop: VegaModalBackdrop;
  /**
   * Determines the size of the modal.
   *
   * It can be specified as a number, a percentage string ending with "%",
   *    or a ResponsiveType.
   *
   * It is important to note that there are different maximum widths
   *    for modal windows based on the viewport size. If the specified size exceeds
   *    the maximum width, the maximum modal width will be used instead.
   *
   * @vegaVersion 1.0.6
   */
  size: ResponsiveType<SizeType>;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-modal-size-number-e2e}
   * @see{module:vega-modal-size-responsive-e2e}
   */
  watchSize(): void;
  /**
   * Determines the height of the modal.
   *
   * It accepts numeric values (interpreted as pixels), string values (e.g., "100%", "100vh"),
   *    or ResponsiveType for responsive configurations.
   *
   * @vegaVersion 2.81.0
   */
  height: ResponsiveType<number | string>;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-modal-height-e2e}
   */
  watchHeight(): void;
  /**
   * Determines whether the modal is initially open.
   *
   * @vegaVersion 1.0.6
   */
  open: boolean;
  watchOpen(): void;
  /**
   * Specifies whether the modal uses an animated transition
   *    when it appears.
   *
   * @vegaVersion 1.0.11
   */
  animation: boolean;
  /**
   * Represents the title displayed within the modal.
   *
   * @vegaVersion 1.3.0
   */
  modalTitle: string;
  /**
   * Specifies the background color of the modal's backdrop.
   *
   * @vegaVersion 1.3.0
   */
  backdropColor: VegaModalBackdropColor;
  /**
   * Determines whether the modal is vertically centered
   *    on the screen.
   * @deprecated This property will be removed soon and replaced by prop isVerticallyCentered
   *
   * @vegaVersion 1.3.0
   */
  isVerticallyCenter: boolean;
  /**
   * Determines whether the modal is vertically centered
   *    on the screen.
   *
   * @vegaVersion 2.2.0
   */
  isVerticallyCentered: boolean;
  /**
   * Determines whether the modal displays a close button to
   *    allow hiding or closing of the modal.
   *
   * @vegaVersion 1.3.0
   */
  showCloseButton: boolean;
  /**
   * Specifies the amount of space or padding within the modal.
   *
   * It can be set as a ResponsiveType or any size value.
   *
   * @vegaVersion 1.0.10
   */
  padding: ResponsiveType<PaddingType>;
  /**
   * Specifies the margin around the modal dialog.
   *
   * It accepts a ResponsiveType or size values.
   * Set `x` to `auto` to horizontally center the modal.
   *
   * @vegaVersion 2.81.0
   */
  margin: ResponsiveType<MarginType>;
  /**
   * Defines the maximum height of the content within
   *    the modal element.
   *
   * It accepts values in numeric, string and ResponsiveType.
   * Numeric values represent maximum height of the content in pixels
   *    (e.g., 100 translates to 100px).
   * String values allow the use of CSS units like 'vh' or 'calc' expressions.
   *    (e.g., '100vh' or 'calc(100vh - 20px)').
   *
   * @vegaVersion 1.4.0
   */
  contentMaxHeight: ResponsiveType<number | string>;
  watchContentMaxHeight(): void;
  /**
   * Provides a callback function that is triggered when a user clicks the
   *    close button located in the top right corner of the modal.
   *
   * If the callback function returns `true`, the modal will be closed.
   *
   * If the callback function returns `false` or does not return any value, the modal will remain open.
   *
   * @vegaVersion 1.22.0
   */
  handleClose: (() => boolean) | undefined;
  /**
   * An event emitter notifying the modal close event.  If a method is defined for this event, invoking event.preventDefault() prevents the modal from closing.
   *
   * @vegaVersion 1.0.10
   */
  vegaClose: EventEmitter;
  /**
   * An event emitter notifying the modal close event.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  close: EventEmitter;
  /**
   * An event emitter notifying the modal open event.
   *
   * @vegaVersion 1.0.10
   */
  vegaOpen: EventEmitter;
  /**
   * An event emitter notifying the modal open event. The event name is not `open` because already has a property `open`
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  modalOpen: EventEmitter;
  /**
   * Clicking on a non-static current modal should close this modal, not other modals.
   * The below method is e2e-test covered in
   * @see{module:vega-modal-toggle-interactive-e2e}
   */
  listenDataTarget(e: MouseEvent): void;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-modal-toggle-interactive-e2e}
   */
  listenDataDismiss(e: MouseEvent): void;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-modal-backdrop-mousedown-mouseup-e2e}
   */
  listenMouseDown(e: MouseEvent): void;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-modal-backdrop-mousedown-mouseup-e2e}
   */
  listenMouseUp(e: MouseEvent): void;
  /**
   * Invoke this method to show or hide the modal.
   *
   * @vegaVersion 1.0.6
   */
  modal(option: 'show' | 'hide'): Promise<void>;
  render(): VegaModal;
  /**
   * Returns the initial open state of the modal.
   */
  private initOpenState;
}
