import { ArenaInlineInterface, ArenaMediatorInterface, ArenaRootInterface, ArenaSingleInterface } from './Arena'; import { ArenaAttribute } from './ArenaAttribute'; import { ArenaNodeAncestorPart, ArenaNodeCorePart, ArenaNodeScionPart, ArenaNodeTextPart } from './node'; import { NodeAttributes } from './NodeAttributes'; export declare type ArenaNodeRoot = ArenaNodeCorePart & ArenaNodeAncestorPart & { readonly arena: ArenaRootInterface; readonly root: true; readonly hasParent: false; }; export declare type ArenaNodeMediator = ArenaNodeCorePart & ArenaNodeScionPart & ArenaNodeAncestorPart & { readonly arena: ArenaMediatorInterface; readonly root: false; readonly hasParent: true; }; export declare type ArenaNodeText = ArenaNodeCorePart & ArenaNodeScionPart & ArenaNodeTextPart; export declare type ArenaNodeSingle = ArenaNodeCorePart & ArenaNodeScionPart & { readonly arena: ArenaSingleInterface; readonly hasChildren: false; readonly hasText: false; readonly inline: false; readonly single: true; }; export interface ArenaNodeInline { readonly arena: ArenaInlineInterface; readonly hasParent: false; readonly hasChildren: false; readonly hasText: false; readonly inline: true; readonly single: false; getTags(): [string, string]; getAttribute(name: string): ArenaAttribute; getAttributes(): NodeAttributes; setAttribute(name: string, value: ArenaAttribute): void; clone(): ArenaNodeInline; } export declare type ParentArenaNode = ArenaNodeMediator | ArenaNodeRoot; export declare type ChildArenaNode = ArenaNodeMediator | ArenaNodeSingle | ArenaNodeText; export declare type AnyArenaNode = ArenaNodeRoot | ChildArenaNode;