import { GascoConfig } from './config';
import type { Animation, AnimationBuilder, HTMLGascoOverlayElement, OverlayInterface, ModalOptions, PopoverOptions, ToastOptions } from '../interface';
export declare const activeAnimations: WeakMap<OverlayInterface, Animation[]>;
export declare const popoverController: {
  create(options: PopoverOptions<import("../interface").ComponentRef>): Promise<HTMLGascoPopoverElement>;
  dismiss(data?: any, role?: string, id?: string): Promise<boolean>;
  getTop(): Promise<HTMLGascoPopoverElement>;
};
export declare const toastController: {
  create(options: ToastOptions): Promise<HTMLGascoToastElement>;
  dismiss(data?: any, role?: string, id?: string): Promise<boolean>;
  getTop(): Promise<HTMLGascoToastElement>;
};
export declare const modalController: {
  create(options: ModalOptions<import("../interface").ComponentRef>): Promise<HTMLGascoModalElement>;
  dismiss(data?: any, role?: string, id?: string): Promise<boolean>;
  getTop(): Promise<HTMLGascoModalElement>;
};
export declare const prepareOverlay: <T extends HTMLGascoOverlayElement>(el: T) => void;
export declare const createOverlay: <T extends HTMLGascoOverlayElement>(tagName: string, opts: object | undefined) => Promise<T>;
export declare const focusFirstDescendant: (ref: Element, overlay: HTMLGascoOverlayElement) => void;
export declare const dismissOverlay: (doc: Document, data: any, role: string | undefined, overlayTag: string, id?: string) => Promise<boolean>;
export declare const getOverlays: (doc: Document, selector?: string) => HTMLGascoOverlayElement[];
/**
 * Returns an overlay element
 * @param doc The document to find the element within.
 * @param overlayTag The selector for the overlay, defaults to Ionic overlay components.
 * @param id The unique identifier for the overlay instance.
 * @returns The overlay element or `undefined` if no overlay element is found.
 */
export declare const getOverlay: (doc: Document, overlayTag?: string, id?: string) => HTMLGascoOverlayElement | undefined;
/**
 * When an overlay is presented, the main
 * focus is the overlay not the page content.
 * We need to remove the page content from the
 * accessibility tree otherwise when
 * users use "read screen from top" gestures with
 * TalkBack and VoiceOver, the screen reader will begin
 * to read the content underneath the overlay.
 *
 * We need a container where all page components
 * exist that is separate from where the overlays
 * are added in the DOM. For most apps, this element
 * is the top most gasco-router-outlet. In the event
 * that devs are not using a router,
 * they will need to add the "gasco-view-container-root"
 * id to the element that contains all of their views.
 *
 * TODO: If Framework supports having multiple top
 * level router outlets we would need to update this.
 * Example: One outlet for side menu and one outlet
 * for main content.
 */
export declare const setRootAriaHidden: (hidden?: boolean) => void;
export declare const present: (overlay: OverlayInterface, name: keyof GascoConfig, mdEnterAnimation: AnimationBuilder, opts?: any) => Promise<void>;
export declare const dismiss: (overlay: OverlayInterface, data: any | undefined, role: string | undefined, name: keyof GascoConfig, mdLeaveAnimation: AnimationBuilder, opts?: any) => Promise<boolean>;
export declare const eventMethod: <T>(element: HTMLElement, eventName: string) => Promise<T>;
export declare const onceEvent: (element: HTMLElement, eventName: string, callback: (ev: Event) => void) => void;
export declare const isCancel: (role: string | undefined) => boolean;
/**
 * Calls a developer provided method while avoiding
 * Angular Zones. Since the handler is provided by
 * the developer, we should throw any errors
 * received so that developer-provided bug
 * tracking software can log it.
 */
export declare const safeCall: (handler: any, arg?: any) => any;
export declare const BACKDROP = "backdrop";
