import type { ReadFieldValues } from "@paroicms/public-anywhere-lib";
import type { SiteContext } from "../../site-context/site-context.types.js";
import { type ChangeSummary, type TimeTier } from "./history.types.js";
export interface HistoryEntryRow {
    id: string;
    nodeId: string;
    language: string;
    fieldValues: ReadFieldValues;
    documentValues?: string;
    changeSummary?: ChangeSummary;
    updatedAt: Date;
    expireAt?: Date;
    timeTier: TimeTier;
}
export declare function getLatestHistoryEntryInTiers(siteContext: Pick<SiteContext, "cn">, options: {
    nodeId: string;
    language: string;
    minTier: TimeTier;
    thresholdMinutes?: number;
}): Promise<HistoryEntryRow | undefined>;
export type ExpireAtModifier = "+24 hours" | "+60 days" | null;
export declare function createHistoryEntry(siteContext: Pick<SiteContext, "cn">, entry: {
    nodeId: string;
    language: string;
    fieldValues: string;
    documentValues: string | null;
    changeSummary: string | null;
    updatedAt?: Date;
    expireAt: ExpireAtModifier;
    timeTier: TimeTier;
}): Promise<string>;
export declare function getHistoryEntries(siteContext: Pick<SiteContext, "cn">, options: {
    nodeId: string;
    language: string;
}): Promise<HistoryEntryRow[]>;
export declare function getHistoryEntry(siteContext: Pick<SiteContext, "cn">, entryId: string): Promise<HistoryEntryRow | undefined>;
export declare function cleanupExpiredHistoryEntries(siteContext: Pick<SiteContext, "cn">): Promise<number>;
export declare function enforceEntryLimit(siteContext: Pick<SiteContext, "cn">, options: {
    nodeId: string;
    language: string;
    maxEntries: number;
}): Promise<number>;
export declare function getLNodeUpdatedAt(siteContext: Pick<SiteContext, "cn">, options: {
    nodeId: string;
    language: string;
}): Promise<Date | undefined>;
