import { type EmptyText, type KEYS, type PlainText, type TBasicMarks, type TCommentText, type TElement, type TFontMarks, type TImageElement, type TLinkElement, type TListProps, type TMentionElement, type TTableElement, type TText, type TTextAlignProps } from 'platejs';
export interface MyBlockElement extends TElement, TListProps {
    id?: string;
}
export interface MyBlockquoteElement extends MyTextBlockElement {
    type: typeof KEYS.blockquote;
}
export interface MyCodeBlockElement extends MyBlockElement {
    children: MyCodeLineElement[];
    type: typeof KEYS.codeBlock;
}
export interface MyCodeLineElement extends TElement {
    children: PlainText[];
    type: typeof KEYS.codeLine;
}
export interface MyH1Element extends MyTextBlockElement {
    type: typeof KEYS.h1;
}
export interface MyH2Element extends MyTextBlockElement {
    type: typeof KEYS.h2;
}
export interface MyH3Element extends MyTextBlockElement {
    type: typeof KEYS.h3;
}
export interface MyHrElement extends MyBlockElement {
    children: [EmptyText];
    type: typeof KEYS.hr;
}
export interface MyImageElement extends MyBlockElement, TImageElement {
    children: [EmptyText];
    type: typeof KEYS.img;
}
export interface MyLinkElement extends TLinkElement {
    id: string;
    children: RichText[];
    type: typeof KEYS.link;
    icon?: string;
    title?: string;
}
export interface MyMentionElement extends TMentionElement {
    children: [EmptyText];
    type: typeof KEYS.mention;
    key?: string;
}
export type MyNestableBlock = MyParagraphElement;
export interface MyParagraphElement extends MyTextBlockElement {
    type: typeof KEYS.p;
}
export interface MyTableCellElement extends TElement {
    children: MyNestableBlock[];
    type: typeof KEYS.td;
}
export interface MyTableElement extends MyBlockElement, TTableElement {
    children: MyTableRowElement[];
    type: typeof KEYS.table;
}
export interface MyTableRowElement extends TElement {
    children: MyTableCellElement[];
    type: typeof KEYS.tr;
}
export interface MyTextBlockElement extends TElement, TTextAlignProps {
    children: (MyLinkElement | MyMentionElement | RichText)[];
}
export interface MyToggleElement extends MyTextBlockElement {
    type: typeof KEYS.toggle;
}
export type MyValue = (MyBlockquoteElement | MyCodeBlockElement | MyH1Element | MyH2Element | MyH3Element | MyHrElement | MyImageElement | MyParagraphElement | MyTableElement | MyToggleElement)[];
export interface RichText extends TBasicMarks, TCommentText, TFontMarks, TText {
    kbd?: boolean;
}
