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

  use TypedStruct

  @doc """
  ## Fields

  * dynamic_registration: Whether text document synchronization supports dynamic registration.
  * will_save: The client supports sending will save notifications.
  * will_save_wait_until: The client supports sending a will save request and
    waits for a response providing text edits which will
    be applied to the document before it is saved.
  * did_save: The client supports did save notifications.
  """
  @derive Jason.Encoder
  typedstruct do
    field :dynamic_registration, boolean()
    field :will_save, boolean()
    field :will_save_wait_until, boolean()
    field :did_save, boolean()
  end

  @doc false
  @spec schema() :: Schematic.t()
  def schema() do
    schema(__MODULE__, %{
      optional({"dynamicRegistration", :dynamic_registration}) => bool(),
      optional({"willSave", :will_save}) => bool(),
      optional({"willSaveWaitUntil", :will_save_wait_until}) => bool(),
      optional({"didSave", :did_save}) => bool()
    })
  end
end
