sig
  type ('a, 'b, 'c) t = {
    initial_threshold : 'a;
    mutable threshold : 'a;
    loosen : '-> threshold:'-> 'a;
    assertion : '-> threshold:'-> bool;
    fail_alert : '-> 'c;
    success_alert : '-> 'c;
  }
  val create :
    threshold:'->
    loosen:('-> threshold:'-> 'a) ->
    assertion:('-> threshold:'-> bool) ->
    fail_alert:('-> 'c) ->
    success_alert:('-> 'c) -> ('a, 'b, 'c) Error_check.Step.t
  val check : ('a, 'b, 'c) Error_check.Step.t -> '-> 'c option
  val state : ('a, 'b, 'c) Error_check.Step.t -> bool
  val sexp_of_t :
    '-> '-> '-> ('d, 'e, 'f) Error_check.Step.t -> Sexplib.Sexp.t
end