/**
 * MSKCC DSM 2021, 2023
 */
import PropTypes from 'prop-types';
import { type ElementType, type ReactNode } from 'react';
import { type PopoverAlignment } from '../Popover';
type ToggletipLabelProps<E extends ElementType> = {
    as?: E | undefined;
    children?: ReactNode;
    className?: string | undefined;
};
/**
 * Used to render the label for a Toggletip
 */
export declare function ToggletipLabel<E extends ElementType>({ as: BaseComponent, children, className: customClassName, }: ToggletipLabelProps<E>): JSX.Element;
export declare namespace ToggletipLabel {
    var propTypes: {
        /**
         * Provide a custom element or component to render the top-level node for the
         * component.
         */
        as: PropTypes.Requireable<PropTypes.ReactComponentLike>;
        /**
         * Custom children to be rendered as the content of the label
         */
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * Provide a custom class name to be added to the outermost node in the
         * component
         */
        className: PropTypes.Requireable<string>;
    };
}
interface ToggletipProps<E extends ElementType> {
    align?: PopoverAlignment | undefined;
    as?: E | undefined;
    className?: string | undefined;
    children?: ReactNode;
    defaultOpen?: boolean | undefined;
}
/**
 * Used as a container for the button and content of a toggletip. This component
 * is responsible for coordinating between interactions with the button and the
 * visibility of the content
 */
export declare function Toggletip<E extends ElementType = 'span'>({ align, as, className: customClassName, children, defaultOpen, }: ToggletipProps<E>): JSX.Element;
export declare namespace Toggletip {
    var propTypes: {
        /**
         * Specify how the toggletip should align with the button
         */
        align: PropTypes.Requireable<string>;
        /**
         * Provide a custom element or component to render the top-level node for the
         * component.
         */
        as: PropTypes.Requireable<PropTypes.ReactComponentLike>;
        /**
         * Custom children to be rendered as the content of the label
         */
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * Provide a custom class name to be added to the outermost node in the
         * component
         */
        className: PropTypes.Requireable<string>;
        /**
         * Specify if the toggletip should be open by default
         */
        defaultOpen: PropTypes.Requireable<boolean>;
    };
}
interface ToggletipButtonProps {
    children?: ReactNode;
    className?: string | undefined;
    label?: string | undefined;
}
/**
 * `ToggletipButton` controls the visibility of the Toggletip through mouse
 * clicks and keyboard interactions.
 */
export declare function ToggletipButton({ children, className: customClassName, label, }: ToggletipButtonProps): JSX.Element;
export declare namespace ToggletipButton {
    var propTypes: {
        /**
         * Custom children to be rendered as the content of the label
         */
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * Provide a custom class name to be added to the outermost node in the
         * component
         */
        className: PropTypes.Requireable<string>;
        /**
         * Provide an accessible label for this button
         */
        label: PropTypes.Requireable<string>;
    };
}
interface ToggletipContentProps {
    children?: ReactNode;
    className?: string | undefined;
}
/**
 * `ToggletipContent` is a wrapper around `PopoverContent`. It places the
 * `children` passed in as a prop inside of `PopoverContent` so that they will
 * be rendered inside of the popover for this component.
 */
export declare function ToggletipContent({ children, className: customClassName, }: ToggletipContentProps): JSX.Element;
export declare namespace ToggletipContent {
    var propTypes: {
        /**
         * Custom children to be rendered as the content of the label
         */
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * Provide a custom class name to be added to the outermost node in the
         * component
         */
        className: PropTypes.Requireable<string>;
    };
}
interface ToggleTipActionsProps {
    children?: ReactNode;
    className?: string | undefined;
}
/**
 * `ToggletipActions` is a container for one or two actions present at the base
 * of a toggletip. It is used for layout of these items.
 */
export declare function ToggletipActions({ children, className: customClassName, }: ToggleTipActionsProps): JSX.Element;
export declare namespace ToggletipActions {
    var propTypes: {
        /**
         * Custom children to be rendered as the content of the label
         */
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * Provide a custom class name to be added to the outermost node in the
         * component
         */
        className: PropTypes.Requireable<string>;
    };
}
export {};
