import { type ComponentSchema } from "../Component.js";
import { type Entity } from "../Entity.js";
export interface SerializedHierarchyComponent {
    readonly parent: Entity | null;
    readonly children: readonly Entity[];
    readonly previousSibling: Entity | null;
    readonly nextSibling: Entity | null;
    readonly depth: number;
}
export declare class HierarchyComponent {
    parent: Entity | null;
    previousSibling: Entity | null;
    nextSibling: Entity | null;
    depth: number;
    private readonly childEntities;
    constructor(parent?: Entity | null);
    get children(): readonly Entity[];
    get childCount(): number;
    get firstChild(): Entity | null;
    get lastChild(): Entity | null;
    hasParent(): boolean;
    hasChildren(): boolean;
    includesChild(entity: Entity): boolean;
    forEachChild(callback: (child: Entity) => void): void;
    getSiblingIndex(entity?: Entity): number;
    _setParent(parent: Entity | null): void;
    _addChild(child: Entity): void;
    _removeChild(child: Entity): boolean;
    _clearChildren(): void;
    _moveChild(child: Entity, index: number): void;
    toJSON(): SerializedHierarchyComponent;
    static readonly schema: ComponentSchema;
}
//# sourceMappingURL=HierarchyComponent.d.ts.map