import React from "react";
import { MatrixEvent, MatrixClient } from "matrix-js-sdk/src/matrix";
import { Optional } from "matrix-events-sdk";
import { EventTileProps } from "../components/views/rooms/EventTile";
import { TimelineRenderingType } from "../contexts/RoomContext";
export interface EventTileTypeProps extends Pick<EventTileProps, "mxEvent" | "highlights" | "highlightLink" | "showUrlPreview" | "onHeightChanged" | "forExport" | "getRelationsForEvent" | "editState" | "replacingEventId" | "permalinkCreator" | "callEventGrouper" | "isSeeingThroughMessageHiddenForModeration" | "inhibitInteraction"> {
    ref?: React.RefObject<any>;
    timestamp?: JSX.Element;
    maxImageHeight?: number;
    overrideBodyTypes?: Record<string, typeof React.Component>;
    overrideEventTypes?: Record<string, typeof React.Component>;
}
type FactoryProps = Omit<EventTileTypeProps, "ref">;
type Factory<X = FactoryProps> = (ref: Optional<React.RefObject<any>>, props: X) => JSX.Element;
export declare const MessageEventFactory: Factory;
export declare const TextualEventFactory: Factory;
export declare const JitsiEventFactory: Factory;
export declare const JSONEventFactory: Factory;
export declare const RoomCreateEventFactory: Factory;
/**
 * Find an event tile factory for the given conditions.
 * @param mxEvent The event.
 * @param cli The matrix client to reference when needed.
 * @param showHiddenEvents Whether hidden events should be shown.
 * @param asHiddenEv When true, treat the event as always hidden.
 * @returns The factory, or falsy if not possible.
 */
export declare function pickFactory(mxEvent: MatrixEvent, cli: MatrixClient, showHiddenEvents: boolean, asHiddenEv?: boolean): Optional<Factory>;
/**
 * Render an event as a tile
 * @param renderType The render type. Used to inform properties given to the eventual component.
 * @param props The properties to provide to the eventual component.
 * @param showHiddenEvents Whether hidden events should be shown.
 * @param cli Optional client instance to use, otherwise the default MatrixClientPeg will be used.
 * @returns The tile as JSX, or falsy if unable to render.
 */
export declare function renderTile(renderType: TimelineRenderingType, props: EventTileTypeProps, showHiddenEvents: boolean, cli?: MatrixClient): Optional<JSX.Element>;
/**
 * A version of renderTile() specifically for replies.
 * @param props The properties to specify on the eventual object.
 * @param showHiddenEvents Whether hidden events should be shown.
 * @param cli Optional client instance to use, otherwise the default MatrixClientPeg will be used.
 * @returns The tile as JSX, or falsy if unable to render.
 */
export declare function renderReplyTile(props: EventTileTypeProps, showHiddenEvents: boolean, cli?: MatrixClient): Optional<JSX.Element>;
export declare function isMessageEvent(ev: MatrixEvent): boolean;
export declare function haveRendererForEvent(mxEvent: MatrixEvent, matrixClient: MatrixClient, showHiddenEvents: boolean): boolean;
export {};
