import React, { type HTMLAttributes } from 'react';
import { type OverrideClassName } from "../types/OverrideClassName";
import { type Placement, type PopoverSize } from './types';
export type PopoverProps = {
children: React.ReactNode;
placement?: Placement;
size?: PopoverSize;
heading?: string;
dismissible?: boolean;
onClose?: (event: React.MouseEvent) => void;
singleLine?: boolean;
referenceElement: HTMLElement | null;
} & OverrideClassName>;
/**
* {@link https://cultureamp.design/components/popover/ Guidance} |
* {@link https://cultureamp.design/storybook/?path=/docs/components-popover--default-kaizen-site-demo Storybook}
*/
export declare const Popover: {
({ children, placement, size, heading, dismissible, onClose, singleLine, referenceElement, classNameOverride, ...restProps }: PopoverProps): JSX.Element;
displayName: string;
};
type PopoverPropsWithoutRef = Omit;
/**
* How to use:
*
* const [referenceElementRef, Popover] = usePopover()
*
* return (<>
*
* Hello world
* >)
*
* The purpose of this hook is to abstract away some of the awkwardness with the
* requirement of passing in refs with popper. We need to use `useState` instead
* of `useRef`, which may not be immediately intuitive.
*
* The popper documentation to help provide more context:
* https://popper.js.org/react-popper/v2/hook/
*/
export declare const usePopover: () => [(element: HTMLElement | null) => void, (props: PopoverPropsWithoutRef) => JSX.Element | null];
export {};