import { DataEntity, GroupValue, MappedStorableItem } from './data-entity';
type GroupValueToItems<TEntity extends DataEntity> = Map<GroupValue, Record<number, TEntity>>;
export default class DataStore<TEntity extends DataEntity> {
    itemsByGroups: Map<string, GroupValueToItems<TEntity>>;
    allItems: Record<number, TEntity>;
    private readonly groupFilters;
    private readonly initializedGroups;
    private isAllInitialized;
    constructor(groupFilters?: {
        groupType: string;
        keyFunc: (item: TEntity) => any;
    }[], options?: {
        shallow?: boolean;
    });
    isGroupInitialized(groupType: string, groupValue: GroupValue): boolean;
    get(id: number): TEntity;
    isInGroup(id: number, groupType: string, groupValue: GroupValue): boolean;
    getMany(ids: number[]): Record<number, TEntity>;
    getAll(): TEntity[];
    getAllById(): Record<number, TEntity>;
    getGroup(group: string, groupValue: GroupValue): TEntity[];
    set(item: TEntity): void;
    remove(id: number): void;
    setMany(items: MappedStorableItem<TEntity>[]): void;
    setAll(items: MappedStorableItem<TEntity>[]): void;
    setGroup(groupType: string, groupValue: GroupValue, items: MappedStorableItem<TEntity>[]): void;
    setGroupInitialized(groupType: string, groupValue: GroupValue): void;
    private setAllItems;
    private removeMany;
    removeAll(): void;
    private updateItemInGroups;
    private getGroupItems;
    private getGroupKey;
}
export {};
