import { SchedulerEventId } from '@mui/x-scheduler-internals/models'; type SchedulerDataSourceCacheConfig = { /** * Time To Live for each cache entry in milliseconds. * After this time the cache entry will become stale and the next query will result in cache miss. * @default 300_000 (5 minutes) */ ttl?: number; /** * Resolves the id of an event. Required for consumers using a custom * `eventModelStructure` whose events don't have a literal `id` field. * @default (event) => (event as any).id */ getId?: (event: TEvent) => SchedulerEventId; }; export interface SchedulerDataSourceCache { /** * Checks if the requested time range is fully covered by cached data. */ hasCoverage: (start: number, end: number) => boolean; /** * Saves the events and marks the specific range as "loaded". */ setRange: (start: number, end: number, events: TEvent[]) => void; /** * Updates or adds a single event to the cache. */ upsert: (event: TEvent) => void; /** * Removes an event from the cache. */ remove: (id: string) => void; /** * Returns all currently valid (non-expired) events in the cache. * We return *all* because we cannot safely filter recurring events * by date without complex logic here. */ getAll: () => TEvent[]; /** * Clear the cache. */ clear: () => void; } export declare class SchedulerDataSourceCacheDefault implements SchedulerDataSourceCache { private loadedRanges; private cache; private ttl; private getId; constructor({ ttl, getId }?: SchedulerDataSourceCacheConfig); hasCoverage(start: number, end: number): boolean; setRange(start: number, end: number, newEvents: TEvent[]): void; upsert(event: TEvent, sourceRangeKey?: string | null): void; remove(id: string): void; getAll(): TEvent[]; clear(): void; } export {};