import React, { ComponentType } from 'react';
import { MentionProps } from './componentRenderers';
import type { Options } from 'react-markdown/lib';
import type { UserResponse } from 'stream-chat';
import type { PluggableList } from 'unified';
import type { DefaultStreamChatGenerics } from '../../../types/types';
export type RenderTextPluginConfigurator = (defaultPlugins: PluggableList) => PluggableList;
export declare const defaultAllowedTagNames: Array<keyof JSX.IntrinsicElements | 'emoji' | 'mention'>;
export declare const markDownRenderers: RenderTextOptions['customMarkDownRenderers'];
export type RenderTextOptions<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
    allowedTagNames?: Array<keyof JSX.IntrinsicElements | 'emoji' | 'mention' | (string & {})>;
    customMarkDownRenderers?: Options['components'] & Partial<{
        emoji: ComponentType;
        mention: ComponentType<MentionProps<StreamChatGenerics>>;
    }>;
    getRehypePlugins?: RenderTextPluginConfigurator;
    getRemarkPlugins?: RenderTextPluginConfigurator;
};
export declare const renderText: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(text?: string, mentionedUsers?: UserResponse<StreamChatGenerics>[], { allowedTagNames, customMarkDownRenderers, getRehypePlugins, getRemarkPlugins, }?: RenderTextOptions) => React.JSX.Element | null;
