/**
 * @template T
 * Creates and tracks a separate context for each linked entity, mostly targeted at event-driven system implementations
 */
export class AbstractContextSystem<T> extends System<any, any, any, any, any> {
    /**
     * @template T
     * @param {Class<SystemEntityContext>} ContextClass
     */
    constructor(ContextClass: Class<SystemEntityContext>);
    /**
     *
     * @type {Class<SystemEntityContext>}
     * @private
     */
    private __ContextClass;
    /**
     *
     * @type {ObjectPoolFactory<SystemEntityContext>}
     * @private
     */
    private __context_pool;
    /**
     *
     * @type {SystemEntityContext[]}
     * @private
     */
    private __live_contexts;
    /**
     *
     * @type {boolean}
     * @private
     */
    private __validation_ignore_link_argument_count;
    /**
     *
     * @param entity
     * @return {T|undefined}
     * @protected
     */
    protected __getEntityContext(entity: any): T | undefined;
    link(...args: any[]): void;
    unlink(...args: any[]): void;
}
import { System } from "../System.js";
//# sourceMappingURL=AbstractContextSystem.d.ts.map