import { IChangeSource } from './integration-change-source.protocol.js';
import { IEntityChangeSourceRegistry } from './entity-change-source-registry.protocol.js';

/**
 * Integration subsystem — in-memory entity-change-source registry
 *
 * Default `IEntityChangeSourceRegistry` backed by a `Map<entityName, source>`.
 * Track D's codegen-emitted aggregator folds per-provider adapter
 * contributions into one of these and binds it under
 * `ENTITY_CHANGE_SOURCE_REGISTRY` (RFC-0001 §3); tests and simple consumers
 * construct it directly.
 *
 * See {@link ./entity-change-source-registry.protocol} for the contract and
 * #336 for scope.
 */

declare class MemoryEntityChangeSourceRegistry implements IEntityChangeSourceRegistry {
    private readonly sources;
    constructor(sources: Map<string, IChangeSource<unknown>>);
    get<T = unknown>(name: string): IChangeSource<T>;
    has(name: string): boolean;
    entities(): readonly string[];
}

export { MemoryEntityChangeSourceRegistry };
