sig
  type 'a t
  val create : 'a list -> 'a Zed_macro.t
  val recording : 'a Zed_macro.t -> bool React.signal
  val get_recording : 'a Zed_macro.t -> bool
  val set_recording : 'a Zed_macro.t -> bool -> unit
  val cancel : 'a Zed_macro.t -> unit
  val count : 'a Zed_macro.t -> int React.signal
  val get_count : 'a Zed_macro.t -> int
  val add : 'a Zed_macro.t -> 'a -> unit
  val contents : 'a Zed_macro.t -> 'a list
  val counter : 'a Zed_macro.t -> int React.signal
  val get_counter : 'a Zed_macro.t -> int
  val set_counter : 'a Zed_macro.t -> int -> unit
  val add_counter : 'a Zed_macro.t -> int -> unit
end