import { Renderable, TNode, Value } from '@tempots/dom';
import { Placement } from '@tempots/ui';
export type FlyoutTrigger = 'hover' | 'focus' | 'hover-focus' | 'click' | 'never';
export type FlyoutTriggerFunction = (show: () => void, hide: () => void) => TNode;
export interface PopOverArrowOptions {
    placement: string;
    x?: number;
    y?: number;
    centerOffset: number;
    containerWidth: number;
    containerHeight: number;
}
export interface FlyoutOptions {
    /** The flyout content to display */
    content: () => TNode;
    /** Placement of the flyout relative to the trigger element */
    placement?: Value<Placement>;
    /** Delay in milliseconds before showing the flyout on hover */
    showDelay?: Value<number>;
    /** Delay in milliseconds before hiding the flyout after mouse leave */
    hideDelay?: Value<number>;
    /** Offset in pixels from the main axis (vertical for top/bottom, horizontal for left/right) */
    mainAxisOffset?: Value<number>;
    /** Offset in pixels from the cross axis (horizontal for top/bottom, vertical for left/right) */
    crossAxisOffset?: Value<number>;
    /** How to show the flyout */
    showOn?: Value<FlyoutTrigger> | FlyoutTriggerFunction;
    /** Whether the flyout can be closed with Escape key or clicking outside */
    closable?: Value<boolean>;
    /** Optional arrow configuration - receives a signal with PopOver positioning data */
    arrow?: (signal: any) => TNode;
    /** Additional role attribute for accessibility */
    role?: Value<string>;
    /** Optional aria-haspopup value for the trigger element */
    hasPopup?: Value<boolean | 'dialog' | 'menu' | 'listbox' | 'tree' | 'grid'>;
}
/**
 * Flyout component that provides a flexible popover with various trigger options.
 * This is the base component that powers Tooltip and other overlay components.
 *
 * Unlike other flyout libraries, this component is designed to be a child of the element
 * it provides a flyout for, rather than wrapping it.
 *
 * Uses @tempo-ts/ui PopOver for positioning.
 */
export declare function Flyout(options: FlyoutOptions): Renderable;
