// 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

/** Keyword extraction configuration. */
data class KeywordConfig(
    /** Algorithm to use for extraction. */
    val algorithm: KeywordAlgorithm,
    /** Maximum number of keywords to extract (default: 10). */
    val maxKeywords: Long = 10L,
    /**
     * Minimum score threshold (0.0-1.0, default: 0.0).
     *
     * Keywords with scores below this threshold are filtered out.
     * Note: Score ranges differ between algorithms.
     */
    val minScore: Float = 0.0f,
    /**
     * N-gram range for keyword extraction (min, max).
     *
     * (1, 1) = unigrams only
     * (1, 2) = unigrams and bigrams
     * (1, 3) = unigrams, bigrams, and trigrams (default)
     */
    val ngramRange: List<Long> = emptyList(),
    /**
     * Language code for stopword filtering (e.g., "en", "de", "fr").
     *
     * If None, no stopword filtering is applied.
     */
    val language: String? = null,
    /** YAKE-specific tuning parameters. */
    val yakeParams: YakeParams? = null,
    /** RAKE-specific tuning parameters. */
    val rakeParams: RakeParams? = null,
)
