sig
  type 'a t = ('a, Execution_context.t) Raw_stream.t
  val sexp_of_t :
    ('-> Sexplib.Sexp.t) -> 'Async_stream.t -> Sexplib.Sexp.t
  val create : ('Tail.t -> unit) -> 'Async_stream.t
  type ('a, 'execution_context) next_ =
      Nil
    | Cons of 'a * ('a, 'execution_context) Raw_stream.t
  type 'a next = ('a, Execution_context.t) Async_stream.next_
  val next : 'Async_stream.t -> 'Async_stream.next Deferred.t
  val first_exn : 'Async_stream.t -> 'Deferred.t
  val of_list : 'a list -> 'Async_stream.t
  val to_list : 'Async_stream.t -> 'a list Deferred.t
  val of_fun : (unit -> 'Deferred.t) -> 'Async_stream.t
  val copy_to_tail : 'Async_stream.t -> 'Tail.t -> unit Deferred.t
  val append : 'Async_stream.t -> 'Async_stream.t -> 'Async_stream.t
  val concat : 'Async_stream.t Async_stream.t -> 'Async_stream.t
  val available_now : 'Async_stream.t -> 'a list * 'Async_stream.t
  val filter' :
    'Async_stream.t -> f:('-> bool Deferred.t) -> 'Async_stream.t
  val filter : 'Async_stream.t -> f:('-> bool) -> 'Async_stream.t
  val filter_map' :
    'Async_stream.t -> f:('-> 'b option Deferred.t) -> 'Async_stream.t
  val filter_map :
    'Async_stream.t -> f:('-> 'b option) -> 'Async_stream.t
  val fold' :
    'Async_stream.t ->
    init:'-> f:('-> '-> 'Deferred.t) -> 'Deferred.t
  val fold :
    'Async_stream.t -> init:'-> f:('-> '-> 'b) -> 'Deferred.t
  val iter' :
    'Async_stream.t -> f:('-> unit Deferred.t) -> unit Deferred.t
  val closed : 'Async_stream.t -> unit Deferred.t
  val iter : 'Async_stream.t -> f:('-> unit) -> unit
  val take_until : 'Async_stream.t -> unit Deferred.t -> 'Async_stream.t
  val iter_durably' :
    'Async_stream.t -> f:('-> unit Deferred.t) -> unit Deferred.t
  val iter_durably : 'Async_stream.t -> f:('-> unit) -> unit
  val iter_durably_report_end :
    'Async_stream.t -> f:('-> unit) -> unit Deferred.t
  val length : 'Async_stream.t -> int Deferred.t
  val map' :
    'Async_stream.t -> f:('-> 'Deferred.t) -> 'Async_stream.t
  val map : 'Async_stream.t -> f:('-> 'b) -> 'Async_stream.t
  val first_n : 'Async_stream.t -> int -> 'Async_stream.t
  val unfold :
    '-> f:('-> ('a * 'b) option Deferred.t) -> 'Async_stream.t
  val split :
    ?stop:unit Deferred.t ->
    ?f:('-> [ `Continue | `Found of 'b ]) ->
    'Async_stream.t ->
    'Async_stream.t *
    [ `End_of_stream
    | `Found of 'b * 'Async_stream.t
    | `Stopped of 'Async_stream.t ] Deferred.t
  val find :
    'Async_stream.t ->
    f:('-> bool) ->
    [ `End_of_stream | `Found of 'a * 'Async_stream.t ] Deferred.t
  val ungroup : 'a list Async_stream.t -> 'Async_stream.t
  val interleave : 'Async_stream.t Async_stream.t -> 'Async_stream.t
  val ounit_tests : unit -> OUnit.test
end