import * as React from 'react';
import { Primitive } from '@radix-ui/react-primitive';
import { Portal } from '@radix-ui/react-portal';
import { DismissableLayer } from '@radix-ui/react-dismissable-layer';
import * as ArrowPrimitive from '@radix-ui/react-arrow';

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];
interface SelectionProps {
    children?: React.ReactNode;
    open?: boolean;
    defaultOpen?: boolean;
    onOpenChange?(open: boolean): void;
    whileSelect?: boolean;
    disabled?: boolean;
    openDelay?: number;
    closeDelay?: number;
}
declare const Selection: (props: SelectionProps) => JSX.Element;
interface SelectionTriggerProps extends SelectionTriggerImplProps {
}
declare const SelectionTrigger: React.ForwardRefExoticComponent<SelectionTriggerProps & React.RefAttributes<HTMLDivElement>>;
type PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;
interface SelectionTriggerImplProps extends PrimitiveDivProps {
}
type PortalProps = React.ComponentPropsWithoutRef<typeof Portal>;
interface SelectionPortalProps extends Omit<PortalProps, 'asChild'> {
    children?: React.ReactNode;
    forceMount?: true;
}
declare const SelectionPortal: {
    (props: SelectionPortalProps): JSX.Element;
    displayName: string;
};
interface SelectionContentProps extends SelectionContentImplProps {
    forceMount?: true;
}
declare const SelectionContent: React.ForwardRefExoticComponent<SelectionContentProps & React.RefAttributes<HTMLDivElement>>;
type Boundary = Element | null;
type DismissableLayerProps = React.ComponentPropsWithoutRef<typeof DismissableLayer>;
interface SelectionContentImplProps extends PrimitiveDivProps {
    side?: Side;
    sideOffset?: number;
    align?: Align;
    alignOffset?: number;
    arrowPadding?: number;
    collisionBoundary?: Boundary | Boundary[];
    collisionPadding?: number | Partial<Record<Side, number>>;
    sticky?: 'partial' | 'always';
    hideWhenDetached?: boolean;
    avoidCollisions?: boolean;
    onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];
    onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];
    onFocusOutside?: DismissableLayerProps['onFocusOutside'];
    onInteractOutside?: DismissableLayerProps['onInteractOutside'];
}
type ArrowProps = React.ComponentPropsWithoutRef<typeof ArrowPrimitive.Root>;
interface SelectionArrowProps extends ArrowProps {
}
declare const SelectionArrow: React.ForwardRefExoticComponent<SelectionArrowProps & React.RefAttributes<SVGSVGElement>>;

export { SelectionArrow as Arrow, SelectionContent as Content, SelectionPortal as Portal, Selection as Root, SelectionTrigger as Trigger };
