export interface SessionLogRetentionSummary { pruned: number; bytesPruned: number; disabled: boolean; retentionDays: number | null; /** * Whether this call actually walked the tree. False when retention is off or * when a sweep already ran inside the interval, so a caller can tell "nothing * was old enough" apart from "we did not look". */ swept: boolean; warnings: string[]; } /** * Parse `HQ_SESSION_LOG_LOCAL_RETENTION_DAYS`. * * Unset → 7. Integer ≥ 1 → that many days. Literal `off` → disabled. * Empty / whitespace / 0 / negative / anything else → warn and use 7. * Uses `?.trim() ||` so a set-but-empty value is treated as unset-for-value * (still warned, because the variable was present). */ export declare function resolveSessionLogLocalRetentionDays(rawEnv?: string | undefined): { days: number | null; warning: string | null; }; /** * Parse `HQ_SESSION_LOG_RETENTION_SWEEP_HOURS`. * * Unset -> 24. Integer >= 1 -> that many hours. `0` -> sweep on every call. * Empty / whitespace / negative / anything else -> warn and use 24. */ export declare function resolveSessionLogSweepIntervalHours(rawEnv?: string | undefined): { hours: number; warning: string | null; }; /** * Where this machine remembers the last sweep, keyed by HQ root so two roots * on one machine throttle independently. Local bookkeeping, deliberately * outside the tree: `workspace/.session-logs/` is push-only synced, and a * marker written there would be uploaded to the vault as content. */ export declare function sessionLogSweepMarkerPath(root: string): string; export declare function formatSessionLogRetentionLine(summary: SessionLogRetentionSummary): string | null; /** * Delete local session-log copies that are confirmed in the personal vault * and older than the retention window. Best-effort: never throws. */ export declare function pruneSyncedSessionLogs(root: string): SessionLogRetentionSummary; //# sourceMappingURL=session-log-retention.d.ts.map