sig
  type 'a t
  type callback_id = private int
  val create : unit -> 'Utils.Callback.t
  val register : 'Utils.Callback.t -> f:'-> Utils.Callback.callback_id
  val remove : 'Utils.Callback.t -> id:int -> unit
  val iter : 'Utils.Callback.t -> f:('-> unit) -> unit
  val call1 : ('-> unit) Utils.Callback.t -> '-> unit
  val call2 : ('-> '-> unit) Utils.Callback.t -> '-> '-> unit
end