# 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.ExecutionProviderType do
  @moduledoc """
  ONNX Runtime execution provider type.

  Determines which hardware backend is used for model inference.
  `Auto` (default) selects the best available provider per platform.
  """

  @typedoc "ONNX Runtime execution provider type."
  @type t :: :auto | :cpu | :core_ml | :cuda | :tensor_rt

  @auto :auto
  @cpu :cpu
  @core_ml :core_ml
  @cuda :cuda
  @tensor_rt :tensor_rt

  @doc "Auto-select: CoreML on macOS, CUDA on Linux, CPU elsewhere."
  @spec auto() :: t()
  def auto, do: @auto
  @doc "CPU execution provider (always available)."
  @spec cpu() :: t()
  def cpu, do: @cpu
  @doc "Apple CoreML (macOS/iOS Neural Engine + GPU)."
  @spec core_ml() :: t()
  def core_ml, do: @core_ml
  @doc "NVIDIA CUDA GPU acceleration."
  @spec cuda() :: t()
  def cuda, do: @cuda
  @doc "NVIDIA TensorRT (optimized CUDA inference)."
  @spec tensor_rt() :: t()
  def tensor_rt, do: @tensor_rt
end
