import type { ArkmeCalendarBucketPage } from '../types.js'; import { type CalendarInvalidation } from './calendar-invalidation-store.js'; export interface CalendarMonthQuery { scopeKey: string; sourceRef?: string; startDate: string; endDate: string; timezone: string; /** Defined for the complete, server-owned chat date index. */ timezoneOffsetMillis?: number; } export interface CalendarMonthSnapshot { value?: ArkmeCalendarBucketPage; loading: boolean; error: string; } export declare const EMPTY_CALENDAR_MONTH: CalendarMonthSnapshot; /** Bounded per-account month summaries only. No record bodies, tokens or media are persisted. */ export declare class CalendarMonthCache { private readonly load; private readonly getStorage; private readonly now; private account; private entries; private saved; constructor(load?: (query: CalendarMonthQuery, signal: AbortSignal, background: boolean) => Promise, getStorage?: () => Storage | undefined, now?: () => number); activateAccount(account: string | undefined): void; private entry; get(account: string, query: CalendarMonthQuery): CalendarMonthSnapshot; subscribe(account: string, query: CalendarMonthQuery, notify: () => void): () => void; ensure(account: string, query: CalendarMonthQuery, background?: boolean): Promise; invalidate(event: CalendarInvalidation): void; refresh(account: string, query: CalendarMonthQuery): void; private cancel; private publish; private prune; private persist; } export declare const arkmeCalendarMonths: CalendarMonthCache; //# sourceMappingURL=calendar-month-cache.d.ts.map