import type { AppEmbedData, AudioData, BlockquoteData, CheckboxListData, ButtonData, CodeBlockData, CollapsibleListData, DividerData, EmbedData, FileData, GIFData, GalleryData, HTMLData, HeadingData, ImageData, LinkPreviewData, Node, NodeStyle, Node_Type, OrderedListData, ParagraphData, PollData, RichContent, Struct, TableCellData, TableData, TextData, VideoData } from '@wix/ricos/schema';
import type { BulletedListData, ListItemNodeData } from '../../ricos-schema/next-schema/index.js';
type Identified = {
    id: Node['id'];
};
type Styled = {
    style?: NodeStyle;
};
export type RichText = {
    nodes: RichTextNode[];
    metadata?: RichContent['metadata'];
};
export type RichTextNode = ParagraphNode | HeadingNode | CodeBlockNode | BlockquoteNode;
type TextNodeContainer = Identified & Styled & {
    nodes: TextNode[];
};
export type TextNode = Leaf & {
    textData: TextData;
    type: Node_Type.TEXT;
    id: '';
};
export type ParagraphNode = TextNodeContainer & {
    paragraphData: ParagraphData;
    type: Node_Type.PARAGRAPH;
};
type HeadingNode = TextNodeContainer & {
    headingData: HeadingData;
    type: Node_Type.HEADING;
};
type CodeBlockNode = TextNodeContainer & {
    codeBlockData: CodeBlockData;
    type: Node_Type.CODE_BLOCK;
};
type BlockquoteNode = Identified & Styled & {
    type: Node_Type.BLOCKQUOTE;
    nodes: ParagraphNode[];
    blockquoteData: BlockquoteData;
};
export type ListItemNode = Identified & Styled & {
    type: Node_Type.LIST_ITEM;
    nodes: ParagraphNode[];
    listItemData?: ListItemNodeData;
};
export type ListNode = OrderedListNode | BulletedListNode | CheckboxListNode;
type OrderedListNode = Identified & Styled & {
    type: Node_Type.ORDERED_LIST;
    nodes: ListItemNode[];
    data: OrderedListData;
};
type BulletedListNode = Identified & Styled & {
    type: Node_Type.BULLETED_LIST;
    nodes: ListItemNode[];
    data: BulletedListData;
};
type CheckboxListNode = Identified & Styled & {
    type: Node_Type.CHECKBOX_LIST;
    nodes: ListItemNode[];
    data: CheckboxListData;
};
type RichContentNodeWithContainerData = CollapsibleListNode | TableNode | AppEmbedNode | ButtonNode | DividerNode | EmbedNode | FileNode | GalleryNode | GifNode | HtmlNode | ImageNode | LinkPreviewNode | VideoNode | AudioNode | PollNode | ExternalNode;
type RichContentNode = RichTextNode | ListNode | RichContentNodeWithContainerData;
type RichContainer = {
    nodes: RichContentNode[];
};
export type CollapsibleListNode = Identified & Styled & {
    type: Node_Type.COLLAPSIBLE_LIST;
    nodes: CollapsibleItemNode[];
    collapsibleListData: CollapsibleListData;
};
export type CollapsibleItemNode = Identified & Styled & {
    type: Node_Type.COLLAPSIBLE_ITEM;
    nodes: [CollapsibleItemTitleNode, CollapsibleItemBodyNode];
};
export type CollapsibleItemTitleNode = Identified & Styled & {
    type: Node_Type.COLLAPSIBLE_ITEM_TITLE;
    nodes: RichTextNode[];
};
export type CollapsibleItemBodyNode = Identified & Styled & RichContainer & {
    type: Node_Type.COLLAPSIBLE_ITEM_BODY;
};
export type TableNode = Identified & Styled & {
    type: Node_Type.TABLE;
    nodes: TableRowNode[];
    tableData: TableData;
};
export type TableRowNode = Identified & Styled & {
    type: Node_Type.TABLE_ROW;
    nodes: TableCellNode[];
};
export type TableCellNode = Identified & Styled & RichContainer & {
    type: Node_Type.TABLE_CELL;
    tableCellData: TableCellData;
};
type Leaf = Omit<Node, 'nodes'> & {
    nodes: never[];
};
type DividerNode = Identified & Styled & Leaf & {
    type: Node_Type.DIVIDER;
    dividerData: DividerData;
};
type ButtonNode = Identified & Styled & Leaf & {
    type: Node_Type.BUTTON;
    buttonData: ButtonData;
};
type FileNode = Identified & Styled & Leaf & {
    type: Node_Type.FILE;
    fileData: FileData;
};
type GalleryNode = Identified & Styled & Leaf & {
    type: Node_Type.GALLERY;
    galleryData: GalleryData;
};
type GifNode = Identified & Styled & Leaf & {
    type: Node_Type.GIF;
    gifData: GIFData;
};
type HtmlNode = Identified & Styled & Leaf & {
    type: Node_Type.HTML;
    htmlData: HTMLData;
};
type ImageNode = Identified & Styled & Leaf & {
    type: Node_Type.IMAGE;
    imageData: ImageData;
};
type LinkPreviewNode = Identified & Styled & Leaf & {
    type: Node_Type.LINK_PREVIEW;
    linkPreviewData: LinkPreviewData;
};
type AppEmbedNode = Identified & Styled & Leaf & {
    type: Node_Type.APP_EMBED;
    appEmbedData: AppEmbedData;
};
type EmbedNode = Identified & Styled & Leaf & {
    type: Node_Type.EMBED;
    embedData: EmbedData;
};
type VideoNode = Identified & Styled & Leaf & {
    type: Node_Type.VIDEO;
    videoData: VideoData;
};
type AudioNode = Identified & Styled & Leaf & {
    type: Node_Type.AUDIO;
    audioData: AudioData;
};
type PollNode = Identified & Styled & Leaf & {
    type: Node_Type.POLL;
    pollData: PollData;
};
type ExternalNode = Identified & Styled & Leaf & {
    type: Node_Type.EXTERNAL;
    externalData: Struct;
};
export {};
//# sourceMappingURL=node-refined-types.d.ts.map