import { Component } from '../../client/component';
import { System } from '../../system';
import { Dict } from '../../types/Dict';
import { C_EE } from '../../types/interface/C';
import { ComponentEvents, Component_ } from '../../types/interface/Component';
import { E } from '../../types/interface/E';
import { UnitBundle } from '../../types/UnitBundle';
import { Stateful, StatefulEvents } from '../Stateful';
import { ION, Opt } from '../Unit';
export declare type Element_EE = C_EE & {
    call: [{
        method: string;
        data: any[];
    }];
};
export declare type ElementEE<_EE extends Dict<any[]>> = StatefulEvents<_EE & Element_EE> & Element_EE;
export declare class Element_<I = any, O = any, _J extends Dict<any> = {}, _EE extends ElementEE<_EE> = ElementEE<Element_EE>, _C extends Component = Component> extends Stateful<I, O, {}, _EE> implements E {
    __: string[];
    _children: Component_[];
    _root: Component_[];
    _parent_root: Component_[];
    _parent_children: Component_[];
    _slot: Dict<Component_>;
    _component: _C;
    _state: Dict<any>;
    constructor({ i, o }: ION, opt: Opt, system: System, id: string);
    registerRoot(component: Component_): void;
    unregisterRoot(component: Component_): void;
    registerParentRoot(component: Component_, slotName: string): void;
    unregisterParentRoot(component: Component_): void;
    appendParentChild(component: Component_, slotName: string): void;
    removeParentChild(component: Component_): void;
    appendChild(Bundle: UnitBundle<Component_>): number;
    insertChild(Bundle: UnitBundle<Component_<ComponentEvents>>, at: number): void;
    pushChild(Bundle: UnitBundle<Component_>): number;
    hasChild(at: number): boolean;
    removeChild(at: number): Component_;
    pullChild(at: number): Component_;
    refChild(at: number): Component_;
    refChildren(): Component_[];
    refSlot(slotName: string): Component_;
    private _play;
    private _pause;
}
