sig
  type t
  type expect_match =
      [ `Contains of string
      | `Eof
      | `Exact of string
      | `Fun of string -> bool
      | `Prefix of string
      | `Suffix of string
      | `Timeout ]
  val spawn :
    ?verbose:bool ->
    ?verbose_output:(string -> unit) ->
    ?timeout:float option ->
    ?env:string array ->
    ?use_stderr:bool -> string -> string array -> Expect.t
  val set_timeout : Expect.t -> float option -> Expect.t
  val send : Expect.t -> string -> unit
  val expect :
    Expect.t ->
    ?fmatches:(string -> 'a option) list ->
    (Expect.expect_match * 'a) list -> '-> 'a
  val close : Expect.t -> Unix.process_status
  val with_spawn :
    ?verbose:bool ->
    ?verbose_output:(string -> unit) ->
    ?timeout:float option ->
    ?env:string array ->
    ?use_stderr:bool ->
    string ->
    string array -> (Expect.t -> '-> 'a) -> '-> 'a * Unix.process_status
end