import { PlateEditor, TElement, Value } from '@udecode/plate-common' export type MdastElementType = | 'paragraph' | 'heading' | 'list' | 'listItem' | 'link' | 'image' | 'blockquote' | 'code' | 'thematicBreak' export type MdastTextType = | 'emphasis' | 'strong' | 'delete' | 'inlineCode' | 'html' | 'text' export type MdastNodeType = MdastElementType | MdastTextType export interface MdastNode { type?: MdastNodeType ordered?: boolean value?: string text?: string children?: Array depth?: 1 | 2 | 3 | 4 | 5 | 6 url?: string alt?: string lang?: string // mdast metadata position?: any spread?: any checked?: any indent?: any } export type RemarkElementRule = { transform: ( node: MdastNode, lastLineNumber: number, options: RemarkPluginOptions ) => TElement | TElement[] } export type RemarkElementRules = { [key in MdastElementType]?: RemarkElementRule } export type RemarkTextRule = { mark?: (options: RemarkPluginOptions) => string transform?: (text: string) => string } export type RemarkTextRules = { [key in MdastTextType]?: RemarkTextRule } export type RemarkPluginOptions = { editor: PlateEditor elementRules: RemarkElementRules textRules: RemarkTextRules indentList?: boolean }