import { URI, UriComponents } from './uri';
export interface MarkdownStringTrustedOptions {
    readonly enabledCommands: readonly string[];
}
export interface IMarkdownString {
    readonly value: string;
    readonly isTrusted?: boolean | MarkdownStringTrustedOptions;
    readonly supportThemeIcons?: boolean;
    readonly supportHtml?: boolean;
    /** @internal */
    readonly supportAlertSyntax?: boolean;
    readonly baseUri?: UriComponents;
    uris?: {
        [href: string]: UriComponents;
    };
}
export declare const enum MarkdownStringTextNewlineStyle {
    Paragraph = 0,
    Break = 1
}
export declare class MarkdownString implements IMarkdownString {
    value: string;
    isTrusted?: boolean | MarkdownStringTrustedOptions;
    supportThemeIcons?: boolean;
    supportHtml?: boolean;
    supportAlertSyntax?: boolean;
    baseUri?: URI;
    uris?: {
        [href: string]: UriComponents;
    } | undefined;
    static lift(dto: IMarkdownString): MarkdownString;
    constructor(value?: string, isTrustedOrOptions?: boolean | {
        isTrusted?: boolean | MarkdownStringTrustedOptions;
        supportThemeIcons?: boolean;
        supportHtml?: boolean;
        supportAlertSyntax?: boolean;
    });
    appendText(value: string, newlineStyle?: MarkdownStringTextNewlineStyle): MarkdownString;
    appendMarkdown(value: string): MarkdownString;
    appendCodeblock(langId: string, code: string): MarkdownString;
    appendLink(target: URI | string, label: string, title?: string): MarkdownString;
    private _escape;
}
export declare function isEmptyMarkdownString(oneOrMany: IMarkdownString | IMarkdownString[] | null | undefined): boolean;
export declare function isMarkdownString(thing: unknown): thing is IMarkdownString;
export declare function markdownStringEqual(a: IMarkdownString, b: IMarkdownString): boolean;
export declare function escapeMarkdownSyntaxTokens(text: string): string;
/**
 * Escapes only the characters that would break out of markdown link text
 * (`[label](url)`) syntax: `\` and `]`. Use this when the escaped string is
 * displayed as the visible label of a link, since renderers that extract the
 * link text without re-parsing markdown (e.g. the chat inline anchor / skill
 * pill) would otherwise show full `escapeMarkdownSyntaxTokens` backslashes
 * (`\-`, `\.`, ...) verbatim.
 */
export declare function escapeMarkdownLinkLabel(text: string): string;
/**
 * @see https://github.com/microsoft/vscode/issues/193746
 */
export declare function appendEscapedMarkdownCodeBlockFence(code: string, langId: string): string;
/**
 * Wraps arbitrary text in a markdown inline code span using a backtick fence
 * long enough to safely contain any backtick sequences present in the text.
 *
 * Backticks inside an inline code span cannot be backslash-escaped per the
 * CommonMark spec — the only safe way is to choose a delimiter run longer
 * than any run of backticks in the content (and pad with spaces if the
 * content begins or ends with a backtick).
 */
export declare function appendEscapedMarkdownInlineCode(text: string): string;
export declare function escapeDoubleQuotes(input: string): string;
export declare function removeMarkdownEscapes(text: string): string;
export declare function parseHrefAndDimensions(href: string): {
    href: string;
    dimensions: string[];
};
export declare function createMarkdownLink(text: string, href: string, title?: string, escapeTokens?: boolean): string;
export declare function createMarkdownCommandLink(command: {
    text: string;
    id: string;
    arguments?: unknown[];
    tooltip: string;
}, escapeTokens?: boolean): string;
export declare function createCommandUri(commandId: string, ...commandArgs: unknown[]): URI;
//# sourceMappingURL=htmlContent.d.ts.map