/** * Store is where data is stored from the API. */ import { RecordTable, Record } from './RecordTable'; import { ResourceType } from './ResourceType'; export interface RecordTables { [key: string]: RecordTable; } export interface SubscribeEvent { type: 'mapping' | 'remove'; resourceType: ResourceType; value: T | Array; } declare type findRecordPredicate = (this: void, value: T, index: number, array: T[]) => boolean; declare type SubscribeCallback = (event: SubscribeEvent) => void; export declare class Store { private resourceTypes; private recordTables; private subscribeStacks; constructor(); subscribe: (resourceTypes: ResourceType[], callback: SubscribeCallback) => () => void; unSubscribe: (subscribeId: Symbol) => void; resourceTypeHasRegistered: (resourceTypeName: string) => boolean; getRegisteredResourceType: (resourceTypeName: string) => ResourceType<{}>; getTable: (resourceType: ResourceType) => RecordTable; registerResourceType: (resourceType: ResourceType) => void; removeOne: (resourceType: ResourceType, record: T) => boolean; findOne: (resourceType: ResourceType, specs: string | number | T | findRecordPredicate) => T | null; findMany: (resourceType: ResourceType, predicate: findRecordPredicate) => T[]; dataMapping: (resourceType: ResourceType, data: T | T[]) => undefined; private findRecordByKey; private mapRecords; private mapRecord; private doSubcribleCallbacks; } export {};