import { ArenaMediatorInterface, ArenaTextInterface, ChildArena, ProtectedArenas } from './Arena';
import { ArenaFormatings } from './ArenaFormating';
import { AnyArenaNode, ArenaNodeText } from './ArenaNode';
export declare type TextProcessor = (text: string, node: ArenaNodeText) => string;
export declare type HtmlProcessor = (node: AnyArenaNode, frms: ArenaFormatings, arenaAttrs: string[]) => string;
export declare type ArenaOptionsCore = {
    name: string;
    tag: string;
    attributes: string[];
    allowedAttributes?: string[];
    hasParent?: boolean;
    hasChildren?: boolean;
    hasText?: boolean;
    inline?: boolean;
    single?: boolean;
    root?: boolean;
    getPublic?: HtmlProcessor;
};
export declare type ArenaOptionsAncestor = ArenaOptionsCore & {
    hasText?: false;
    inline?: false;
    single?: false;
    automerge?: boolean;
    group?: boolean;
    arenaForText: ArenaMediatorInterface | ArenaTextInterface;
} & ({
    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;
declare type ArenaOptions = ArenaOptionsRoot | ArenaOptionsChild;
export default ArenaOptions;
//# sourceMappingURL=ArenaOptions.d.ts.map