import { type ElementType, PureComponent, type ReactNode } from "react";
import { type IAlignPoint } from "../typings/positioning.js";
export declare function getShortenedTitle(title: string, element: Pick<HTMLElement, "scrollWidth" | "getBoundingClientRect">, ellipsisPosition?: string): string;
/**
 * @internal
 */
export interface IShortenedTextProps {
    children: string;
    className?: string;
    tagName?: ElementType;
    tooltipAlignPoints?: IAlignPoint[];
    tooltipVisibleOnMouseOver?: boolean;
    getElement?: (context: any) => Pick<HTMLElement, "scrollWidth" | "getBoundingClientRect">;
    displayTooltip?: boolean;
    ellipsisPosition?: "middle" | "end";
    id?: string;
}
/**
 * @internal
 */
export interface IShortenedTextState {
    title: string;
    customTitle: boolean;
}
/**
 * To make this component work, parent container needs this:
 *      max-width: Xpx;
 *      white-space: nowrap;
 *
 * and the component itself needs:
 *      display: inline-block;
 *      width: 100%;
 *      white-space: nowrap;
 */
/**
 * @internal
 */
export declare class ShortenedText extends PureComponent<IShortenedTextProps, IShortenedTextState> {
    static defaultProps: Pick<IShortenedTextProps, "className" | "tagName" | "tooltipAlignPoints" | "tooltipVisibleOnMouseOver" | "getElement" | "displayTooltip" | "ellipsisPosition">;
    textRef: import("react").RefObject<HTMLElement | null>;
    constructor(props: IShortenedTextProps);
    componentDidMount(): void;
    UNSAFE_componentWillReceiveProps(nextProps: IShortenedTextProps): void;
    componentDidUpdate(): void;
    checkTitle(): void;
    recomputeShortening(): void;
    renderTextWithBubble(): ReactNode;
    renderText(): ReactNode;
    render(): ReactNode;
}
//# sourceMappingURL=ShortenedText.d.ts.map