sig
  type doc
  val nil : Pretty.doc
  val ( ++ ) : Pretty.doc -> Pretty.doc -> Pretty.doc
  val concat : Pretty.doc -> Pretty.doc -> Pretty.doc
  val text : string -> Pretty.doc
  val num : int -> Pretty.doc
  val num64 : int64 -> Pretty.doc
  val real : float -> Pretty.doc
  val chr : char -> Pretty.doc
  val line : Pretty.doc
  val leftflush : Pretty.doc
  val break : Pretty.doc
  val align : Pretty.doc
  val unalign : Pretty.doc
  val mark : Pretty.doc
  val unmark : Pretty.doc
  val indent : int -> Pretty.doc -> Pretty.doc
  val markup : Pretty.doc -> Pretty.doc
  val seq :
    sep:Pretty.doc ->
    doit:('-> Pretty.doc) -> elements:'a list -> Pretty.doc
  val docList :
    ?sep:Pretty.doc -> ('-> Pretty.doc) -> unit -> 'a list -> Pretty.doc
  val d_list :
    string -> (unit -> '-> Pretty.doc) -> unit -> 'a list -> Pretty.doc
  val docArray :
    ?sep:Pretty.doc ->
    (int -> '-> Pretty.doc) -> unit -> 'a array -> Pretty.doc
  val docOpt : ('-> Pretty.doc) -> unit -> 'a option -> Pretty.doc
  val d_int32 : int32 -> Pretty.doc
  val f_int32 : unit -> int32 -> Pretty.doc
  val d_int64 : int64 -> Pretty.doc
  val f_int64 : unit -> int64 -> Pretty.doc
  module MakeMapPrinter :
    functor
      (Map : sig
               type key
               type 'a t
               val fold :
                 (Pretty.MakeMapPrinter.key -> '-> '-> 'b) ->
                 'Pretty.MakeMapPrinter.t -> '-> 'b
             end->
      sig
        val docMap :
          ?sep:Pretty.doc ->
          (Map.key -> '-> Pretty.doc) -> unit -> 'Map.t -> Pretty.doc
        val d_map :
          ?dmaplet:(Pretty.doc -> Pretty.doc -> Pretty.doc) ->
          string ->
          (unit -> Map.key -> Pretty.doc) ->
          (unit -> '-> Pretty.doc) -> unit -> 'Map.t -> Pretty.doc
      end
  module MakeSetPrinter :
    functor
      (Set : sig
               type elt
               type t
               val fold :
                 (Pretty.MakeSetPrinter.elt -> '-> 'a) ->
                 Pretty.MakeSetPrinter.t -> '-> 'a
             end->
      sig
        val docSet :
          ?sep:Pretty.doc ->
          (Set.elt -> Pretty.doc) -> unit -> Set.t -> Pretty.doc
        val d_set :
          string ->
          (unit -> Set.elt -> Pretty.doc) -> unit -> Set.t -> Pretty.doc
      end
  val insert : unit -> Pretty.doc -> Pretty.doc
  val dprintf : ('a, unit, Pretty.doc, Pretty.doc) Pervasives.format4 -> 'a
  val gprintf :
    (Pretty.doc -> 'a) -> ('b, unit, Pretty.doc, 'a) Pervasives.format4 -> 'b
  val fprint : Pervasives.out_channel -> width:int -> Pretty.doc -> unit
  val sprint : width:int -> Pretty.doc -> string
  val fprintf :
    Pervasives.out_channel -> ('a, unit, Pretty.doc) Pervasives.format -> 'a
  val printf : ('a, unit, Pretty.doc) Pervasives.format -> 'a
  val eprintf : ('a, unit, Pretty.doc) Pervasives.format -> 'a
  val withPrintDepth : int -> (unit -> unit) -> unit
  val printDepth : int Pervasives.ref
  val printIndent : bool Pervasives.ref
  val fastMode : bool Pervasives.ref
  val flushOften : bool Pervasives.ref
  val countNewLines : int Pervasives.ref
  val auto_printer : string -> 'a
end