import type { AppEmbedData, AudioData, BulletedListData, ButtonData, CheckboxListData, CodeBlockData, CollapsibleListData, Decoration, Decoration_Type, DividerData, EmbedData, FileData, GIFData, GalleryData, HTMLData, HeadingData, ImageData, Link, LinkPreviewData, Metadata, Node, NodeStyle, OrderedListData, ParagraphData, PollData, TableCellData, TableData, TextData, VideoData } from '@wix/ricos/schema';
import { Node_Type } from '@wix/ricos/schema';
import type { TableData as TableDataNext } from '../../ricos-schema/next-schema/index.js';
import type { RicosEntityRange, RicosInlineStyleRange } from '../types/index.js';
export declare const createNode: <TData>(type: Node_Type, { nodes, data, style, id, }: {
    nodes: Node[];
    data: TData;
    style?: NodeStyle;
    id?: string;
}) => Node;
export declare const dataByNodeType: (type: Node_Type, data: unknown) => {
    codeBlockData: CodeBlockData;
} | {
    dividerData: DividerData;
} | {
    headingData: HeadingData;
} | {
    fileData: FileData;
} | {
    galleryData: GalleryData;
} | {
    gifData: GIFData;
} | {
    htmlData: HTMLData;
} | {
    imageData: ImageData;
} | {
    buttonData: ButtonData;
} | {
    paragraphData: ParagraphData;
} | {
    pollData: PollData;
} | {
    textData: TextData;
} | {
    videoData: VideoData;
} | {
    audioData: AudioData;
} | {
    embedData: EmbedData;
} | {
    appEmbedData: AppEmbedData;
} | {
    linkPreviewData: LinkPreviewData;
} | {
    tableData: TableData;
} | {
    tableCellData: TableCellData;
} | {
    collapsibleListData: CollapsibleListData;
} | {
    bulletedListData: BulletedListData;
} | {
    checkboxListData: CheckboxListData;
} | {
    orderedListData: OrderedListData;
};
export declare const createParagraphNode: (nodes?: Node[], data?: ParagraphData, style?: NodeStyle) => Node;
export declare const createTextNode: (text: string, decorations?: Decoration[]) => Node;
export declare const createHeadingNode: (nodes: Node[] | undefined, data: HeadingData) => Node;
export declare const createCaptionNode: (nodes: Node[]) => Node;
export declare const createTableNode: (nodes: Node[], data?: TableDataNext) => Node;
export declare const createTableRowNode: (nodes: Node[]) => Node;
export declare const createTableCellNode: (nodes: Node[]) => Node;
export declare const createDecoration: (type: Decoration_Type, data?: Omit<Decoration, 'type'>) => Decoration;
export declare const initializeMetadata: ({ version, id, createdTimestamp, updatedTimestamp, }?: {
    version?: number;
    id?: string;
    createdTimestamp?: Date;
    updatedTimestamp?: Date;
}) => Metadata;
export declare const reduceDecorations: (decorations: Decoration[]) => Decoration[];
export declare const createLink: ({ url, rel, target, anchor, }: {
    url?: string;
    rel?: string;
    target?: string;
    anchor?: string;
}) => Link;
export declare const parseLink: (link: Link | undefined) => {
    url?: string;
    rel?: string;
    target?: string;
    anchor?: string;
    customData?: string;
};
export declare const partitionBy: <T>(isSeparator: (node: T) => boolean, isPartition: (node: T) => boolean, Separator: (node: T) => T, Partition: (node: T) => T, addToPartition: (partition: T, node: T) => void) => (nodes: T[]) => T[];
export declare const removeOverlappingRangesWithSameStyle: (ranges: RicosInlineStyleRange[]) => {
    offset: number;
    length: number;
    style: string;
}[];
export declare const mergeOverlappingEntityRanges: (entityRanges: RicosEntityRange[]) => RicosEntityRange[];
export declare const generateRangeMap: (ranges: (RicosInlineStyleRange | RicosEntityRange)[]) => Record<number, RangeMapEntry[]>;
type RangeMapEntry = (Omit<RicosInlineStyleRange, 'offset' | 'length'> | Omit<RicosEntityRange, 'offset' | 'length'>) & {
    action: 'start' | 'end';
};
type RangeMapEntryWithLength = RangeMapEntry & {
    length: number;
};
export declare const normalizeRangeMap: (rangeMap: Record<number, RangeMapEntryWithLength[]>) => Record<number, RangeMapEntry[]>;
export {};
//# sourceMappingURL=node-utils.d.ts.map