import { Component } from 'react';
import Popover, { IPositionFunction, IPopoverClickTriggerChildProps, IPopoverClickTriggerProps, IPopoverTriggerProps, IPopoverHoverTriggerChildProps, IPopoverHoverTriggerProps, IPopoverFocusTriggerChildProps, IPopoverFocusTriggerProps, IPopoverBeforeHook } from '../popover';
import { IPopActionCallback } from './Action';
export interface IPopNoneTriggerProps<Props = {}> extends IPopoverTriggerProps<Props>, IPopCommonProps {
    trigger: 'none';
}
export interface IPopClickTriggerProps<Props extends IPopoverClickTriggerChildProps> extends IPopoverClickTriggerProps<Props>, IPopCommonProps {
    trigger: 'click';
}
export interface IPopHoverTriggerProps<Props extends IPopoverHoverTriggerChildProps> extends IPopoverHoverTriggerProps<Props>, IPopCommonProps {
    trigger: 'hover';
    mouseEnterDelay?: number;
    mouseLeaveDelay?: number;
    fixMouseEventsOnDisabledChildren?: boolean;
}
export interface IPopFocusTriggerProps<Props extends IPopoverFocusTriggerChildProps> extends IPopoverFocusTriggerProps<Props>, IPopCommonProps {
    trigger: 'focus';
}
export declare type PopPositions = 'left-top' | 'left-center' | 'left-bottom' | 'right-top' | 'right-center' | 'right-bottom' | 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'auto-bottom-center' | 'auto-bottom-left' | 'auto-bottom-right' | 'auto-top-center' | 'auto-top-left' | 'auto-top-right';
export interface IPopCommonProps {
    content: React.ReactNode;
    position?: PopPositions | IPositionFunction;
    cushion?: number;
    centerArrow?: boolean;
    header?: React.ReactNode;
    onShow?: () => void;
    onClose?: () => void;
    onBeforeShow?: IPopoverBeforeHook;
    onBeforeClose?: IPopoverBeforeHook;
    type?: 'primary' | 'default' | 'danger' | 'success';
    visible?: boolean;
    onVisibleChange?: (visible: boolean) => void;
    onPositionUpdated?: () => void;
    onPositionReady?: () => void;
    className?: string;
    style?: React.CSSProperties;
    containerSelector?: string;
    onConfirm?: IPopActionCallback;
    onCancel?: IPopActionCallback;
    confirmText?: string;
    cancelText?: string;
}
export declare type IPopProps = IPopNoneTriggerProps<any> | IPopClickTriggerProps<any> | IPopHoverTriggerProps<any> | IPopFocusTriggerProps<any>;
export interface IPopState {
    confirmPending: boolean;
    cancelPending: boolean;
}
export declare class Pop extends Component<IPopProps, IPopState> {
    static defaultProps: {
        trigger: string;
        position: string;
        cushion: number;
        type: string;
        mouseLeaveDelay: number;
        mouseEnterDelay: number;
        containerSelector: string;
    };
    static withPop: <Props extends Record<"pop", Popover> = Record<"pop", Popover>>(Base: import("react").ComponentType<Props>) => import("react").ForwardRefExoticComponent<import("react").PropsWithoutRef<Omit<Props, "pop">> & import("react").RefAttributes<any>>;
    private popoverRef;
    private isUnmounted;
    state: {
        confirmPending: boolean;
        cancelPending: boolean;
    };
    changePending: (key: keyof IPopState, pending: boolean, callback?: () => void) => void;
    adjustPosition(): void;
    getWrappedPopover(): Popover;
    renderTrigger(): JSX.Element;
    componentWillUnmount(): void;
    render(): JSX.Element;
}
export default Pop;
