import React from "react";
import { IContent, MatrixEvent, IEventRelation, Room } from "matrix-js-sdk/src/matrix";
import { RoomMessageEventContent } from "matrix-js-sdk/src/types";
import EditorModel from "../../../editor/model";
import { MatrixClientProps } from "../../../contexts/MatrixClientContext";
import { RoomPermalinkCreator } from "../../../utils/permalinks/Permalinks";
import RoomContext from "../../../contexts/RoomContext";
export declare const EDITOR_STATE_STORAGE_PREFIX = "mx_cider_state_";
/**
 * Build the mentions information based on the editor model (and any related events):
 *
 * 1. Search the model parts for room or user pills and fill in the mentions object.
 * 2. If this is a reply to another event, include any user mentions from that
 *    (but do not include a room mention).
 *
 * @param sender - The Matrix ID of the user sending the event.
 * @param content - The event content.
 * @param model - The editor model to search for mentions, null if there is no editor.
 * @param replyToEvent - The event being replied to or undefined if it is not a reply.
 * @param editedContent - The content of the parent event being edited.
 */
export declare function attachMentions(sender: string, content: IContent, model: EditorModel | null, replyToEvent: MatrixEvent | undefined, editedContent?: IContent | null): void;
export declare function attachRelation(content: IContent, relation?: IEventRelation): void;
export declare function createMessageContent(sender: string, model: EditorModel, replyToEvent: MatrixEvent | undefined, relation: IEventRelation | undefined, permalinkCreator?: RoomPermalinkCreator, includeReplyLegacyFallback?: boolean): RoomMessageEventContent;
export declare function isQuickReaction(model: EditorModel): boolean;
interface ISendMessageComposerProps extends MatrixClientProps {
    room: Room;
    placeholder?: string;
    permalinkCreator?: RoomPermalinkCreator;
    relation?: IEventRelation;
    replyToEvent?: MatrixEvent;
    disabled?: boolean;
    onChange?(model: EditorModel): void;
    includeReplyLegacyFallback?: boolean;
    toggleStickerPickerOpen: () => void;
}
export declare class SendMessageComposer extends React.Component<ISendMessageComposerProps> {
    static contextType: React.Context<import("../../structures/RoomView").IRoomState & {
        threadId?: string;
    }>;
    context: React.ContextType<typeof RoomContext>;
    private readonly prepareToEncrypt?;
    private readonly editorRef;
    private model;
    private currentlyComposedEditorState;
    private dispatcherRef;
    private sendHistoryManager;
    static defaultProps: {
        includeReplyLegacyFallback: boolean;
    };
    constructor(props: ISendMessageComposerProps, context: React.ContextType<typeof RoomContext>);
    componentDidUpdate(prevProps: ISendMessageComposerProps): void;
    private onKeyDown;
    private selectSendHistory;
    private sendQuickReaction;
    sendMessage(): Promise<void>;
    componentWillUnmount(): void;
    private get editorStateKey();
    private clearStoredEditorState;
    private restoreStoredEditorState;
    private shouldSaveStoredEditorState;
    private saveStoredEditorState;
    private onAction;
    private onPaste;
    private onChange;
    private focusComposer;
    render(): React.ReactNode;
}
declare const SendMessageComposerWithMatrixClient: (props: Omit<ISendMessageComposerProps, "mxClient"> & React.RefAttributes<React.Component<ISendMessageComposerProps, any, any>>) => React.ReactElement | null;
export default SendMessageComposerWithMatrixClient;
