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

/**
 * A text block with hierarchy level assignment.
 *
 * Represents a block of text with semantic heading information extracted from
 * font size clustering and hierarchical analysis.
 */
data class HierarchicalBlock(
    /** The text content of this block */
    val text: String,
    /** The font size of the text in this block */
    val fontSize: Float,
    /**
     * The hierarchy level of this block (H1-H6 or Body)
     *
     * Levels correspond to HTML heading tags:
     *
     * - "h1": Top-level heading
     * - "h2": Secondary heading
     * - "h3": Tertiary heading
     * - "h4": Quaternary heading
     * - "h5": Quinary heading
     * - "h6": Senary heading
     * - "body": Body text (no heading level)
     */
    val level: String,
    /**
     * Bounding box information for the block
     *
     * Contains coordinates as (left, top, right, bottom) in PDF units.
     */
    val bbox: List<Float>? = null,
)
