import { Room, MatrixEvent } from "matrix-js-sdk/src/matrix";
import { ActionPayload } from "../../dispatcher/payloads";
import { AsyncStoreWithClient } from "../AsyncStoreWithClient";
import { TagID } from "./models";
interface IState {
}
export interface MessagePreview {
    event: MatrixEvent;
    isThreadReply: boolean;
    text: string;
}
export declare class MessagePreviewStore extends AsyncStoreWithClient<IState> {
    private static readonly internalInstance;
    /**
     * @internal Public for test only
     */
    static testInstance(): MessagePreviewStore;
    private previews;
    private constructor();
    static get instance(): MessagePreviewStore;
    static getPreviewChangedEventName(room: Room): string;
    /**
     * Gets the pre-translated preview for a given room
     * @param room The room to get the preview for.
     * @param inTagId The tag ID in which the room resides
     * @returns The preview, or null if none present.
     */
    getPreviewForRoom(room: Room, inTagId: TagID): Promise<MessagePreview | null>;
    generatePreviewForEvent(event: MatrixEvent): string;
    private generatePreview;
    protected onAction(payload: ActionPayload): Promise<void>;
    protected onReady(): Promise<void>;
    protected onNotReady(): Promise<void>;
    protected onLocalEchoUpdated: (ev: MatrixEvent, room: Room) => Promise<void>;
}
export {};
