 
   Raises `Plug.Conn.AlreadySentError` if `conn` is already sent.
   """
-  @spec put_layout(Plug.Conn.t(), {atom, binary | atom} | atom | binary | false) :: Plug.Conn.t()
+  @spec put_layout(Plug.Conn.t(), [{format :: atom, layout}]) :: Plug.Conn.t()
   def put_layout(%Plug.Conn{state: state} = conn, layout) do
     if state in @unsent do
       put_private_layout(conn, :phoenix_layout, :replace, layout)


  Raises `Plug.Conn.AlreadySentError` if `conn` is already sent.
  """
  @spec put_root_layout(Plug.Conn.t(), {atom, binary | atom} | atom | binary | false) ::
          Plug.Conn.t()
  def put_root_layout(%Plug.Conn{state: state} = conn, layout) do
    if state in @unsent do

  require Phoenix.Endpoint

  @unsent [:unset, :set, :set_chunked, :set_file]
  
  @type view :: atom()
  @type layout :: {module(), layout_name :: atom()} | false

  @moduledoc """
  Controllers are used to group common functionality in the same
