sig
  type t = Elm.theme
  val _new : unit -> Elm_theme.t
  val free : Elm_theme.t -> unit
  val copy : Elm_theme.t -> Elm_theme.t -> unit
  val ref_set : Elm_theme.t -> Elm_theme.t option -> unit
  val ref_get : Elm_theme.t -> Elm_theme.t option
  val default_get : unit -> Elm_theme.t
  val overlay_add : ?th:Elm_theme.t -> string -> unit
  val overlay_del : ?th:Elm_theme.t -> string -> unit
  val overlay_list_get : Elm_theme.t -> string list
  val extension_add : ?th:Elm_theme.t -> string -> unit
  val extension_del : ?th:Elm_theme.t -> string -> unit
  val extension_list_get : Elm_theme.t -> string list
  val set : ?th:Elm_theme.t -> string -> unit
  val get : ?th:Elm_theme.t -> unit -> string
  val list_get : ?th:Elm_theme.t -> unit -> string list
  val list_item_path_get : string -> (string * bool) option
  val flush : ?th:Elm_theme.t -> unit -> unit
  val full_flush : unit -> unit
  val name_available_list_get : unit -> string list
  val data_get : ?th:Elm_theme.t -> string -> string option
  val group_path_find : ?th:Elm_theme.t -> string -> string option
  val group_base_list : ?th:Elm_theme.t -> string -> string list
  val system_dir_get : unit -> string
  val user_dir_get : unit -> string
end