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