# 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.LayoutClass do
  @moduledoc """
  The 17 canonical document layout classes.

  All model backends (RT-DETR, YOLO, etc.) map their native class IDs
  to this shared set. Models with fewer classes (DocLayNet: 11, PubLayNet: 5)
  map to the closest equivalent.

  Wire format is snake_case in all serializers (JSON, TOML, YAML).
  """

  @typedoc "The 17 canonical document layout classes."
  @type t ::
          :caption
          | :footnote
          | :formula
          | :list_item
          | :page_footer
          | :page_header
          | :picture
          | :section_header
          | :table
          | :text
          | :title
          | :document_index
          | :code
          | :checkbox_selected
          | :checkbox_unselected
          | :form
          | :key_value_region

  @caption :caption
  @footnote :footnote
  @formula :formula
  @list_item :list_item
  @page_footer :page_footer
  @page_header :page_header
  @picture :picture
  @section_header :section_header
  @table :table
  @text :text
  @title :title
  @document_index :document_index
  @code :code
  @checkbox_selected :checkbox_selected
  @checkbox_unselected :checkbox_unselected
  @form :form
  @key_value_region :key_value_region

  @spec caption() :: t()
  def caption, do: @caption
  @spec footnote() :: t()
  def footnote, do: @footnote
  @spec formula() :: t()
  def formula, do: @formula
  @spec list_item() :: t()
  def list_item, do: @list_item
  @spec page_footer() :: t()
  def page_footer, do: @page_footer
  @spec page_header() :: t()
  def page_header, do: @page_header
  @spec picture() :: t()
  def picture, do: @picture
  @spec section_header() :: t()
  def section_header, do: @section_header
  @spec table() :: t()
  def table, do: @table
  @spec text() :: t()
  def text, do: @text
  @spec title() :: t()
  def title, do: @title
  @spec document_index() :: t()
  def document_index, do: @document_index
  @spec code() :: t()
  def code, do: @code
  @spec checkbox_selected() :: t()
  def checkbox_selected, do: @checkbox_selected
  @spec checkbox_unselected() :: t()
  def checkbox_unselected, do: @checkbox_unselected
  @spec form() :: t()
  def form, do: @form
  @spec key_value_region() :: t()
  def key_value_region, do: @key_value_region
end
