# 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.TableModel do
  @moduledoc """
  Which table structure recognition model to use.

  Controls the model used for table cell detection within layout-detected
  table regions. Wire format is snake_case in all serializers (JSON, TOML,
  YAML).
  """

  @typedoc "Which table structure recognition model to use."
  @type t :: :tatr | :slanet_wired | :slanet_wireless | :slanet_plus | :slanet_auto | :disabled

  @tatr :tatr
  @slanet_wired :slanet_wired
  @slanet_wireless :slanet_wireless
  @slanet_plus :slanet_plus
  @slanet_auto :slanet_auto
  @disabled :disabled

  @doc "TATR (Table Transformer) -- default, 30MB, DETR-based row/column detection."
  @spec tatr() :: t()
  def tatr, do: @tatr
  @doc "SLANeXT wired variant -- 365MB, optimized for bordered tables."
  @spec slanet_wired() :: t()
  def slanet_wired, do: @slanet_wired
  @doc "SLANeXT wireless variant -- 365MB, optimized for borderless tables."
  @spec slanet_wireless() :: t()
  def slanet_wireless, do: @slanet_wireless
  @doc "SLANet-plus -- 7.78MB, lightweight general-purpose."
  @spec slanet_plus() :: t()
  def slanet_plus, do: @slanet_plus
  @doc "Classifier-routed SLANeXT: auto-select wired/wireless per table. Uses PP-LCNet classifier (6.78MB) + both SLANeXT variants (730MB total)."
  @spec slanet_auto() :: t()
  def slanet_auto, do: @slanet_auto
  @doc "Disable table structure model inference entirely; use heuristic path only."
  @spec disabled() :: t()
  def disabled, do: @disabled
end
