# This file generated by `mix dagger.gen`. Please DO NOT EDIT.
defmodule Dagger.ModuleDependency do
  @moduledoc "The configuration of dependency of a module."
  use Dagger.QueryBuilder
  @type t() :: %__MODULE__{}
  defstruct [:selection, :client]

  (
    @doc "A unique identifier for this ModuleDependency."
    @spec id(t()) :: {:ok, Dagger.ModuleDependencyID.t()} | {:error, term()}
    def id(%__MODULE__{} = module_dependency) do
      selection = select(module_dependency.selection, "id")
      execute(selection, module_dependency.client)
    end
  )

  (
    @doc ""
    @spec name(t()) :: {:ok, Dagger.String.t()} | {:error, term()}
    def name(%__MODULE__{} = module_dependency) do
      selection = select(module_dependency.selection, "name")
      execute(selection, module_dependency.client)
    end
  )

  (
    @doc ""
    @spec source(t()) :: Dagger.ModuleSource.t()
    def source(%__MODULE__{} = module_dependency) do
      selection = select(module_dependency.selection, "source")
      %Dagger.ModuleSource{selection: selection, client: module_dependency.client}
    end
  )
end
