import { Component } from '../../client/component';
import { System } from '../../system';
import { Dict } from '../../types/Dict';
import { AnimationSpec, C_EE, ComponentSetup } from '../../types/interface/C';
import { Component_, ComponentEvents } from '../../types/interface/Component';
import { E } from '../../types/interface/composed/E';
import { UnitBundle } from '../../types/UnitBundle';
import { Unlisten } from '../../types/Unlisten';
import { Stateful, StatefulEvents } from '../Stateful';
import { ION, Opt } from '../Unit';
export type Element_EE = C_EE;
export type ElementEE<_EE extends Dict<any[]>> = StatefulEvents<_EE & Element_EE> & Element_EE;
export declare class Element_<I extends Dict<any> = any, O extends Dict<any> = 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;
    _animations: AnimationSpec[];
    _stopPropagation: Dict<number>;
    _stopImmediatePropagation: Dict<number>;
    _preventDefault: Dict<number>;
    constructor({ i, o }: ION<I, O>, opt: Opt, system: System, id: string);
    isElement(): boolean;
    registerRoot(component: Component_): void;
    unregisterRoot(component: Component_): void;
    reorderRoot(component: Component_<ComponentEvents>, to: number): void;
    registerParentRoot(component: Component_, slotName: string, at?: number, emit?: boolean): void;
    unregisterParentRoot(component: Component_): void;
    reorderParentRoot(component: Component_<ComponentEvents>, to: number): void;
    appendParentChild(component: Component_, slotName: string): void;
    removeParentChild(component: Component_): void;
    appendChild(bundle: UnitBundle): number;
    appendChildren(bundles: UnitBundle[]): number;
    insertChild(Bundle: UnitBundle, at: number): void;
    pushChild(Bundle: UnitBundle): number;
    hasChild(at: number): boolean;
    removeChild(at: number): Component_;
    pullChild(at: number): Component_;
    refRoot(at: number): Component_;
    refChild(at: number): Component_;
    refChildren(): Component_[];
    refSlot(slotName: string): Component_;
    getAnimations(): AnimationSpec[];
    animate(keyframes: Keyframe[], opt: KeyframeAnimationOptions): void;
    cancelAnimation(id: string): void;
    stopPropagation(name: string): Unlisten;
    getSetup(): ComponentSetup;
    private _reset;
    private _play;
    private _pause;
}
