sig
  module Init :
    sig
      type t
      val start : Dtools.Init.t
      val stop : Dtools.Init.t
      val make :
        ?name:string ->
        ?depends:Dtools.Init.t list ->
        ?triggers:Dtools.Init.t list ->
        ?after:Dtools.Init.t list ->
        ?before:Dtools.Init.t list -> (unit -> unit) -> Dtools.Init.t
      val at_start :
        ?name:string ->
        ?depends:Dtools.Init.t list ->
        ?triggers:Dtools.Init.t list ->
        ?after:Dtools.Init.t list ->
        ?before:Dtools.Init.t list -> (unit -> unit) -> Dtools.Init.t
      val at_stop :
        ?name:string ->
        ?depends:Dtools.Init.t list ->
        ?triggers:Dtools.Init.t list ->
        ?after:Dtools.Init.t list ->
        ?before:Dtools.Init.t list -> (unit -> unit) -> Dtools.Init.t
      val exec : Dtools.Init.t -> unit
      val init : ?prohibit_root:bool -> (unit -> unit) -> unit
      exception StartError of exn
      exception StopError of exn
    end
  module Conf :
    sig
      type t = string
      val cons : Dtools.Conf.t -> Dtools.Conf.t -> Dtools.Conf.t
      exception Wrong_Conf of Dtools.Conf.t * string
      exception File_Wrong_Conf of Dtools.Conf.t * int * string
      exception Undefined of Dtools.Conf.t * string
      val set_int : ?root:string -> Dtools.Conf.t -> int -> unit
      val set_float : ?root:string -> Dtools.Conf.t -> float -> unit
      val set_bool : ?root:string -> Dtools.Conf.t -> bool -> unit
      val set_string : ?root:string -> Dtools.Conf.t -> string -> unit
      val set_list : ?root:string -> Dtools.Conf.t -> string list -> unit
      val get_int :
        ?root:Dtools.Conf.t -> ?default:int -> Dtools.Conf.t -> int
      val get_float :
        ?root:Dtools.Conf.t -> ?default:float -> Dtools.Conf.t -> float
      val get_bool :
        ?root:Dtools.Conf.t -> ?default:bool -> Dtools.Conf.t -> bool
      val get_string :
        ?root:Dtools.Conf.t -> ?default:string -> Dtools.Conf.t -> string
      val get_list :
        ?root:Dtools.Conf.t ->
        ?default:string list -> Dtools.Conf.t -> string list
      val ref_int :
        ?root:Dtools.Conf.t ->
        ?default:int -> Dtools.Conf.t -> int Pervasives.ref
      val ref_float :
        ?root:Dtools.Conf.t ->
        ?default:float -> Dtools.Conf.t -> float Pervasives.ref
      val ref_bool :
        ?root:Dtools.Conf.t ->
        ?default:bool -> Dtools.Conf.t -> bool Pervasives.ref
      val ref_string :
        ?root:Dtools.Conf.t ->
        ?default:string -> Dtools.Conf.t -> string Pervasives.ref
      val ref_list :
        ?root:Dtools.Conf.t ->
        ?default:string list -> Dtools.Conf.t -> string list Pervasives.ref
      val conf : string -> unit
      val read_file : string -> unit
    end
  module Var :
    sig
      type kind = Bool | Int | Float | String | List
      exception Duplicate_definition
      val register : string -> Dtools.Var.kind -> unit
      exception Type_error of string * Dtools.Var.kind
      val set_bool : string -> bool -> unit
      val set_int : string -> int -> unit
      val set_float : string -> float -> unit
      val set_string : string -> string -> unit
      val set_list : string -> string list -> unit
    end
  module Log :
    sig
      val log : ?label:string -> int -> string -> unit
      val logl : ?label:string -> int -> string Lazy.t -> unit
      val logged : string -> int -> bool
      val f : ('a, unit, string) Pervasives.format -> 'a
      val start : Dtools.Init.t
      val stop : Dtools.Init.t
    end
  module Options : sig val list : (string * Arg.spec * string) list end
end