sig
  module Point :
    sig
      type t
      val create : string -> Monitor_sig.Monitor.Point.t
      val kill : Monitor_sig.Monitor.Point.t -> unit
      val observe : Monitor_sig.Monitor.Point.t -> unit
      val observe_calls : string -> ('-> '-> 'c) -> '-> '-> 'c
      val observe_calls2 : string -> ('-> '-> 'c) -> '-> '-> 'c
      val observe_calls_rec : string -> (('-> 'b) -> '-> 'b) -> '-> 'b
      val observe_calls_rec2 :
        string -> (('-> '-> 'c) -> '-> '-> 'c) -> '-> '-> 'c
    end
  module Tag :
    sig
      module WeakHash :
        sig
          type t
          type data
          val create : int -> Monitor_sig.Monitor.Tag.WeakHash.t
          val clear : Monitor_sig.Monitor.Tag.WeakHash.t -> unit
          val merge :
            Monitor_sig.Monitor.Tag.WeakHash.t ->
            Monitor_sig.Monitor.Tag.WeakHash.data ->
            Monitor_sig.Monitor.Tag.WeakHash.data
          val add :
            Monitor_sig.Monitor.Tag.WeakHash.t ->
            Monitor_sig.Monitor.Tag.WeakHash.data -> unit
          val remove :
            Monitor_sig.Monitor.Tag.WeakHash.t ->
            Monitor_sig.Monitor.Tag.WeakHash.data -> unit
          val find :
            Monitor_sig.Monitor.Tag.WeakHash.t ->
            Monitor_sig.Monitor.Tag.WeakHash.data ->
            Monitor_sig.Monitor.Tag.WeakHash.data
          val find_all :
            Monitor_sig.Monitor.Tag.WeakHash.t ->
            Monitor_sig.Monitor.Tag.WeakHash.data ->
            Monitor_sig.Monitor.Tag.WeakHash.data list
          val mem :
            Monitor_sig.Monitor.Tag.WeakHash.t ->
            Monitor_sig.Monitor.Tag.WeakHash.data -> bool
          val iter :
            (Monitor_sig.Monitor.Tag.WeakHash.data -> unit) ->
            Monitor_sig.Monitor.Tag.WeakHash.t -> unit
          val fold :
            (Monitor_sig.Monitor.Tag.WeakHash.data -> '-> 'a) ->
            Monitor_sig.Monitor.Tag.WeakHash.t -> '-> 'a
          val count : Monitor_sig.Monitor.Tag.WeakHash.t -> int
          val stats :
            Monitor_sig.Monitor.Tag.WeakHash.t ->
            int * int * int * int * int * int
        end
      type t
      val create :
        ?size:bool ->
        ?count:bool ->
        ?fct_size:(Monitor_sig.Monitor.Tag.WeakHash.t -> Int64.t) ->
        ?period:int -> string -> Monitor_sig.Monitor.Tag.t
      val kill : Monitor_sig.Monitor.Tag.t -> unit
      val set_period : Monitor_sig.Monitor.Tag.t -> int -> unit
      val mark : Monitor_sig.Monitor.Tag.t -> '-> 'a
    end
  module Time :
    sig
      type t
      val elapsed_time : unit -> float
      val create : string -> Monitor_sig.Monitor.Time.t
      val kill : Monitor_sig.Monitor.Time.t -> unit
      val start : Monitor_sig.Monitor.Time.t -> unit
      val stop : Monitor_sig.Monitor.Time.t -> unit
      val time : string -> ('-> 'b) -> '-> 'b
    end
  module Value :
    sig
      val observe_int_fct :
        ?weak:bool -> ?period:int -> string -> (unit -> int) -> unit
      val observe_int : ?weak:bool -> ?period:int -> string -> int -> unit
      val observe_float_fct :
        ?weak:bool -> ?period:int -> string -> (unit -> float) -> unit
      val observe_float :
        ?weak:bool -> ?period:int -> string -> float -> unit
      val observe_bool_fct :
        ?weak:bool -> ?period:int -> string -> (unit -> bool) -> unit
      val observe_bool : ?weak:bool -> ?period:int -> string -> bool -> unit
      val observe_string_fct :
        ?weak:bool -> ?period:int -> string -> (unit -> string) -> unit
      val observe_string :
        ?weak:bool -> ?period:int -> string -> string -> unit
      val observe_int_ref :
        ?period:int -> string -> int Pervasives.ref -> int Pervasives.ref
      val observe_float_ref :
        ?period:int -> string -> float Pervasives.ref -> float Pervasives.ref
      val observe_bool_ref :
        ?period:int -> string -> bool Pervasives.ref -> bool Pervasives.ref
      val observe_string_ref :
        ?period:int ->
        string -> string Pervasives.ref -> string Pervasives.ref
    end
  module Tree :
    sig
      val observe :
        ?period:int -> string -> (unit -> Protocol.variant) -> unit
    end
  module Hashtable :
    sig type 'a t val observe : ?period:int -> string -> '-> 'end
  val to_send : unit -> string
  val declare_tags : unit -> string
  val log : ('a, Format.formatter, unit, unit) Pervasives.format4 -> 'a
  val wait_for_connected_clients : int -> unit
  val wait_for_killed_clients : unit -> unit
  val set_nb_clients : int -> unit
end