// Type definitions for slate-html-serializer 0.6 // Project: https://github.com/ianstormtaylor/slate // Definitions by: Brandon Shelton // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 import * as React from 'react'; import { BlockProperties, ValueJSON, Value, Node as SlateNode, Mark, Leaf } from 'slate'; export interface Rule { deserialize?: (el: Element, next: (elements: Element[] | NodeList | Array) => any) => any; serialize?: (obj: any, children: string) => React.ReactNode; } export interface HtmlOptions { rules?: Rule[]; defaultBlock?: BlockProperties; parseHtml?: (html: string) => HTMLElement; } export default class Html { constructor(options?: HtmlOptions); deserialize(html: string, options: { toJSON: true }): ValueJSON; deserialize(html: string, options?: { toJSON?: false }): Value; serialize(value: Value, options?: { render?: true }): string; serialize(value: Value, options: { render: false }): Element[]; protected rules: Rule[]; protected defaultBlock: BlockProperties; protected parseHtml: (html: string) => HTMLElement; protected deserializeElements: (elements: HTMLElement[]) => SlateNode[]; protected deserializeElement: (element: HTMLElement) => any; protected deserializeMark: (mark: Mark) => SlateNode[]; protected serializeNode: (node: SlateNode) => string; protected serializeLeaf: (leaf: Leaf) => string; protected serializeString: (string: string) => string; }