// Generated by alef. Do not edit by hand.
@file:Suppress(
    "ktlint:standard:trailing-comma-on-call-site",
    "ktlint:standard:trailing-comma-on-declaration-site",
    "ktlint:standard:spacing-between-declarations-with-comments",
    "ktlint:standard:spacing-between-declarations-with-annotations",
    "ktlint:standard:when-entry-bracing",
    "ktlint:standard:blank-line-between-when-conditions",
    "ktlint:standard:blank-line-before-declaration",
    "ktlint:standard:chain-method-continuation",
    "ktlint:standard:annotation",
    "ktlint:standard:max-line-length",
    "ktlint:standard:no-semi",
    "ktlint:standard:statement-wrapping",
    "MaxLineLength",
    "TooManyFunctions",
    "FunctionParameterNaming",
    "LongParameterList",
    "CyclomaticComplexMethod",
    "LongMethod",
)

package dev.kreuzberg

/**
 * Cross-extractor content filtering configuration.
 *
 * Controls whether "furniture" content (headers, footers, page numbers,
 * watermarks, repeating text) is included in or stripped from extraction
 * results. Applies across all extractors (PDF, DOCX, RTF, ODT, HTML, etc.)
 * with format-specific implementation.
 *
 * When `null` on `ExtractionConfig`, each extractor uses its current
 * default behavior unchanged.
 */
data class ContentFilterConfig(
    /**
     * Include running headers in extraction output.
     *
     * - PDF: Disables top-margin furniture stripping and prevents the layout
     *   model from treating `PageHeader`-classified regions as furniture.
     *
     * - DOCX: Includes document headers in text output.
     * - RTF/ODT: Headers already included; this is a no-op when true.
     * - HTML/EPUB: Keeps `<header>` element content.
     *
     * Default: `false` (headers are stripped or excluded).
     */
    val includeHeaders: Boolean = false,
    /**
     * Include running footers in extraction output.
     *
     * - PDF: Disables bottom-margin furniture stripping and prevents the layout
     *   model from treating `PageFooter`-classified regions as furniture.
     *
     * - DOCX: Includes document footers in text output.
     * - RTF/ODT: Footers already included; this is a no-op when true.
     * - HTML/EPUB: Keeps `<footer>` element content.
     *
     * Default: `false` (footers are stripped or excluded).
     */
    val includeFooters: Boolean = false,
    /**
     * Enable the heuristic cross-page repeating text detector.
     *
     * When `true` (default), text that repeats verbatim across a supermajority
     * of pages is classified as furniture and stripped.  Disable this if brand
     * names or repeated headings are being incorrectly removed by the heuristic.
     *
     * Note: when a layout-detection model is active, the model may independently
     * classify page-header / page-footer regions as furniture on a per-page basis.
     * To preserve those regions, set `include_headers = true`, `include_footers = true`,
     * or both, in addition to disabling this flag.
     *
     * Primarily affects PDF extraction.
     *
     * Default: `true`.
     */
    val stripRepeatingText: Boolean = true,
    /**
     * Include watermark text in extraction output.
     *
     * - PDF: Keeps watermark artifacts and arXiv identifiers.
     * - Other formats: No effect currently.
     *
     * Default: `false` (watermarks are stripped).
     */
    val includeWatermarks: Boolean = false,
)
