import type Model from '../Model' import type { RecordId } from '../Model' import type Collection from './index' import type { CachedQueryResult } from '../adapters/type' import type { TableName } from '../Schema' import type { RawRecord } from '../RawRecord' type Instantiator = (_: RawRecord) => T export default class RecordCache { map: Map tableName: TableName recordInsantiator: Instantiator _debugCollection: Collection constructor( tableName: TableName, recordInsantiator: Instantiator, collection: Collection, ) get(id: RecordId): Record | undefined add(record: Record): void delete(record: Record): void unsafeClear(): void recordsFromQueryResult(result: CachedQueryResult): Record[] recordFromQueryResult(result: RecordId | RawRecord): Record _cachedModelForId(id: RecordId): Record _modelForRaw(raw: RawRecord): Record }