import React from "react";
import { Thread, Room, MatrixEvent } from "matrix-js-sdk/src/matrix";
import ResizeNotifier from "../../utils/ResizeNotifier";
import { RoomPermalinkCreator } from "../../utils/permalinks/Permalinks";
import { Layout } from "../../settings/enums/Layout";
import { E2EStatus } from "../../utils/ShieldUtils";
import EditorStateTransfer from "../../utils/EditorStateTransfer";
import RoomContext from "../../contexts/RoomContext";
interface IProps {
    room: Room;
    onClose: () => void;
    resizeNotifier: ResizeNotifier;
    mxEvent: MatrixEvent;
    permalinkCreator?: RoomPermalinkCreator;
    e2eStatus?: E2EStatus;
    initialEvent?: MatrixEvent;
    isInitialEventHighlighted?: boolean;
    initialEventScrollIntoView?: boolean;
}
interface IState {
    thread?: Thread;
    lastReply?: MatrixEvent | null;
    layout: Layout;
    editState?: EditorStateTransfer;
    replyToEvent?: MatrixEvent;
    narrow: boolean;
}
export default class ThreadView extends React.Component<IProps, IState> {
    static contextType: React.Context<import("./RoomView").IRoomState & {
        threadId?: string;
    }>;
    context: React.ContextType<typeof RoomContext>;
    private dispatcherRef;
    private readonly layoutWatcherRef;
    private timelinePanel;
    private card;
    private eventId;
    constructor(props: IProps, context: React.ContextType<typeof RoomContext>);
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(prevProps: IProps): void;
    private setEventId;
    private onAction;
    private setupThread;
    private onNewThread;
    private updateThreadRelation;
    private get threadLastReply();
    private updateThread;
    private postThreadUpdate;
    private setupThreadListeners;
    private resetJumpToEvent;
    private onMeasurement;
    private onKeyDown;
    private onFileDrop;
    private get threadRelation();
    private renderThreadViewHeader;
    render(): React.ReactNode;
}
export {};
