import { ArenaAncestorCore, ArenaCore } from './arena'; import { ArenaNodeText } from './ArenaNode'; import { NodeAttributes } from './NodeAttributes'; export interface ArenaRootInterface extends ArenaAncestorCore { readonly root: true; readonly hasParent: false; readonly noPseudoCursor?: boolean; } export interface ArenaMediatorInterface extends ArenaAncestorCore { readonly root: boolean; readonly hasParent: boolean; readonly defaultParentArena?: ArenaMediatorInterface | undefined; readonly noPseudoCursor?: boolean; } interface ParentbleArena { readonly defaultParentArena: ArenaMediatorInterface | undefined; } export interface ArenaTextInterface extends ArenaCore, ParentbleArena { readonly hasParent: true; readonly hasChildren: false; readonly hasText: true; readonly inline: false; readonly single: false; readonly nextArena: ArenaTextInterface | ArenaMediatorInterface | undefined; getPlain: (text: string, node: ArenaNodeText) => string; } export interface ArenaSingleInterface extends ArenaCore, ParentbleArena { readonly hasParent: true; readonly hasChildren: false; readonly hasText: false; readonly inline: false; readonly single: true; } export interface ArenaInlineInterface extends ArenaCore, ParentbleArena { readonly hasParent: false; readonly hasChildren: false; readonly hasText: false; readonly inline: true; readonly single: false; } export declare type ParentArena = ArenaMediatorInterface | ArenaRootInterface; export declare type ChildArena = ArenaMediatorInterface | ArenaSingleInterface | ArenaTextInterface; export declare type ProtectedArenas = (ChildArena | [ChildArena, NodeAttributes, string?])[]; export declare type TreeArena = ArenaRootInterface | ChildArena; export declare type AnyArena = ArenaRootInterface | ChildArena | ArenaInlineInterface; export {};