import { Disposable } from "@lincode/promiselikes";
import { Object3D } from "three";
export declare const appendableRoot: Set<Appendable<Object3D<import("three").Event>>>;
export declare const hiddenAppendables: WeakSet<Appendable<Object3D<import("three").Event>>>;
export default class Appendable<T extends Object3D = Object3D> extends Disposable {
    outerObject3d: T;
    nativeObject3d: Object3D;
    constructor(outerObject3d?: T);
    get uuid(): string;
    parent?: Appendable;
    children?: Set<Appendable>;
    protected _append(child: Appendable): void;
    traverse(cb: (appendable: Appendable) => void): void;
    traverseSome(cb: (appendable: Appendable) => unknown): boolean;
    append(child: Appendable): void;
    attach(child: Appendable): void;
    dispose(): this;
}
