import { CacheBranchAsync } from '../CacheBranchAsync'; import { CacheBranchSync } from '../CacheBranchSync'; export type NullableCacheDataGeneratorAsync, K extends keyof T> = (branch: CacheBranchAsync) => Promise; export type NullableCacheDataGeneratorSync, K extends keyof T> = (branch: CacheBranchSync) => T[K] | undefined; export type NullableCacheDataGenerator, K extends keyof T> = NullableCacheDataGeneratorSync | NullableCacheDataGeneratorAsync; export type CacheDataGeneratorAsync, K extends keyof T> = (branch: CacheBranchAsync) => Promise; export type CacheDataGeneratorSync, K extends keyof T> = (branch: CacheBranchSync) => T[K]; export type CacheDataGenerator, K extends keyof T> = CacheDataGeneratorSync | CacheDataGeneratorAsync; export type CacheDataCopy, K extends keyof T> = (raw: T[K]) => T[K]; export type CacheDirection = 'top-down' | 'bottom-up'; export type Deferred = T | Promise;