import { Arrow as ArrowPrimitive } from "@loke/ui/arrow";
import { Primitive } from "@loke/ui/primitive";
import type { Measurable } from "@loke/ui/rect";
import { type ComponentPropsWithoutRef, type FC, type ReactNode, type RefObject } from "react";
declare const SIDE_OPTIONS: readonly ["top", "right", "bottom", "left"];
declare const ALIGN_OPTIONS: readonly ["start", "center", "end"];
type Side = (typeof SIDE_OPTIONS)[number];
type Align = (typeof ALIGN_OPTIONS)[number];
declare const createPopperScope: import("@loke/ui/context").CreateScope;
interface PopperProps {
    children?: ReactNode;
}
declare const Popper: FC<PopperProps>;
type PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;
interface PopperAnchorProps extends PrimitiveDivProps {
    virtualRef?: RefObject<Measurable>;
}
declare const PopperAnchor: import("react").ForwardRefExoticComponent<PopperAnchorProps & import("react").RefAttributes<HTMLDivElement>>;
type Boundary = Element | null;
interface PopperContentProps extends PrimitiveDivProps {
    align?: Align;
    alignOffset?: number;
    arrowPadding?: number;
    avoidCollisions?: boolean;
    collisionBoundary?: Boundary | Boundary[];
    collisionPadding?: number | Partial<Record<Side, number>>;
    hideWhenDetached?: boolean;
    onPlaced?: () => void;
    side?: Side;
    sideOffset?: number;
    sticky?: "partial" | "always";
    updatePositionStrategy?: "optimized" | "always";
}
declare const PopperContent: import("react").ForwardRefExoticComponent<PopperContentProps & import("react").RefAttributes<HTMLDivElement>>;
type ArrowProps = ComponentPropsWithoutRef<typeof ArrowPrimitive>;
type PopperArrowProps = ArrowProps;
declare const PopperArrow: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").SVGProps<SVGSVGElement> & {
    asChild?: boolean;
}, "ref"> & import("react").RefAttributes<SVGSVGElement>, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
declare const Root: FC<PopperProps>;
declare const Anchor: import("react").ForwardRefExoticComponent<PopperAnchorProps & import("react").RefAttributes<HTMLDivElement>>;
declare const Content: import("react").ForwardRefExoticComponent<PopperContentProps & import("react").RefAttributes<HTMLDivElement>>;
declare const Arrow: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").SVGProps<SVGSVGElement> & {
    asChild?: boolean;
}, "ref"> & import("react").RefAttributes<SVGSVGElement>, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
export { createPopperScope, Popper, PopperAnchor, PopperContent, PopperArrow, Root, Anchor, Content, Arrow, SIDE_OPTIONS, ALIGN_OPTIONS, };
export type { PopperProps, PopperAnchorProps, PopperContentProps, PopperArrowProps, };
