# This file generated by `mix dagger.gen`. Please DO NOT EDIT.
defmodule Dagger.ModuleConfig do
  @moduledoc "Static configuration for a module (e.g. parsed contents of dagger.json)"
  use Dagger.QueryBuilder
  @type t() :: %__MODULE__{}
  defstruct [:selection, :client]

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

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

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

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

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

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

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