# codegen: do not edit
defmodule GenLSP.Structures.WorkspaceFoldersServerCapabilities do
  import Schematic, warn: false

  use TypedStruct

  @doc """
  ## Fields

  * supported: The server has support for workspace folders
  * change_notifications: Whether the server wants to receive workspace folder
    change notifications.

    If a string is provided the string is treated as an ID
    under which the notification is registered on the client
    side. The ID can be used to unregister for these events
    using the `client/unregisterCapability` request.
  """
  @derive Jason.Encoder
  typedstruct do
    field :supported, boolean()
    field :change_notifications, String.t() | boolean()
  end

  @doc false
  @spec schema() :: Schematic.t()
  def schema() do
    schema(__MODULE__, %{
      optional({"supported", :supported}) => bool(),
      optional({"changeNotifications", :change_notifications}) => oneof([str(), bool()])
    })
  end
end
