export interface Plugin { readonly isEnabled : boolean ; readonly editor : Editor ; } export interface PluginCollection { [ Symbol . iterator ] : Iterable < Plugin > ; } export interface Editor { config : Config ; data : DataController ; editing : EditingController ; isReadOnly : boolean ; model : Model ; state : "initializing" | "ready" | "destroyed" ; destroy ( ) : Promise < void > ; execute ( commandName , ... commandParams ) : void ; getData ( options ? ) : string ; setData ( data ) : void ; } export interface EditorConstructor { new ( ) : Editor ; prototype : Editor ; builtinPlugins : PluginCollection ; defaultConfig : Record < string , unknown > ; create ( element , config ? ) : Promise < Editor > ; } export interface DataController { readonly model : Model ; } export interface EditingController { readonly model : Model ; } export interface Config { define ( name , value ) : void ; define ( name ) : void ; define ( name , value ? ) : void ; get ( name ) : unknown ; set ( name , value ) : void ; set ( name ) : void ; set ( name , value ? ) : void ; } export interface Model { document : Document ; schema : Schema ; markers : MarkerCollection ; } export interface Collection < T > { first : T | null ; last : T | null ; length : number ; [ Symbol . iterator ] : Iterable < T > ; add ( item , index ? ) : void ; clear ( ) : void ; filter < Scope > ( callback , scope ? ) : T [ ] ; find < Scope > ( callback , scope ? ) : T ; get ( idOrIndex ) : T | null ; getIndex ( itemOrId ) : number ; has ( itemOrId ) : boolean ; map < Result , Scope > ( callback , scope ? ) : Result [ ] ; remove ( subject ) : T ; } export interface Document { readonly roots : Collection < DocumentFragment > [ ] ; getRoot ( name ) : RootElement | null ; getRootNames ( ) : string [ ] ; toJSON ( ) : Record < string , unknown > ; } export interface Schema { getDefinition ( node ) : SchemaCompiledItemDefinition ; getDefinitions ( ) : { [ key ] : SchemaCompiledItemDefinition ; } ; } export interface SchemaContextItem { readonly name : string ; getAttributeKeys ( ) : Iterable < string > ; getAttribute ( attribute ) : unknown ; } export interface SchemaItemDefinition { readonly allowIn : string | string [ ] ; readonly allowAttributes : string | string [ ] ; readonly allowContentOf : string | string [ ] ; readonly allowWhere : string | string [ ] ; readonly allowAttributesOf : string | string [ ] ; readonly inheritTypesFrom : string | string [ ] ; readonly inheritAllFrom : string | string [ ] ; } export interface SchemaCompiledItemDefinition { readonly name : string ; readonly isBlock : boolean ; readonly isInline : boolean ; readonly isLimit : boolean ; readonly isObject : boolean ; readonly isRegistered : boolean ; readonly allowIn : string | string [ ] ; readonly allowAttributes : string | string [ ] ; } export interface Node { readonly document : Document | null ; readonly endOffset : number | null ; readonly index : number | null ; readonly nextSibling : Node | null ; readonly offsetSize : number ; readonly parent : Element | DocumentFragment | null ; readonly previousSibling : Node | null ; readonly root : Node | DocumentFragment ; readonly startOffset : number | null ; getAncestors ( options ? ) : Node [ ] ; getAttribute ( key ) : unknown ; getAttributeKeys ( ) : Iterable < string > ; getAttributes ( ) : Iterable < [ string , unknown ] > ; getCommonAncestor ( node , options ? ) : Element | DocumentFragment | null ; getPath ( ) : number [ ] ; hasAttribute ( key ) : boolean ; is ( type ) : boolean ; isAfter ( node ) : boolean ; isBefore ( node ) : boolean ; toJSON ( ) : Record < string , unknown > ; } export interface TextNode extends Node { readonly data : string ; } export interface Marker { affectsData : boolean ; managedUsingOperations : boolean ; readonly name : string ; getEnd ( ) : Position ; getRange ( ) : Range ; getStart ( ) : Position ; is ( type ) : boolean ; } export interface Range { readonly end : Position ; readonly isCollapsed : boolean ; readonly isFlat : boolean ; readonly root : Element | DocumentFragment ; readonly start : Position ; [ Symbol . iterator ] : Iterable < TreeWalkerValue > ; containsItem ( item ) : boolean ; containsPosition ( position ) : boolean ; containsRange ( otherRange , loose ? ) : boolean ; getCommonAncestor ( ) : Element | DocumentFragment | null ; getDifference ( otherRange ) : Range [ ] ; getIntersection ( otherRange ) : Range | null ; getMinimalFlatRanges ( ) : Range [ ] ; getPositions ( options ? ) : Iterable < Position > ; getWalker ( options ) : TreeWalker ; is ( type ) : boolean ; isEqual ( otherRange ) : boolean ; isIntersecting ( otherRange ) : boolean ; toJSON ( ) : Record < string , unknown > ; } export interface Element extends Node { readonly childCount : number ; readonly isEmpty : boolean ; readonly maxOffset : number ; readonly name : string ; getChild ( index ) : Node | null ; getChildIndex ( node ) : number | null ; getChildren ( ) : Iterable < Node > ; getNodeByPath ( relativePath ) : Node | null ; is ( type , name ? ) : boolean ; offsetToIndex ( offset ) : number ; } export interface RootElement extends Element { readonly document : Document | null ; readonly rootName : string ; } export interface DocumentFragment { readonly childCount : number ; readonly isEmpty : boolean ; readonly markers : Map < string , Range > ; readonly maxOffset : number ; readonly parent : null ; readonly root : this ; [ Symbol . iterator ] : Iterable < Node > ; getChild ( index ) : Node | null ; getChildIndex ( node ) : number | null ; getChildStartOffset ( node ) : number | null ; getChildren ( ) : Iterable < Node > ; getNodeByPath ( relativePath ) : Node | null ; is ( type ) : boolean ; offsetToIndex ( offset ) : number ; toJSON ( ) : Record < string , unknown > ; } export interface DocumentFragmentConstructor { fromJSON ( json ) : DocumentFragment ; } export type PositionStickiness = "toNone" | "toNext" | "toPrevious" ; export type PositionRelation = "before" | "after" | "same" ; export interface TextProxy extends TextNode { readonly isPartial : boolean ; readonly offsetInText : number ; readonly textNode : TextNode ; } export interface Position { readonly index : number ; readonly isAtEnd : boolean ; readonly isAtStart : boolean ; readonly nodeAfter : Node | null ; readonly nodeBefore : Node ; offset : number ; readonly parent : Element | DocumentFragment ; readonly path : number [ ] ; readonly root : RootElement ; stickiness : PositionStickiness ; readonly textNode : TextNode | null ; compareWith ( otherPosition ) : PositionRelation ; getAncestors ( ) : Array < Node | TextProxy > ; getCommonAncestor ( position ) : Element | DocumentFragment | null ; getCommonPath ( position ) : number [ ] ; getLastMatchingPosition ( skip , options ? ) : Position ; getParentPath ( ) : number [ ] ; getShiftedBy ( shift ) : Position ; hasSameParentAs ( position ) : boolean ; is ( type ) : boolean ; isAfter ( otherPosition ) : boolean ; isBefore ( otherPosition ) : boolean ; isEqual ( otherPosition ) : boolean ; isTouching ( otherPosition ) : boolean ; toJSON ( ) : Record < string , unknown > ; } export interface TreeWalkerValue { item : Node | TextProxy ; length : number ; nextPosition : Position ; previousPosition : Position ; type : "elementStart" | "elementEnd" | "character" | "text" ; } export interface TreeWalker { boundaries : Range ; direction : "backward" | "forward" ; ignoreElementEnd : boolean ; position : Position ; shallow : boolean ; singleCharacters : boolean ; [ Symbol . iterator ] : Iterable < TreeWalkerValue > ; next ( ) : TreeWalkerValue | null ; skip ( skip ) : void ; } export interface MarkerCollection { [ Symbol . iterator ] : Iterable < Marker > ; get ( markerName ) : Marker | null ; getMarkersAtPosition ( position ) : Iterable < Marker > ; getMarkersGroup ( prefix ) : Iterable < Marker > ; getMarkersIntersectingRange ( range ) : Iterable < Marker > ; has ( markerName ) : boolean ; }