import { Component } from 'react';
export interface IClampLinesProps {
    text: string;
    lines?: number;
    ellipsis?: string;
    showPop?: boolean;
    popWidth?: number;
    trigger?: 'click' | 'hover' | 'focus';
    renderPop?: (text: string) => React.ReactNode;
    resizable?: boolean;
    extra?: React.ReactNode;
    mode: 'performance' | 'correctness';
    className?: string;
}
export interface IClampLinesState {
    holdsFullText: boolean;
    textSuited: string;
}
export declare class ClampLines extends Component<IClampLinesProps, IClampLinesState> {
    static defaultProps: Partial<IClampLinesProps>;
    element: HTMLDivElement | null;
    innerElement: import("react").RefObject<HTMLSpanElement>;
    resizeObserver: ResizeObserver | null;
    containerWidth: number;
    constructor(props: IClampLinesProps);
    componentDidUpdate(prevProps: IClampLinesProps): void;
    componentDidMount(): void;
    componentWillUnmount(): void;
    handleWindowResize: () => void;
    handleContainerResize: ResizeObserverCallback;
    onContainerRefChange: (node: HTMLDivElement | null) => void;
    onNoClampContainerRefChange: (node: HTMLDivElement | null) => void;
    getResizeObserver(): ResizeObserver;
    observe(node: Element): void;
    clampLines(): void;
    private _clampLinesFast;
    private _clampLinesAccurate;
    getEllipsis(): string;
    renderResizable(): JSX.Element;
    renderClampedText(): JSX.Element;
    render(): JSX.Element;
}
export default ClampLines;
