import * as React from "react";
import * as PropTypes from "prop-types";
import { Values } from "../utils/types";
import "./Tooltip.less";
export interface Props {
    children: React.ReactElement;
    className?: string;
    clickTrigger?: boolean;
    content: React.ReactNode;
    delayHideMs?: number;
    delayMs?: number;
    hide?: boolean;
    placement?: Values<typeof Placement>;
    textAlign?: Values<typeof Align>;
    tooltipClassName?: string;
}
interface State {
    showTooltip: boolean;
}
declare const Align: {
    readonly CENTER: "center";
    readonly JUSTIFY: "justify";
    readonly LEFT: "left";
    readonly RIGHT: "right";
};
declare const Placement: {
    readonly BOTTOM: "bottom";
    readonly LEFT: "left";
    readonly RIGHT: "right";
    readonly TOP: "top";
};
export declare const cssClass: {
    CONTENT: string;
    align: (textAlign: any) => string;
};
/**
 * Standardized tooltip component with fade-in/out transition and customizable positioning.
 */
export default class Tooltip extends React.Component<Props, State> {
    static nextID: number;
    static Align: {
        readonly CENTER: "center";
        readonly JUSTIFY: "justify";
        readonly LEFT: "left";
        readonly RIGHT: "right";
    };
    static Placement: {
        readonly BOTTOM: "bottom";
        readonly LEFT: "left";
        readonly RIGHT: "right";
        readonly TOP: "top";
    };
    static propTypes: {
        children: PropTypes.Validator<PropTypes.ReactNodeLike>;
        content: PropTypes.Validator<PropTypes.ReactNodeLike>;
        delayMs: PropTypes.Requireable<number>;
        delayHideMs: PropTypes.Requireable<number>;
        hide: PropTypes.Requireable<boolean>;
        clickTrigger: PropTypes.Requireable<boolean>;
        placement: PropTypes.Requireable<Values<{
            readonly BOTTOM: "bottom";
            readonly LEFT: "left";
            readonly RIGHT: "right";
            readonly TOP: "top";
        }>>;
        textAlign: PropTypes.Requireable<Values<{
            readonly CENTER: "center";
            readonly JUSTIFY: "justify";
            readonly LEFT: "left";
            readonly RIGHT: "right";
        }>>;
        className: PropTypes.Requireable<string>;
        tooltipClassName: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        placement: string;
        textAlign: string;
    };
    constructor(props: Props);
    id: string;
    private tooltipTarget;
    render(): JSX.Element;
}
export {};
