functor (P : LOGGER_CONFIGURATION->
  sig
    type t = SmartPrint.t
    type ('a, 'b) result = ('a, 'b) P.result
    val empty : t
    val string : string -> t
    val sub_string : string -> int -> int -> t
    val ( !^ ) : string -> t
    val space : t
    val newline : t
    val append : t -> t -> t
    val ( ^-^ ) : t -> t -> t
    val concat_with_space : t -> t -> t
    val ( ^^ ) : t -> t -> t
    val words : string -> t
    val lines : string -> t
    val indent : t -> t
    val nest : t -> t
    val nest_all : t -> t
    val group : t -> t
    val group_all : t -> t
    val parens : t -> t
    val braces : t -> t
    val brakets : t -> t
    val angle_brakets : t -> t
    val single_quotes : t -> t
    val double_quotes : t -> t
    val concat : t list -> t
    val separate : t -> t list -> t
    module OCaml :
      sig
        val unit : unit -> t
        val bool : bool -> t
        val int : int -> t
        val float : float -> t
        val string : string -> t
        val option : ('-> t) -> 'a option -> t
        val list : ('-> t) -> 'a list -> t
        val tuple : t list -> t
      end
    val to_something :
      int ->
      int ->
      (char -> unit) ->
      (string -> unit) -> (string -> int -> int -> unit) -> t -> unit
    val to_buffer : int -> int -> Buffer.t -> t -> unit
    val to_out_channel : int -> int -> out_channel -> t -> unit
    val to_stdout : int -> int -> t -> unit
    val ( % ) : t -> t -> t
    val s : string -> t
    val sp : t
    val sf : ('a, unit, string, t) format4 -> 'a
    val i : int -> t
    val f : float -> t
    val n : t
    val verbatim : string -> t
    val exn : exn -> t
    val option : f:('-> t) -> 'a option -> t
    val escape : string -> t
    val color : string -> t -> t
    val bold_red : t -> t
    val bold_yellow : t -> t
    val bold_green : t -> t
    val greyish : t -> t
    val to_string : line_width:int -> indent:int -> SmartPrint.t -> string
    val to_list :
      line_width:int ->
      indent:int ->
      SmartPrint.t ->
      [> `Char of char
       | `String of string
       | `Sub_string of string * int * int ]
      list
    val print :
      [< `Debug of int | `Error | `Normal | `Warning ] ->
      t -> (unit, 'a) result
    val ( @ ) :
      t ->
      [< `Debug of int | `Error | `Normal | `Warning ] -> (unit, 'a) result
    val normal : [> `Normal ]
    val error : [> `Error ]
    val warning : [> `Warning ]
    val verbose : [> `Debug of int ]
    val very_verbose : [> `Debug of int ]
  end