/// <reference types="react" />
import { OverlayProps } from '../Overlay/Overlay';
import { BeforeCallback } from '../_hooks/DelayedCallback';
import { TriggerRenderProps } from '../_hooks/Trigger';
import { VisibilityConfig } from '../_hooks/Visibility';
export declare type OverlayTriggerRole = 'dialog' | 'menu' | 'listbox' | 'tooltip' | 'none';
export declare type PickedOverlayProps = Pick<OverlayProps, 'canFlip' | 'padding' | 'placement' | 'shrinkOverlay' | 'arrow'>;
export declare type PickedTriggerProps = Pick<TriggerRenderProps, 'children' | 'trigger'>;
export declare type PickedTriggerRenderProps = Pick<TriggerRenderProps, 'children'>;
export declare type PickedVisibilityProps = Pick<VisibilityConfig, 'afterHide' | 'afterShow' | 'initialIsVisible'>;
export interface OverlayTriggerProps extends PickedOverlayProps, PickedTriggerProps, PickedTriggerRenderProps, PickedVisibilityProps {
    ['aria-labelledby']?: string;
    ['aria-label']?: string;
    ['aria-describedby']?: string;
    ['aria-details']?: string;
    /**
     *  The callback to run before the overlay is hidden. Returning
     *  `false` will prevent hiding.
     * ```
     * (e: event) => boolean | Promise | undefined
     * ```
     * @since 10.19.0
     */
    beforeHide?: BeforeCallback;
    /**
     *  The callback to run before the overlay is shown. Returning
     *  `false` will prevent showing.
     * ```
     * (e: event) => boolean | Promise | undefined
     * ```
     * @since 10.19.0
     */
    beforeShow?: BeforeCallback;
    /**
     * Additional refs to check for clickOutside behavior
     * @since 10.19.0
     */
    clickOutsideIgnoreRefs?: React.RefObject<HTMLElement>[];
    /**
     * The delay when hiding the overlay
     * @since 10.19.0
     */
    hideDelay?: number;
    /**
     * Keys to hide the overlay when the overlay is focused
     * @a11y OverlayTrigger by default closes on tab. To remove tab from closing
     * and have only Esc keys, set "containFocus" to true, or opt-in to a full dialog role.
     * @since 10.19.0
     */
    hideKeys?: {
        overlay: string[];
        target: string[];
    };
    overlay: React.ReactNode;
    /**
     * Restore focus to the target after the overlay is hidden
     * @default true
     * @since 10.19.0
     */
    restoreFocusOnHide?: boolean;
    /**
     * The delay when showing the overlay
     * @since 10.19.0
     */
    showDelay?: number;
    /**
     * Keys to show the overlay when the target is focused
     * @since 10.19.0
     */
    showKeys?: string[];
    /**
     * Toggles overlay visibility
     * @since 11.2.0
     */
    overlayRef?: React.Ref<OverlayTriggerRef>;
    /**
     * Accessibility props.
     * @a11y May opionate "autoFocus" and "containFocus"
     * @since 11.2.0
     */
    role?: OverlayTriggerRole;
    /**
     * Whether to auto focus the first focusable element in the overlay on mount.
     * True by default for role "dialog"
     * @since 11.5.0
     */
    autoFocus?: boolean;
    /**
     * Whether to contain focus inside the overlay, so users cannot move focus outside, for example in a modal dialog.
     * True by default for role "dialog"
     * @since 11.5.0
     * */
    containFocus?: boolean;
    /**
     * By default, role and id are applied to wrapper. But  has knowledge of
     * Set to true, if you want OverlayTrigger to place them on your overlay component.
     *
     * @default false
     * @since 11.5.0
     */
    passA11yPropsToOverlay?: boolean;
}
export interface OverlayTriggerRef {
    /**
     * Show visibility
     * @since 11.2.0
     */
    show: () => void;
    /**
     * Hide overlay
     * @since 11.2.0
     */
    hide: () => void;
}
/**
 * @deprecatedSince 11.2.0
 * @deprecated To be replaced by OverlayTriggerProps#overlayRef in future release
 */
export declare type DeprecatedOverlayTriggerRef = HTMLElement;
