export class AttachmentSystem extends System<any, any, any, any, any> {
    constructor();
    dependencies: (typeof Transform | typeof Attachment)[];
    components_used: (ResourceAccessSpecification<typeof AttachmentSockets> | ResourceAccessSpecification<typeof Mesh> | ResourceAccessSpecification<typeof Transform>)[];
    /**
     *
     * @type {number[]}
     */
    waiting: number[];
    /**
     *
     * @type {Map<number,AttachmentBinding>}
     */
    bindings: Map<number, AttachmentBinding>;
    /**
     *
     * @type {Map<number, AttachmentBinding[]>}
     */
    parentBindingIndex: Map<number, AttachmentBinding[]>;
    /**
     * Are we waiting for something?
     * @param {number} entity
     * @returns {boolean}
     */
    isWaiting(entity: number): boolean;
    /**
     * Attachment is missing something, wait for it
     * @param {number} entity
     */
    wait(entity: number): void;
    /**
     * Removed all wait records for a given entity
     * @param {number} entity
     * @returns {number} number of removed records
     */
    clearAllWaitRecordsFor(entity: number): number;
    /**
     *
     * @param {Attachment} attachment
     * @param {Transform} transform
     * @param {number} entity
     */
    link(attachment: Attachment, transform: Transform, entity: number): void;
    processWaiting(): void;
    /**
     *
     * @param {Attachment} attachment
     * @param {Transform} transform
     * @param {number} entity
     */
    unlink(attachment: Attachment, transform: Transform, entity: number): void;
    __updateAll(): void;
    update(timeDelta: any): void;
}
import { System } from "../System.js";
import { Transform } from "../transform/Transform.js";
import { Attachment } from "./Attachment.js";
import { AttachmentSockets } from "../sockets/AttachmentSockets.js";
import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessSpecification.js";
import Mesh from "../../graphics/ecs/mesh/Mesh.js";
//# sourceMappingURL=AttachmentSystem.d.ts.map