import type { RepositoryEntity } from './RepositoryEntity'; type EntityId = RepositoryEntity['id']; export interface ReadonlyRepository { readonly length: number; getItems(predicate?: (entity: TEntity) => boolean): readonly TEntity[]; getById(id: EntityId): TEntity; exists(id: EntityId): boolean; } export interface MutableRepository { addItem(item: TEntity): void; addOrUpdateItem(item: TEntity): void; removeItem(id: EntityId): void; } export interface Repository extends ReadonlyRepository, MutableRepository { }