import type { RenderContext } from './types';
import Converter from './converter';
export type RehypeOptions = import('./converter').RehypeOptions;
export type Schema = import('hast-util-sanitize').Schema;
export type RenderOptions = import('./types').RenderOptions;
export type RemarkSetting = import('./types').RemarkSetting;
export type IMarkPlugin = import('./types').IMarkPlugin;
export type IMarkPlugins = import('./types').IMarkPlugins;
/**
 * IMark Options
 */
export interface IMarkOptions {
    /**
     * The necessary settings for parsing markdown,
     * includes KatexDelimiters, GfmOptions, EmojiOptions.
     */
    remark?: RemarkSetting;
    /**
     * The necessary options for remark rehype
     */
    rehype?: RehypeOptions;
    /**
     * The necessary options for render html,
     * inlcudes KatexOptions, TocOptions, MermaidConfig, EChartsInitOpts,
     * AbcVisualParams, UmlOptions, WaveDromOptions, VegaEmbedOptions.
     */
    render?: RenderOptions;
}
/**
 * IMark is a markdown converter's external interface calling class
 *
 * @class IMark
 */
declare class IMark {
    /**
     * The markdown converter
     *
     * @type {Converter}
     */
    converter: Converter;
    /**
     * Creates an instance of IMark.
     *
     * @constructor
     */
    constructor();
    /**
     * Use sanitize options or imark plugins
     *
     * @param {Schema | IMarkPlugins} [o]
     *   Sanitize schema or imark plugins.
     * @returns {IMark}
     *   IMark self.
     */
    use(o: Schema | IMarkPlugins): IMark;
    /**
     * Set the necessary settings for parsing markdown
     *
     * @param {string} name
     *   IMark plugin name
     * @param {RemarkSetting} [rs]
     *   The configuration required for the imark plugin corresponding to the name
     * @returns {IMark}
     *   IMark self.
     */
    setting(name: string, rs: RemarkSetting): IMark;
    /**
     * Parse markdown to html with additional renders
     *
     * @param {string} md
     *   Text of markdown
     * @param {RemarkSetting} [remarkOptions]
     *   The configuration required for parse markdown
     * @param {RehypeOptions} [rehypeOptions]
     *   The configuration required for remark rehype
     * @returns {Promise<RenderContext>}
     *   Promise of RenderContext
     */
    parse(md: string, remarkOptions?: RemarkSetting, rehypeOptions?: RehypeOptions): Promise<RenderContext>;
    /**
     * Render markdown to a html element
     *
     * @param {string} md
     *   Text of markdown
     * @param {HTMLElement} [root]
     *   The html element for render
     * @param {IMarkOptions} [imarkOptions]
     *   The configuration required where parse markdown or remark rehype or render html
     */
    render(md: string, root?: HTMLElement, imarkOptions?: IMarkOptions): void;
}
declare const imark: IMark;
export default imark;
