import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Action } from '../trigger/enum';
import { AdjustOverflow } from './placements';
export declare type TooltipPlacement = 'top' | 'left' | 'right' | 'bottom' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom';
export declare type TooltipTheme = 'light' | 'dark';
export declare type RenderFunction = () => React.ReactNode;
export interface TooltipProps {
    prefixCls?: string;
    suffixCls?: string;
    popupClassName?: string;
    style?: React.CSSProperties;
    popupStyle?: React.CSSProperties;
    placement?: TooltipPlacement;
    builtinPlacements?: Object;
    hidden?: boolean;
    defaultHidden?: boolean;
    onHiddenChange?: (hidden: boolean) => void;
    mouseEnterDelay?: number;
    mouseLeaveDelay?: number;
    transitionName?: string;
    trigger?: Action[];
    openClassName?: string;
    arrowPointAtCenter?: boolean;
    autoAdjustOverflow?: boolean | AdjustOverflow;
    title?: React.ReactNode | RenderFunction;
    overlay?: React.ReactNode | RenderFunction;
    theme?: TooltipTheme;
}
export default class Tooltip extends Component<TooltipProps, any> {
    static displayName: string;
    static propTypes: {
        title: PropTypes.Requireable<any>;
        arrowPointAtCenter: PropTypes.Requireable<boolean>;
        autoAdjustOverflow: PropTypes.Requireable<boolean>;
        defaultHidden: PropTypes.Requireable<boolean>;
        mouseEnterDelay: PropTypes.Requireable<number>;
        mouseLeaveDelay: PropTypes.Requireable<number>;
        placement: PropTypes.Requireable<string>;
        trigger: PropTypes.Requireable<(Action | null | undefined)[]>;
        hidden: PropTypes.Requireable<boolean>;
        onHiddenChange: PropTypes.Requireable<(...args: any[]) => any>;
        suffixCls: PropTypes.Requireable<string>;
        transitionName: PropTypes.Requireable<string>;
        theme: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        suffixCls: string;
        placement: string;
        transitionName: string;
        mouseEnterDelay: number;
        mouseLeaveDelay: number;
        arrowPointAtCenter: boolean;
        autoAdjustOverflow: boolean;
        theme: string;
        defaultHidden: boolean;
        trigger: Action[];
    };
    state: {
        translate: {
            x: number;
            y: number;
        };
    };
    get prefixCls(): string;
    get placements(): any;
    getContent(): any;
    handlePopupAlign(_source: any, _align: any, _target: any, translate: any): void;
    render(): JSX.Element | null;
}
