/**
 * ECS system that owns the per-entity replication lifecycle.
 *
 * Responsibilities:
 *   - When an entity gains a {@link NetworkIdentity}, allocate a `network_id`
 *     in the peer's slot table (or honour an explicit pre-set one — used by
 *     `Snapshotter` and incoming-packet flows).
 *   - When an entity loses its `NetworkIdentity` (or is destroyed), free the
 *     slot.
 *
 * **Not** responsible for the per-tick `begin_tick` / `end_tick` cadence —
 * the engine's `EntityManager` doesn't expose pre/post-simulate hooks, so the
 * application code wraps its `engine.simulate(dt)` call:
 *
 * ```js
 *   peer.begin_tick(frame_number);
 *   engine.simulate(dt);
 *   peer.end_tick();
 * ```
 *
 * Add this system to the engine once per `NetworkPeer` instance:
 *
 * ```js
 *   const peer = new NetworkPeer({ ... });
 *   const network_system = new NetworkSystem(peer);
 *   engine.entityManager.addSystem(network_system);
 * ```
 *
 * @author Alex Goldring
 * @copyright Company Named Limited (c) 2025
 */
export class NetworkSystem extends System<any, any, any, any, any> {
    /**
     * @param {NetworkPeer} peer
     */
    constructor(peer: NetworkPeer);
    dependencies: (typeof NetworkIdentity)[];
    components_used: ResourceAccessSpecification<typeof NetworkIdentity>[];
    /**
     * @type {NetworkPeer}
     */
    peer: NetworkPeer;
    /**
     * @param {NetworkIdentity} identity
     * @param {number} entity
     */
    link(identity: NetworkIdentity, entity: number): void;
    /**
     * @param {NetworkIdentity} identity
     * @param {number} entity
     */
    unlink(identity: NetworkIdentity, entity: number): void;
}
import { System } from "../../ecs/System.js";
import { NetworkIdentity } from "./components/NetworkIdentity.js";
import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessSpecification.js";
//# sourceMappingURL=NetworkSystem.d.ts.map