import { DataSource } from "../storage.mjs"; import { TenantCtx } from "@gscdump/contracts"; interface EmptyTypesDoc { version: 1; /** SearchType strings detected as empty for this (user, site). */ emptyTypes: string[]; /** When each type was last marked empty (unix ms). Helps debug stale skips. */ markedAt: Record; } interface EmptyTypesStore { load: (ctx: TenantCtx) => Promise; /** Add types to the empty set, preserving existing markers. No-op if all already present. */ mark: (ctx: TenantCtx, types: readonly string[], now?: number) => Promise; /** Remove types from the empty set. Returns the updated doc. */ clear: (ctx: TenantCtx, types: readonly string[]) => Promise; } interface CreateEmptyTypesStoreOptions { dataSource: DataSource; now?: () => number; } declare function createEmptyTypesStore(opts: CreateEmptyTypesStoreOptions): EmptyTypesStore; export { CreateEmptyTypesStoreOptions, EmptyTypesDoc, EmptyTypesStore, createEmptyTypesStore };