import * as React from "react";
import { PlacementData } from "@radix-ui/popper";
import { DialogActions, DialogInitialState, DialogState } from "../dialog";
export declare type PopoverState = DialogState & PlacementData & {
    side: "top" | "bottom" | "left" | "right";
    align: "start" | "center" | "end";
    sideOffset: number;
    alignOffset: number;
    arrowOffset: number;
    collisionTolerance: number;
    anchor: HTMLDivElement | null;
    popper: HTMLDivElement | null;
    arrow: HTMLDivElement | null;
};
export declare type PopoverActions = DialogActions & {
    setSide: React.Dispatch<React.SetStateAction<PopoverState["side"]>>;
    setAlign: React.Dispatch<React.SetStateAction<PopoverState["align"]>>;
    setSideOffset: React.Dispatch<React.SetStateAction<number>>;
    setAlignOffset: React.Dispatch<React.SetStateAction<number>>;
    setArrowOffset: React.Dispatch<React.SetStateAction<number>>;
    setCollisionTolerance: React.Dispatch<React.SetStateAction<number>>;
    setAnchor: React.Dispatch<React.SetStateAction<HTMLDivElement | null>>;
    setPopper: React.Dispatch<React.SetStateAction<HTMLDivElement | null>>;
    setArrow: React.Dispatch<React.SetStateAction<HTMLDivElement | null>>;
};
export declare type PopoverStateReturn = PopoverState & PopoverActions;
export declare type PopoverInitialState = DialogInitialState & Partial<Pick<PopoverState, "side" | "align" | "sideOffset" | "alignOffset" | "arrowOffset" | "collisionTolerance">> & {
    enableCollisionsDetection?: boolean;
};
export declare const usePopoverState: (props?: PopoverInitialState) => PopoverStateReturn;
