/**
 * Scope filter — decides which entities are relevant to which peer.
 *
 * Interface (duck-typed):
 * ```
 *   {
 *     is_entity_in_scope(peer_id: number, entity_id: number): boolean
 *   }
 * ```
 *
 * Used by the {@link Replicator} to skip actions that touch only
 * out-of-scope entities for a given peer (e.g. PVS culling, distance-based
 * area-of-interest, faction-based visibility).
 *
 * The framework ships {@link AlwaysRelevantScope} as a "send everything to
 * everyone" default. Production games supply their own implementation.
 *
 * @author Alex Goldring
 * @copyright Company Named Limited (c) 2026
 */
export class AlwaysRelevantScope {
    is_entity_in_scope(_peer_id: any, _network_id: any): boolean;
}
/**
 * Scope filter that excludes entities whose `NetworkIdentity.owner_peer_id`
 * matches the recipient peer.
 *
 * Use on the server side when client-side prediction is in play: the server
 * should NOT echo client-owned-entity actions back to that client over the
 * action stream, otherwise the executor would re-apply them on top of the
 * client's prediction. Authoritative state for those entities goes via the
 * out-of-band {@link NetworkPeer#send_auth_state} channel instead.
 *
 * @author Alex Goldring
 * @copyright Company Named Limited (c) 2026
 */
export class OwnerAwareScope {
    /**
     * @param {{
     *   world: EntityComponentDataset,
     *   slot_table: ReplicationSlotTable,
     *   identity_class: Function,
     * }} options
     *   `identity_class` is the component class that carries the
     *   `owner_peer_id` field — typically `NetworkIdentity`. Passed as a
     *   parameter rather than imported so this helper stays in the
     *   transport-agnostic `replication/` layer.
     */
    constructor({ world, slot_table, identity_class }: {
        world: EntityComponentDataset;
        slot_table: ReplicationSlotTable;
        identity_class: Function;
    });
    world: EntityComponentDataset;
    slot_table: ReplicationSlotTable;
    identity_class: Function;
    /**
     * @param {number} peer_id recipient
     * @param {number} network_id the entity in question
     * @returns {boolean} true if the entity should be sent to this peer
     */
    is_entity_in_scope(peer_id: number, network_id: number): boolean;
}
//# sourceMappingURL=ScopeFilter.d.ts.map