import { type HygieneCommonOptions } from "../shared.js"; export interface CleanupLanguageVersionAddOptions extends HygieneCommonOptions { /** Required. Language code(s) to add (e.g. ["fr", "es"]). */ languages: string[]; /** * Optional source language. When supplied, the new version's fields * are copied from the latest version in that language. Defaults to * letting Sitecore seed the new version empty. */ fromLanguage?: string; /** Restrict by template name pattern. Recommended. */ templatePattern?: string; /** Content-tree root. Default `/sitecore/content`. */ root?: string; index?: string; limit?: number; includeSystem?: boolean; concurrency?: number; pageParallelism?: number; cache?: boolean; exclude?: string[]; since?: string; owner?: string; whatIf?: boolean; allowWrite?: boolean; baseline?: boolean; output?: string; format?: "json" | "csv" | "markdown"; /** * Maximum number of (item, language) versions created per run. * Default 500. One run on /sitecore/content × 4 languages can fan * out to 10k+ writes; cap defends against runaway scope. */ maxAdds?: number; } export interface LanguageVersionAddAction { itemId: string; path: string; templateName: string | null; language: string; versionNumber: number | null; status: "applied" | "what-if" | "failed" | "skipped-existing"; error?: string; } /** * Add empty (or copied) language versions to items in bulk so * translators can pick them up without per-item clicking. * * Strategy: * 1. Scan items via `scanItemsAndFields(skipFields: true)`. * 2. For each (item, requested-language) pair, call * `client.addItemVersion({itemId, language, baseVersion?})`. The * Authoring API creates a new version in the target language * whose fields are seeded empty (or copied from `fromLanguage`'s * latest version when `baseVersion` is supplied). * * What this does NOT do: * - It does not detect existing versions before calling — the * Authoring API is the source of truth for "is this version * already present?" Calling addItemVersion when a version exists * returns the existing one (no duplicate created); we surface * that as `skipped-existing` based on the returned versionNumber * matching an already-known state. This is a server-side decision * we trust, not a client-side check. * * Safety rails: * - `--what-if` reports planned (item, language) pairs. * - `--allow-write` required outside what-if. * - `--max-adds` caps the version-creation count. Default 500. * - `--template-pattern` is strongly recommended — adding language * versions to every item under /sitecore/content (including system * items) is rarely the intent. */ export declare const runCleanupLanguageVersionAdd: (options: CleanupLanguageVersionAddOptions) => Promise;