export type StoreItem> = T & { id: string; patch: (patch: Partial, 'id'>>, emitChange?: boolean) => void; }; export default class ItemStore> { private eventTarget; private items; register(id: string, data: T): StoreItem; emitChanges(id: string): void; unregister(id: string): void; unregisterAll(): void; subscribe(onChange: (id: string) => void): () => void; getItems(): StoreItem[]; getItem(id: string): StoreItem | undefined; subscribeItem(id: string, onChange: () => void): () => void; clear(): void; emitChange(id?: string): void; useItems(): StoreItem[]; useItem(id: string): StoreItem | undefined; }