import { ArenaMediatorInterface, ArenaTextInterface, ChildArena, ProtectedArenas } from './Arena'; import { ArenaAttributes } from './ArenaAttributes'; import { ArenaFormatings } from './ArenaFormating'; import { AnyArenaNode, ArenaNodeText } from './ArenaNode'; export declare type TextProcessor = (text: string, node: ArenaNodeText) => string; export declare type OutputProcessor = (type: string, node: AnyArenaNode, frms: ArenaFormatings, arenaAttrs: ArenaAttributes) => string; export declare type ArenaOptionsCore = { name: string; tag: string; attributes: ArenaAttributes; allowedAttributes?: string[]; hasParent?: boolean; hasChildren?: boolean; hasText?: boolean; inline?: boolean; single?: boolean; root?: boolean; output?: OutputProcessor; defaultParentArena?: ArenaMediatorInterface; }; export declare type ArenaOptionsAncestor = ArenaOptionsCore & { hasText?: false; inline?: false; single?: false; automerge?: boolean; group?: boolean; arenaForText: ArenaMediatorInterface | ArenaTextInterface; noPseudoCursor?: boolean; } & ({ allowedArenas: ChildArena[]; } | { protectedChildren: ProtectedArenas; }); export declare type ArenaOptionsInline = ArenaOptionsCore & { hasParent?: false; hasText?: false; inline: true; single?: false; }; export declare type ArenaOptionsSingle = ArenaOptionsCore & { hasParent?: true; hasText?: false; inline?: false; single: true; }; export declare type ArenaOptionsWithText = ArenaOptionsCore & { hasParent?: true; hasText: true; inline?: false; single?: false; nextArena?: ArenaTextInterface | ArenaMediatorInterface; getPlain?: TextProcessor; }; export declare type ArenaOptionsMediator = ArenaOptionsAncestor & {}; export declare type ArenaOptionsRoot = ArenaOptionsAncestor & {}; export declare type ArenaOptionsChild = ArenaOptionsInline | ArenaOptionsSingle | ArenaOptionsWithText | ArenaOptionsMediator; export declare type ArenaOptions = ArenaOptionsRoot | ArenaOptionsChild;