sig
  val random_state : unit -> Stdlib.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
  type counter = private {
    start : float;
    expected : int;
    mutable gen : int;
    mutable passed : int;
    mutable failed : int;
    mutable errored : int;
  }
  type handler = { handler : 'a. 'QCheck.Test.handler; }
  type handler_gen =
      colors:bool ->
      debug_shrink:Stdlib.out_channel option ->
      debug_shrink_list:string list ->
      size:int ->
      out:Stdlib.out_channel ->
      verbose:bool ->
      QCheck_base_runner.counter -> QCheck_base_runner.handler
  val default_handler : QCheck_base_runner.handler_gen
  val run_tests :
    ?handler:QCheck_base_runner.handler_gen ->
    ?colors:bool ->
    ?verbose:bool ->
    ?long:bool ->
    ?debug_shrink:Stdlib.out_channel option ->
    ?debug_shrink_list:string list ->
    ?out:Stdlib.out_channel ->
    ?rand:Stdlib.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 ->
        Stdlib.out_channel -> string -> unit
    end
  module Raw :
    sig
      type ('b, 'c) printer = {
        info : 'a. ('a, 'b, 'c, unit) Stdlib.format4 -> 'a;
        fail : 'a. ('a, 'b, 'c, unit) Stdlib.format4 -> 'a;
        err : 'a. ('a, 'b, 'c, unit) Stdlib.format4 -> 'a;
      }
      val print_std :
        (Stdlib.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 : Stdlib.Random.State.t;
        cli_slow_test : int;
        cli_colors : bool;
        cli_debug_shrink : Stdlib.out_channel option;
        cli_debug_shrink_list : string list;
      }
      val parse_cli :
        full_options:bool -> string array -> QCheck_base_runner.Raw.cli_args
    end
end