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

/**
 * Comprehensive Djot document structure with semantic preservation.
 *
 * This type captures the full richness of Djot markup, including:
 *
 * - Block-level structures (headings, lists, blockquotes, code blocks, etc.)
 * - Inline formatting (emphasis, strong, highlight, subscript, superscript, etc.)
 * - Attributes (classes, IDs, key-value pairs)
 * - Links, images, footnotes
 * - Math expressions (inline and display)
 * - Tables with full structure
 *
 * Available when the `djot` feature is enabled.
 */
data class DjotContent(
    /** Plain text representation for backwards compatibility */
    val plainText: String,
    /** Structured block-level content */
    val blocks: List<FormattedBlock> = emptyList(),
    /** Metadata from YAML frontmatter */
    val metadata: Metadata,
    /** Extracted tables as structured data */
    val tables: List<Table> = emptyList(),
    /** Extracted images with metadata */
    val images: List<DjotImage> = emptyList(),
    /** Extracted links with URLs */
    val links: List<DjotLink> = emptyList(),
    /** Footnote definitions */
    val footnotes: List<Footnote> = emptyList(),
    /** Attributes mapped by element identifier (if present) */
    val attributes: List<String> = emptyList(),
)
