import React from "react";
import { IEventRelation, MatrixEvent, Room, RoomMember } from "matrix-js-sdk/src/matrix";
import { RoomPermalinkCreator } from "../../../utils/permalinks/Permalinks";
import ResizeNotifier from "../../../utils/ResizeNotifier";
import { E2EStatus } from "../../../utils/ShieldUtils";
import RoomContext from "../../../contexts/RoomContext";
import { MatrixClientProps } from "../../../contexts/MatrixClientContext";
interface IProps extends MatrixClientProps {
    room: Room;
    resizeNotifier: ResizeNotifier;
    permalinkCreator?: RoomPermalinkCreator;
    replyToEvent?: MatrixEvent;
    relation?: IEventRelation;
    e2eStatus?: E2EStatus;
    compact?: boolean;
}
interface IState {
    composerContent: string;
    isComposerEmpty: boolean;
    haveRecording: boolean;
    recordingTimeLeftSeconds?: number;
    me?: RoomMember;
    isMenuOpen: boolean;
    isStickerPickerOpen: boolean;
    showStickersButton: boolean;
    showPollsButton: boolean;
    showVoiceBroadcastButton: boolean;
    isWysiwygLabEnabled: boolean;
    isRichTextEnabled: boolean;
    initialComposerContent: string;
}
export declare class MessageComposer extends React.Component<IProps, IState> {
    private dispatcherRef?;
    private messageComposerInput;
    private voiceRecordingButton;
    private ref;
    private instanceId;
    private _voiceRecording;
    static contextType: React.Context<import("../../structures/RoomView").IRoomState & {
        threadId?: string;
    }>;
    context: React.ContextType<typeof RoomContext>;
    static defaultProps: {
        compact: boolean;
        showVoiceBroadcastButton: boolean;
        isRichTextEnabled: boolean;
    };
    constructor(props: IProps, context: React.ContextType<typeof RoomContext>);
    private get voiceRecording();
    private set voiceRecording(value);
    componentDidMount(): void;
    private onResize;
    private onAction;
    private waitForOwnMember;
    componentWillUnmount(): void;
    private onTombstoneClick;
    private renderPlaceholderText;
    private addEmoji;
    private sendMessage;
    private onChange;
    private onWysiwygChange;
    private onRichTextToggle;
    private onVoiceStoreUpdate;
    private updateRecordingState;
    private onRecordingStarted;
    private onRecordingEndingSoon;
    private setStickerPickerOpen;
    private toggleStickerPickerOpen;
    private toggleButtonMenu;
    private get showStickersButton();
    private getMenuPosition;
    private onRecordStartEndClick;
    render(): React.ReactNode;
}
declare const MessageComposerWithMatrixClient: (props: Omit<IProps, "mxClient"> & React.RefAttributes<React.Component<IProps, any, any>>) => React.ReactElement | null;
export default MessageComposerWithMatrixClient;
