/**
* DevExtreme (ui/popover.d.ts)
* Version: 21.1.0 (build 21016-0316)
* Build date: Sat Jan 16 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import {
    animationConfig
} from '../animation/fx';

import {
    positionConfig
} from '../animation/position';

import '../jquery_augmentation';

import {
    event
} from '../events/index';

import dxPopup, {
    dxPopupAnimation,
    dxPopupOptions
} from './popup';

/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export interface dxPopoverOptions<T = dxPopover> extends dxPopupOptions<T> {
    /**
     */
    animation?: dxPopoverAnimation;
    /**
     */
    closeOnOutsideClick?: boolean | ((event: event) => boolean);
    /**
     */
    height?: number | string | (() => number | string);
    /**
     */
    hideEvent?: {
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      delay?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      name?: string
    } | string;
    /**
     */
    position?: 'bottom' | 'left' | 'right' | 'top' | positionConfig;
    /**
     */
    shading?: boolean;
    /**
     */
    showEvent?: {
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      delay?: number,
    /**
     * Warning! This type is used for internal purposes. Do not import it directly.
     */
      name?: string
    } | string;
    /**
     */
    showTitle?: boolean;
    /**
     */
    target?: string | Element | JQuery;
    /**
     */
    width?: number | string | (() => number | string);
}
/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export interface dxPopoverAnimation extends dxPopupAnimation {
    /**
     * An object that defines the animation properties used when the UI component is being hidden.
     */
    hide?: animationConfig;
    /**
     * An object that defines the animation properties used when the UI component is being shown.
     */
    show?: animationConfig;
}
/**
 */
export default class dxPopover extends dxPopup {
    constructor(element: Element, options?: dxPopoverOptions)
    constructor(element: JQuery, options?: dxPopoverOptions)
    show(): Promise<boolean> & JQueryPromise<boolean>;
    /**
     */
    show(target: string | Element | JQuery): Promise<boolean> & JQueryPromise<boolean>;
}

declare global {
interface JQuery {
    dxPopover(): JQuery;
    dxPopover(options: "instance"): dxPopover;
    dxPopover(options: string): any;
    dxPopover(options: string, ...params: any[]): any;
    dxPopover(options: dxPopoverOptions): JQuery;
}
}
/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export type Options = dxPopoverOptions;

/** @deprecated use Options instead */
/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export type IOptions = dxPopoverOptions;
