/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 */
import type { ElementTransformer, MultilineElementTransformer, TextFormatTransformer, TextMatchTransformer, Transformer } from './MarkdownTransformers';
import { type ElementNode, type LexicalNode, type TextFormatType } from 'lexical';
type MarkdownFormatKind = 'noTransformation' | 'paragraphH1' | 'paragraphH2' | 'paragraphH3' | 'paragraphH4' | 'paragraphH5' | 'paragraphH6' | 'paragraphBlockQuote' | 'paragraphUnorderedList' | 'paragraphOrderedList' | 'paragraphCodeBlock' | 'horizontalRule' | 'bold' | 'code' | 'italic' | 'underline' | 'strikethrough' | 'italic_bold' | 'strikethrough_italic' | 'strikethrough_bold' | 'strikethrough_italic_bold' | 'link';
type MarkdownCriteria = Readonly<{
    export?: (node: LexicalNode, traverseChildren: (elementNode: ElementNode) => string) => string | null;
    exportFormat?: TextFormatType;
    exportTag?: string;
    exportTagClose?: string;
    markdownFormatKind: MarkdownFormatKind | null | undefined;
    regEx: RegExp;
    regExForAutoFormatting: RegExp;
    requiresParagraphStart: boolean | null | undefined;
}>;
type MarkdownCriteriaArray = MarkdownCriteria[];
export declare function getAllMarkdownCriteriaForParagraphs(): MarkdownCriteriaArray;
export declare function getAllMarkdownCriteriaForTextNodes(): MarkdownCriteriaArray;
export declare function indexBy<T>(list: T[], callback: (arg0: T) => string | undefined): Readonly<Record<string, T[]>>;
export declare function transformersByType(transformers: Transformer[]): Readonly<{
    element: ElementTransformer[];
    multilineElement: MultilineElementTransformer[];
    textFormat: TextFormatTransformer[];
    textMatch: TextMatchTransformer[];
}>;
export declare const PUNCTUATION_OR_SPACE: RegExp;
export declare const WHITESPACE: RegExp;
export declare const PUNCTUATION: RegExp;
export declare function isEmptyParagraph(node: LexicalNode): boolean;
export declare function unescapeText(value: string): string;
export {};
