sig
  module Std :
    sig
      module Deferred :
        sig
          type 'a t
          val bind :
            'Async.Std.Deferred.t ->
            ('-> 'Async.Std.Deferred.t) -> 'Async.Std.Deferred.t
          val both :
            'Async.Std.Deferred.t ->
            'Async.Std.Deferred.t -> ('a * 'b) Async.Std.Deferred.t
          val all :
            'Async.Std.Deferred.t list -> 'a list Async.Std.Deferred.t
          val any : 'Async.Std.Deferred.t list -> 'Async.Std.Deferred.t
          module List :
            sig
              val fold :
                'a list ->
                '->
                ('-> '-> 'Async.Std.Deferred.t) ->
                'Async.Std.Deferred.t
              val find :
                'a list ->
                ('-> bool Async.Std.Deferred.t) ->
                'a option Async.Std.Deferred.t
              val map :
                ?how:[ `Parallel | `Sequential ] ->
                'a list ->
                ('-> 'Async.Std.Deferred.t) ->
                'b list Async.Std.Deferred.t
              val iter :
                ?how:[ `Parallel | `Sequential ] ->
                'a list ->
                ('-> unit Async.Std.Deferred.t) ->
                unit Async.Std.Deferred.t
              val filter :
                ?how:[ `Parallel | `Sequential ] ->
                'a list ->
                ('-> bool Async.Std.Deferred.t) ->
                'a list Async.Std.Deferred.t
            end
        end
      val ( >>= ) :
        'Async.Std.Deferred.t ->
        ('-> 'Async.Std.Deferred.t) -> 'Async.Std.Deferred.t
      val ( >>| ) :
        'Async.Std.Deferred.t -> ('-> 'b) -> 'Async.Std.Deferred.t
      val return : '-> 'Async.Std.Deferred.t
      val don't_wait_for : unit Async.Std.Deferred.t -> unit
      val never : unit -> 'Async.Std.Deferred.t
      module Ivar :
        sig
          type 'a t
          val create : unit -> 'Async.Std.Ivar.t
          val read : 'Async.Std.Ivar.t -> 'Async.Std.Deferred.t
          val fill : 'Async.Std.Ivar.t -> '-> unit
          val fill_if_empty : 'Async.Std.Ivar.t -> '-> unit
          val is_full : 'Async.Std.Ivar.t -> bool
          val is_empty : 'Async.Std.Ivar.t -> bool
        end
      module Pipe :
        sig
          module Reader : sig type 'a t end
          module Writer : sig type 'a t end
          val create :
            unit -> 'Async.Std.Pipe.Reader.t * 'Async.Std.Pipe.Writer.t
          val write :
            'Async.Std.Pipe.Writer.t -> '-> unit Async.Std.Deferred.t
          val read :
            'Async.Std.Pipe.Reader.t ->
            [ `Eof | `Ok of 'a ] Async.Std.Deferred.t
        end
      val after : Core.Std.Time.Span.t -> unit Async.Std.Deferred.t
      val with_timeout :
        Core.Std.Time.Span.t ->
        'Async.Std.Deferred.t ->
        [ `Result of '| `Timeout ] Async.Std.Deferred.t
      val every :
        ?start:unit Async.Std.Deferred.t ->
        ?stop:unit Async.Std.Deferred.t ->
        Core.Std.Time.Span.t -> (unit -> unit) -> unit
      val printf : ('a, unit, string, unit) Pervasives.format4 -> 'a
      module Reader :
        sig
          type t
          val file_lines : string -> string list Async.Std.Deferred.t
          val file_contents : string -> string Async.Std.Deferred.t
          val read_line :
            Async.Std.Reader.t ->
            [ `Eof | `Ok of string ] Async.Std.Deferred.t
        end
      module Writer :
        sig type t val write_line : Async.Std.Writer.t -> string -> unit end
      module Socket :
        sig
          type 'a t
          val shutdown :
            'Async.Std.Socket.t -> [ `Both | `Receive | `Send ] -> unit
          module Address : sig type t end
        end
      module Tcp :
        sig
          type 'a where_to_connect
          val to_host_and_port :
            string ->
            int -> Async.Std.Socket.Address.t Async.Std.Tcp.where_to_connect
          val connect :
            'Async.Std.Tcp.where_to_connect ->
            ('Async.Std.Socket.t * Async.Std.Reader.t * Async.Std.Writer.t)
            Async.Std.Deferred.t
        end
      val try_with :
        (unit -> 'Async.Std.Deferred.t) ->
        ('a, exn) Core.Std.Result.t Async.Std.Deferred.t
    end
end