lib/models/behaviour.ex

defmodule Replicate.Models.Behaviour do
  @moduledoc """
  Documentation for the Model Behaviour
  """
  @callback get!(name :: String.t()) :: Replicate.Models.Model.t()
  @callback get(name :: String.t()) :: {:ok, Replicate.Models.Model.t()} | {:error, String.t()}
  @callback get_version!(Replicate.Models.Model.t(), version :: String.t()) ::
              Replicate.Models.Version.t()
  @callback get_latest_version!(Replicate.Models.Model.t()) :: Replicate.Models.Version.t()
  @callback list_versions(Replicate.Models.Model.t()) :: [Replicate.Models.Version.t()]
  @callback list() :: %{
              results: [Replicate.Models.Model.t()],
              next: String.t(),
              previous: String.t()
            }
end