sig
  val random_state : unit -> Random.State.t
  val verbose : unit -> bool
  val long_tests : unit -> bool
  val set_seed : int -> unit
  val set_verbose : bool -> unit
  val set_long_tests : bool -> unit
  val get_time_between_msg : unit -> float
  val set_time_between_msg : float -> unit
  val run_tests :
    ?colors:bool ->
    ?verbose:bool ->
    ?long:bool ->
    ?out:Pervasives.out_channel ->
    ?rand:Random.State.t -> QCheck.Test.t list -> int
  val run_tests_main : ?argv:string array -> QCheck.Test.t list -> 'a
  module Color :
    sig
      type color = [ `Blue | `Cyan | `Green | `Normal | `Red | `Yellow ]
      val reset_line : string
      val pp_str_c :
        ?bold:bool ->
        colors:bool ->
        QCheck_base_runner.Color.color ->
        Pervasives.out_channel -> string -> unit
    end
  module Raw :
    sig
      type ('b, 'c) printer = {
        info : 'a. ('a, 'b, 'c, unit) Pervasives.format4 -> 'a;
        fail : 'a. ('a, 'b, 'c, unit) Pervasives.format4 -> 'a;
        err : 'a. ('a, 'b, 'c, unit) Pervasives.format4 -> 'a;
      }
      val print_std :
        (Pervasives.out_channel, unit) QCheck_base_runner.Raw.printer
      val callback :
        verbose:bool ->
        print_res:bool ->
        print:('a, 'b) QCheck_base_runner.Raw.printer ->
        string -> 'QCheck.Test.cell -> 'QCheck.TestResult.t -> unit
      type cli_args = {
        cli_verbose : bool;
        cli_long_tests : bool;
        cli_print_list : bool;
        cli_rand : Random.State.t;
        cli_slow_test : int;
        cli_colors : bool;
      }
      val parse_cli :
        full_options:bool -> string array -> QCheck_base_runner.Raw.cli_args
    end
end