import { IMarkdownString } from "../common/htmlContent.js";
import * as marked from "../common/marked/marked.js";
import { URI } from "../common/uri.js";
import { FormattedTextRenderOptions } from "./formattedTextRenderer.js";
export interface MarkedOptions extends Readonly<Omit<marked.MarkedOptions, "extensions" | "baseUrl">> {
    readonly markedExtensions?: marked.MarkedExtension[];
}
export interface MarkdownRenderOptions extends FormattedTextRenderOptions {
    readonly codeBlockRenderer?: (languageId: string, value: string) => Promise<HTMLElement>;
    readonly codeBlockRendererSync?: (languageId: string, value: string, raw?: string) => HTMLElement;
    readonly asyncRenderCallback?: () => void;
    readonly fillInIncompleteTokens?: boolean;
    readonly remoteImageIsAllowed?: (uri: URI) => boolean;
    readonly sanitizerOptions?: ISanitizerOptions;
}
export interface ISanitizerOptions {
    replaceWithPlaintext?: boolean;
    allowedTags?: string[];
}
export declare function renderMarkdown(markdown: IMarkdownString, options?: MarkdownRenderOptions, markedOptions?: MarkedOptions): {
    element: HTMLElement;
    dispose: () => void;
};
export declare const allowedMarkdownAttr: string[];
export declare function renderStringAsPlaintext(string: IMarkdownString | string): string;
export declare function renderMarkdownAsPlaintext(markdown: IMarkdownString, withCodeBlocks?: boolean): string;
export declare function fillInIncompleteTokens(tokens: marked.TokensList): marked.TokensList;
