import * as React from 'react'; import { LayerLevel } from '../../../layer/layer'; import type { ReferenceObject } from '../../internal/reference_wrapper'; import type { Arrow, Boundary, BoundaryPadding, Offset, OnCalculateLayout, OnCalculateLayoutOptions, Placement as FixedPlacement, Rect } from './backend'; export type { FixedPlacement, Offset, Arrow, Rect, OnCalculateLayout, OnCalculateLayoutOptions }; export type OnOutsidePointerDown = (option: OnOutsidePointerDownOptions) => void; export type OnOutsidePointerDownOptions = { target: 'reference' | 'other'; }; export type PinProps = { ref?: React.Ref open: boolean onOutsidePointerDown?: OnOutsidePointerDown blockInsidePointerEvents?: boolean blockOutsidePointerEvents?: boolean onOutsideContextMenu?: (e: React.MouseEvent) => void onCalculateLayout?: OnCalculateLayout reference: React.ReactNode | ReferenceObject placement?: Placement enableFlip?: boolean enableShift?: boolean offset?: Offset boundary?: Boundary boundaryPadding?: BoundaryPadding level?: LayerLevel parentLayer?: HTMLElement children?: React.ReactNode | ((options: ChildrenOptions) => React.ReactNode) }; export type ChildrenOptions = { setArrow: (arrow: Arrow | null) => void }; export type Placement = 'auto' | FixedPlacement | PlacementConfig; type PlacementConfig = { placement: FixedPlacement; rtlAware: boolean; }; export type PinImperativeHandle = { update: () => void }; export declare function Pin( { open, onOutsidePointerDown, blockOutsidePointerEvents, blockInsidePointerEvents, onOutsideContextMenu, onCalculateLayout, reference, placement, enableFlip, enableShift, offset, boundary, boundaryPadding, level, parentLayer, children, ref, }: PinProps ): React.ReactNode;