import type { AppEmbedData, AudioData, BulletedListData, ButtonData, CodeBlockData, CollapsibleListData, DividerData, EmbedData, FileData, GIFData, GalleryData, HTMLData, HeadingData, ImageData, LinkPreviewData, Node, OrderedListData, ParagraphData, PollData, RichContent, TableCellData, TableData, TextData, VideoData } from '@wix/ricos/schema';
import type { AddImageParams } from '../velo-adapter/types.js';
import type { RichText } from './node-refined-types.js';
import type { PickRenameMulti } from './type-utils.js';
type AddListMethod = ({ items, data, index, before, after, content }: {
    items: string | TextData | ListItemData | (string | TextData | ListItemData)[];
    data?: ParagraphData;
    listData?: OrderedListData | BulletedListData;
    index?: number;
    before?: string;
    after?: string;
    content: RichContent;
}) => RichContent;
type AddLists = {
    addOrderedList: AddListMethod;
    addBulletList: AddListMethod;
};
type AddMethod<T> = {
    [P in keyof T]: ({ data, index, before, after, content }: {
        data?: Partial<T[P]>;
        index?: number;
        before?: string;
        after?: string;
        content: RichContent;
    }) => RichContent;
};
type AddTextMethod<T> = {
    [P in keyof T]: ({ text, data, index, before, after, content }: {
        text?: string | TextData | (string | TextData)[];
        data?: Partial<T[P]>;
        index?: number;
        before?: string;
        after?: string;
        content: RichContent;
    }) => RichContent;
};
type AddMap = {
    addButton: ButtonData;
    addDivider: DividerData;
    addFile: FileData;
    addGallery: GalleryData;
    addGif: GIFData;
    addHtml: HTMLData;
    addImage: ImageData;
    addVideo: VideoData;
    addAudio: AudioData;
    addAppEmbed: AppEmbedData;
    addEmbed: EmbedData;
    addLinkPreview: LinkPreviewData;
    addPoll: PollData;
};
type AddTextMap = {
    addCode: CodeBlockData;
    addHeading: HeadingData;
    addParagraph: ParagraphData;
};
export type ListItemData = {
    text: TextData[];
    data: ParagraphData;
};
export type TableCell = {
    data?: TableCellData;
    content: RichContent;
};
export type CollapsibleListItem = {
    title: RichText;
    content: RichContent;
};
type ContentBuilderType = AddMethod<AddMap> & AddTextMethod<AddTextMap> & AddLists & {
    addTable: ({ cells, data, index, before, after, content }: {
        cells: TableCell[][];
        data?: TableData;
        index?: number;
        before?: string;
        after?: string;
        content: RichContent;
    }) => RichContent;
} & {
    addCollapsibleList: ({ items, data, index, before, after, content }: {
        items: CollapsibleListItem[];
        data?: CollapsibleListData;
        index?: number;
        before?: string;
        after?: string;
        content: RichContent;
    }) => RichContent;
};
export interface ContentBuilder extends ContentBuilderType {
}
type RenamedBuilderFunctions = PickRenameMulti<ContentBuilder, {
    addAppEmbed: 'appEmbed';
    addBulletList: 'bulletList';
    addButton: 'button';
    addCode: 'code';
    addCollapsibleList: 'collapsibleList';
    addDivider: 'divider';
    addEmbed: 'embed';
    addFile: 'file';
    addGallery: 'gallery';
    addGif: 'gif';
    addHeading: 'heading';
    addHtml: 'html';
    addImage: 'image';
    addLinkPreview: 'linkPreview';
    addOrderedList: 'orderedList';
    addParagraph: 'paragraph';
    addPoll: 'poll';
    addTable: 'table';
    addVideo: 'video';
    addAudio: 'audio';
}>;
export type BuilderFunctionsMetadata = 'content' | 'index' | 'before' | 'after';
type NodeCreators = {
    [key in keyof RenamedBuilderFunctions]: (args: Omit<Parameters<RenamedBuilderFunctions[key]>[0], BuilderFunctionsMetadata>) => Node;
};
export interface NodeCreatorsCollection extends Omit<NodeCreators, 'image'> {
    image: (args: {
        data: AddImageParams['data'];
    }) => Node;
}
export {};
//# sourceMappingURL=content-api.d.ts.map