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