import type { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import type { Animation, ComponentRef, ComponentProps, AnimationBuilder, OverlayInterface, FrameworkDelegate, OverlayEventDetail, ModalBreakpointChangeEventDetail } from '../../interface';
/**
 * @slot - Content for a type of logo or striking figure of the modal.
 *
 * @part backdrop - The `gasco-backdrop` element.
 * @part content - The wrapper element for the default slot.
 * @part handle - The handle that is displayed at the top of the sheet modal when `handle="true"`.
 */
export declare class GascoDialog implements ComponentInterface, OverlayInterface {
  private gesture?;
  private dialogIndex;
  private dialogId?;
  private coreDelegate;
  private currentTransition?;
  private destroyTriggerInteraction?;
  private isSheetModal;
  private currentBreakpoint?;
  private wrapperEl?;
  private backdropEl?;
  private sortedBreakpoints?;
  private keyboardOpenCallback?;
  private moveSheetToBreakpoint?;
  private inline;
  private workingDelegate?;
  private usersElement?;
  private gestureAnimationDismissing;
  lastFocus?: HTMLElement;
  animation?: Animation;
  presented: boolean;
  el: HTMLGascoModalElement;
  /** @internal */
  hasController: boolean;
  /** @internal */
  overlayIndex: number;
  /** @internal */
  delegate?: FrameworkDelegate;
  /**
   * If `true`, the keyboard will be automatically dismissed when the overlay is presented.
   */
  keyboardClose: boolean;
  /**
   * Animation to use when the modal is presented.
   */
  enterAnimation?: AnimationBuilder;
  /**
   * Animation to use when the modal is dismissed.
   */
  leaveAnimation?: AnimationBuilder;
  /**
   * The breakpoints to use when creating a sheet modal. Each value in the
   * array must be a decimal between 0 and 1 where 0 indicates the modal is fully
   * closed and 1 indicates the modal is fully open. Values are relative
   * to the height of the modal, not the height of the screen. One of the values in this
   * array must be the value of the `initialBreakpoint` property.
   * For example: [0, .25, .5, 1]
   */
  breakpoints?: number[];
  /**
   * A decimal value between 0 and 1 that indicates the
   * initial point the modal will open at when creating a
   * sheet modal. This value must also be listed in the
   * `breakpoints` array.
   */
  initialBreakpoint?: number;
  /**
   * A decimal value between 0 and 1 that indicates the
   * point after which the backdrop will begin to fade in
   * when using a sheet modal. Prior to this point, the
   * backdrop will be hidden and the content underneath
   * the sheet can be interacted with. This value is exclusive
   * meaning the backdrop will become active after the value
   * specified.
   */
  backdropBreakpoint: number;
  /**
   * The horizontal line that displays at the top of a sheet modal. It is `true` by default when
   * setting the `breakpoints` and `initialBreakpoint` properties.
   */
  handle?: boolean;
  /**
   * The component to display inside of the modal.
   * @internal
   */
  component?: ComponentRef;
  /**
   * The data to pass to the modal component.
   * @internal
   */
  componentProps?: ComponentProps;
  /**
   * Additional classes to apply for custom CSS. If multiple classes are
   * provided they should be separated by spaces.
   * @internal
   */
  cssClass?: string | string[];
  /**
   * The Modal size.
   */
  size?: 'small' | 'default' | 'large';
  /**
   * If `true`, the dialog will be dismissed when the backdrop is clicked.
   */
  backdropDismiss: boolean;
  /**
   * If `true`, a backdrop will be displayed behind the dialog.
   * This property controls whether or not the backdrop
   * darkens the screen when the dialog is presented.
   * It does not control whether or not the backdrop
   * is active or present in the DOM.
   */
  showBackdrop: boolean;
  /**
   * If `true`, the dialog will animate.
   */
  animated: boolean;
  /**
   * If `true`, the dialog will button close.
   */
  withclose: boolean;
  /**
   * If `"default"`, the dialog will default.
   * For default `"default"`.
   */
  type?: string;
  /**
   * If `true`, the dialog can be swiped to dismiss. Only applies in iOS mode.
   * @deprecated - To prevent modals from dismissing, use canDismiss instead.
   */
  swipeToClose: boolean;
  /**
   * The element that presented the dialog. This is used for card presentation effects
   * and for stacking multiple modals on top of each other. Only applies in iOS mode.
   */
  presentingElement?: HTMLElement;
  /**
   * Additional attributes to pass to the dialog.
   */
  htmlAttributes?: {
    [key: string]: any;
  };
  /**
   * If `true`, the dialog will open. If `false`, the dialog will close.
   * Use this if you need finer grained control over presentation, otherwise
   * just use the modalController or the `trigger` property.
   * Note: `isOpen` will not automatically be set back to `false` when
   * the dialog dismisses. You will need to do that in your code.
   */
  isOpen: boolean;
  onIsOpenChange(newValue: boolean, oldValue: boolean): void;
  /**
   * An ID corresponding to the trigger element that
   * causes the dialog to open when clicked.
   */
  trigger: string | undefined;
  onTriggerChange(): void;
  /**
   * TODO (FW-937)
   * This needs to default to true in the next
   * major release. We default it to undefined
   * so we can force the card dialog to be swipeable
   * when using canDismiss.
   */
  /**
   * Determines whether or not a dialog can dismiss
   * when calling the `dismiss` method.
   *
   * If the value is `true` or the value's function returns `true`, the dialog will close when trying to dismiss.
   * If the value is `false` or the value's function returns `false`, the dialog will not close when trying to dismiss.
   */
  canDismiss?: undefined | boolean | (() => Promise<boolean>);
  /**
   * Emitted after the dialog has presented.
   */
  didPresent: EventEmitter<void>;
  /**
   * Emitted before the dialog has presented.
   */
  willPresent: EventEmitter<void>;
  /**
   * Emitted before the dialog has dismissed.
   */
  willDismiss: EventEmitter<OverlayEventDetail>;
  /**
   * Emitted after the dialog has dismissed.
   */
  didDismiss: EventEmitter<OverlayEventDetail>;
  /**
   * Emitted after the dialog has accepted.
   */
  accepted: EventEmitter;
  /**
   * Emitted after the dialog breakpoint has changed.
   */
  gascoBreakpointDidChange: EventEmitter<ModalBreakpointChangeEventDetail>;
  /**
   * Emitted after the dialog has presented.
   * Shorthand for gascoDialogWillDismiss.
   */
  didPresentShorthand: EventEmitter<void>;
  /**
   * Emitted before the dialog has presented.
   * Shorthand for gascoDialogWillPresent.
   */
  willPresentShorthand: EventEmitter<void>;
  /**
   * Emitted before the dialog has dismissed.
   * Shorthand for gascoDialogWillDismiss.
   */
  willDismissShorthand: EventEmitter<OverlayEventDetail>;
  /**
   * Emitted after the dialog has dismissed.
   * Shorthand for gascoDialogDidDismiss.
   */
  didDismissShorthand: EventEmitter<OverlayEventDetail>;
  /**
   * Emitted after the dialog has accepted.
   * Shorthand for gascoDialogAccepted.
   */
  acceptedShorthand: EventEmitter<OverlayEventDetail>;
  swipeToCloseChanged(enable: boolean): Promise<void>;
  breakpointsChanged(breakpoints: number[] | undefined): void;
  connectedCallback(): void;
  componentWillLoad(): void;
  componentDidLoad(): void;
  private configureTriggerInteraction;
  /**
   * Determines whether or not an overlay
   * is being used inline or via a controller/JS
   * and returns the correct delegate.
   * By default, subsequent calls to getDelegate
   * will use a cached version of the delegate.
   * This is useful for calling dismiss after
   * present so that the correct delegate is given.
   */
  private getDelegate;
  /**
   * Determines whether or not the
   * dialog is allowed to dismiss based
   * on the state of the canDismiss prop.
   */
  private checkCanDismiss;
  /**
   * Present the dialog overlay after it has been created.
   */
  present(): Promise<void>;
  private initSwipeToClose;
  private initSheetGesture;
  private sheetOnDismiss;
  /**
   * Dismiss the dialog overlay after it has been presented.
   *
   * @param role The role of the element that is dismissing the dialog. For example, 'cancel' or 'backdrop'.
   */
  private handleDismiss;
  /**
   * Dismiss the dialog overlay after it has been presented.
   *
   * @param data Any data to emit in the dismiss events.
   * @param role The role of the element that is dismissing the dialog. For example, 'cancel' or 'backdrop'.
   */
  dismiss(data?: any, role?: string): Promise<boolean>;
  /**
   * Returns a promise that resolves when the dialog did dismiss.
   */
  onDidDismiss<T = any>(): Promise<OverlayEventDetail<T>>;
  /**
   * Returns a promise that resolves when the dialog will dismiss.
   */
  onWillDismiss<T = any>(): Promise<OverlayEventDetail<T>>;
  /**
   * Move a sheet style dialog to a specific breakpoint. The breakpoint value must
   * be a value defined in your `breakpoints` array.
   */
  setCurrentBreakpoint(breakpoint: number): Promise<void>;
  /**
   * Returns the current breakpoint of a sheet style dialog
   */
  getCurrentBreakpoint(): Promise<number | undefined>;
  private onBackdropTap;
  private onLifecycle;
  render(): any;
}
