# This file is auto-generated by alef — DO NOT EDIT.
# alef:hash:4e15143f4af1ae8bafbdb1506ef057da924484c66a19483966333558ad437e75
# To regenerate: alef generate
# To verify freshness: alef verify --exit-code
# Issues & docs: https://github.com/kreuzberg-dev/alef
defmodule Kreuzberg.FormatMetadata do
  @moduledoc """
  Format-specific metadata (discriminated union).

  Only one format type can exist per extraction result. This provides
  type-safe, clean metadata without nested optionals.
  """

  @typedoc "Format-specific metadata (discriminated union)."
  @type t :: term()

  @type pdf :: %{type: :pdf, metadata: Kreuzberg.PdfMetadata.t()}
  @type docx :: %{type: :docx, metadata: Kreuzberg.DocxMetadata.t()}
  @type excel :: %{type: :excel, metadata: Kreuzberg.ExcelMetadata.t()}
  @type email :: %{type: :email, metadata: Kreuzberg.EmailMetadata.t()}
  @type pptx :: %{type: :pptx, metadata: Kreuzberg.PptxMetadata.t()}
  @type archive :: %{type: :archive, metadata: Kreuzberg.ArchiveMetadata.t()}
  @type image :: %{type: :image, metadata: Kreuzberg.ImageMetadata.t()}
  @type xml :: %{type: :xml, metadata: Kreuzberg.XmlMetadata.t()}
  @type text :: %{type: :text, metadata: Kreuzberg.TextMetadata.t()}
  @type html :: %{type: :html, metadata: Kreuzberg.HtmlMetadata.t()}
  @type ocr :: %{type: :ocr, metadata: Kreuzberg.OcrMetadata.t()}
  @type csv :: %{type: :csv, metadata: Kreuzberg.CsvMetadata.t()}
  @type bibtex :: %{type: :bibtex, metadata: Kreuzberg.BibtexMetadata.t()}
  @type citation :: %{type: :citation, metadata: Kreuzberg.CitationMetadata.t()}
  @type fiction_book :: %{type: :fiction_book, metadata: Kreuzberg.FictionBookMetadata.t()}
  @type dbf :: %{type: :dbf, metadata: Kreuzberg.DbfMetadata.t()}
  @type jats :: %{type: :jats, metadata: Kreuzberg.JatsMetadata.t()}
  @type epub :: %{type: :epub, metadata: Kreuzberg.EpubMetadata.t()}
  @type pst :: %{type: :pst, metadata: Kreuzberg.PstMetadata.t()}
  @type code :: %{type: :code, value: String.t()}
end
