import { Events } from "@lincode/events";
import { Cancellable, Disposable } from "@lincode/promiselikes";
import { GetGlobalState, Reactive } from "@lincode/reactivity";
import IAppendable from "../../interface/IAppendable";
import Nullable from "../../interface/utils/Nullable";
import type MeshAppendable from "./MeshAppendable";
import { GameObjectType } from "../../api/serializer/types";
type EventName = "name" | "runtimeSchema" | "loaded";
export default class Appendable extends Disposable implements IAppendable {
    constructor();
    get componentName(): GameObjectType;
    runtimeData: Nullable<Record<string, any>>;
    runtimeDefaults: Nullable<Record<string, any>>;
    parent?: Appendable | MeshAppendable;
    children?: Set<Appendable>;
    get firstChild(): Appendable | undefined;
    private _firstChildState?;
    protected get firstChildState(): Reactive<Appendable | undefined>;
    private refreshFirstChildState;
    $appendNode(child: Appendable): void;
    append(child: Appendable): void;
    attach(child: Appendable): void;
    private _deleteSystemSet?;
    get $deleteSystemSet(): Set<(self: any) => void>;
    protected disposeNode(): void;
    private disposeChildren;
    dispose(): this;
    traverse(cb: (appendable: Appendable) => void): void;
    traverseSome(cb: (appendable: Appendable) => unknown): boolean;
    private _events?;
    get $events(): Events<any, EventName>;
    $emitEvent(key: EventName, payload?: any): void;
    protected _name?: string;
    get name(): string | undefined;
    set name(val: string | undefined);
    protected _id?: string;
    get id(): string | undefined;
    set id(val: string | undefined);
    private _uuid?;
    get uuid(): string;
    set uuid(val: string);
    private _proxy?;
    get proxy(): Appendable | undefined;
    set proxy(val: Appendable | undefined);
    protected createEffect(cb: () => (() => void) | void, getStates: Array<GetGlobalState<any> | any>): Cancellable;
    private handles?;
    cancelHandle(name: string, lazyHandle: undefined | false | "" | (() => Cancellable)): Cancellable | undefined;
    private _onLoop?;
    get onLoop(): ((dt: number) => void) | undefined;
    set onLoop(cb: ((dt: number) => void) | undefined);
    $disableSerialize?: boolean;
    $disableSceneGraph?: boolean;
    $disableUnload?: boolean;
    $disableSelection?: boolean;
    $ghost(disableSelection?: boolean): void;
    $unghost(): void;
}
export {};
