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

/**
 * PowerPoint (PPTX) extraction result.
 *
 * Contains extracted slide content, metadata, and embedded images/tables.
 */
data class PptxExtractionResult(
    /** Extracted text content from all slides */
    val content: String,
    /** Presentation metadata */
    val metadata: PptxMetadata,
    /** Total number of slides */
    val slideCount: Long,
    /** Total number of embedded images */
    val imageCount: Long,
    /** Total number of tables */
    val tableCount: Long,
    /** Extracted images from the presentation */
    val images: List<ExtractedImage> = emptyList(),
    /** Slide structure with boundaries (when page tracking is enabled) */
    val pageStructure: PageStructure? = null,
    /** Per-slide content (when page tracking is enabled) */
    val pageContents: List<PageContent>? = null,
    /** Structured document representation */
    val document: DocumentStructure? = null,
    /** Hyperlinks discovered in slides as (url, optional_label) pairs. */
    val hyperlinks: List<String> = emptyList(),
    /**
     * Office metadata extracted from docProps/core.xml and docProps/app.xml.
     *
     * Contains keys like "title", "author", "created_by", "subject", "keywords",
     * "modified_by", "created_at", "modified_at", etc.
     */
    val officeMetadata: Map<String, String> = emptyMap(),
    /**
     * Slide comments as revisions.
     *
     * Each `<p:cm>` element in `ppt/comments/comment{N}.xml` becomes a
     * `DocumentRevision { kind: Comment }` with author (resolved from
     * `ppt/commentAuthors.xml`), ISO-8601 timestamp, and
     * `RevisionAnchor.Slide { index }`. `null` when no comment XML parts exist.
     */
    val revisions: List<DocumentRevision>? = null,
)
