# 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.ChunkType do
  @moduledoc """
  Semantic structural classification of a text chunk.

  Assigned by the heuristic classifier in `chunking::classifier`.
  Defaults to `Unknown` when no rule matches.
  Designed to be extended in future versions without breaking changes.
  """

  @typedoc "Semantic structural classification of a text chunk."
  @type t ::
          :heading
          | :party_list
          | :definitions
          | :operative_clause
          | :signature_block
          | :schedule
          | :table_like
          | :formula
          | :code_block
          | :image
          | :org_chart
          | :diagram
          | :unknown

  @heading :heading
  @party_list :party_list
  @definitions :definitions
  @operative_clause :operative_clause
  @signature_block :signature_block
  @schedule :schedule
  @table_like :table_like
  @formula :formula
  @code_block :code_block
  @image :image
  @org_chart :org_chart
  @diagram :diagram
  @unknown :unknown

  @doc "Section heading or document title."
  @spec heading() :: t()
  def heading, do: @heading
  @doc "Party list: names, addresses, and signatories."
  @spec party_list() :: t()
  def party_list, do: @party_list
  @doc "Definition clause (\"X means…\", \"X shall mean…\")."
  @spec definitions() :: t()
  def definitions, do: @definitions
  @doc "Operative clause containing legal/contractual action verbs."
  @spec operative_clause() :: t()
  def operative_clause, do: @operative_clause
  @doc "Signature block with signatures, names, and dates."
  @spec signature_block() :: t()
  def signature_block, do: @signature_block
  @doc "Schedule, annex, appendix, or exhibit section."
  @spec schedule() :: t()
  def schedule, do: @schedule
  @doc "Table-like content with aligned columns or repeated patterns."
  @spec table_like() :: t()
  def table_like, do: @table_like
  @doc "Mathematical formula or equation."
  @spec formula() :: t()
  def formula, do: @formula
  @doc "Code block or preformatted content."
  @spec code_block() :: t()
  def code_block, do: @code_block
  @doc "Embedded or referenced image content."
  @spec image() :: t()
  def image, do: @image
  @doc "Organizational chart or hierarchy diagram."
  @spec org_chart() :: t()
  def org_chart, do: @org_chart
  @doc "Diagram, figure, or visual illustration."
  @spec diagram() :: t()
  def diagram, do: @diagram
  @doc "Unclassified or mixed content."
  @spec unknown() :: t()
  def unknown, do: @unknown
end
