import { type HygieneCommonOptions } from "../shared.js"; export interface AuditStaleContentOptions extends HygieneCommonOptions { /** Days since last update to qualify as stale. Default 365 (one year). */ notUpdatedInDays?: number; /** Content root to scan. Default `/sitecore/content`. */ root?: string; /** Override the search index. */ index?: string; /** Cap on items inspected. Default 5000. */ limit?: number; /** Include system items. Off by default. */ includeSystem?: boolean; /** Restrict to one language. */ language?: string; /** Workflow-check concurrency. Default 8. */ concurrency?: number; pageParallelism?: number; /** * Skip items that are currently in a non-final workflow state. Those * are "in-flight" content, surfaced separately by `audit stale-workflow`. * Default true. */ excludeWorkflowItems?: boolean; /** * Skip items whose `__Never publish` field is set. They're * intentionally hidden and not stale-content candidates. Default true. */ excludeNeverPublish?: boolean; } export interface StaleContentReport { itemId: string; path: string; templateName: string | null; language: string | null; daysSinceUpdate: number; updatedDate: string | null; createdDate: string | null; /** Always present when set; null if no workflow attached. */ workflowState: string | null; } /** * Audit content for items that haven't been updated in N days AND * aren't in a workflow / aren't marked never-publish. * * Different from `audit stale-workflow`: * - `stale-workflow` finds items stuck mid-flight (in a non-final * workflow state past `--days`). * - `stale-content` finds **abandoned** items — published content * no one has touched in a long time. The "graveyard" signal. * * Strategy: * 1. Crawl items via `searchAll` with `pageParallelism` for speed. * 2. Filter by indexed `updatedDate` (cheap; no per-item API call). * 3. For each candidate, optionally check workflow state and * `__Never publish` to exclude in-flight or intentionally-hidden * items. * * Notes: * - The `--not-updated-in-days` default is 365 days (one year). * Tune lower (90 days?) for fast-moving sites where year-old * content is actually stable; tune higher for archives. * - The `updatedDate` from the search index reflects the last * authoring activity (any field change). For "last published" * semantics, this isn't directly available via the master index; * query the web index (`--index sitecore_web_index`) to scope * to published-only content. */ export declare const runAuditStaleContent: (options: AuditStaleContentOptions) => Promise;