# 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.ElementType do
  @moduledoc """
  Semantic element type classification.

  Categorizes text content into semantic units for downstream processing.
  Supports the element types commonly found in Unstructured documents.
  """

  @typedoc "Semantic element type classification."
  @type t ::
          :title
          | :narrative_text
          | :heading
          | :list_item
          | :table
          | :image
          | :page_break
          | :code_block
          | :block_quote
          | :footer
          | :header

  @title :title
  @narrative_text :narrative_text
  @heading :heading
  @list_item :list_item
  @table :table
  @image :image
  @page_break :page_break
  @code_block :code_block
  @block_quote :block_quote
  @footer :footer
  @header :header

  @doc "Document title"
  @spec title() :: t()
  def title, do: @title
  @doc "Main narrative text body"
  @spec narrative_text() :: t()
  def narrative_text, do: @narrative_text
  @doc "Section heading"
  @spec heading() :: t()
  def heading, do: @heading
  @doc "List item (bullet, numbered, etc.)"
  @spec list_item() :: t()
  def list_item, do: @list_item
  @doc "Table element"
  @spec table() :: t()
  def table, do: @table
  @doc "Image element"
  @spec image() :: t()
  def image, do: @image
  @doc "Page break marker"
  @spec page_break() :: t()
  def page_break, do: @page_break
  @doc "Code block"
  @spec code_block() :: t()
  def code_block, do: @code_block
  @doc "Block quote"
  @spec block_quote() :: t()
  def block_quote, do: @block_quote
  @doc "Footer text"
  @spec footer() :: t()
  def footer, do: @footer
  @doc "Header text"
  @spec header() :: t()
  def header, do: @header
end
