sig
  type +'a t
  val return : '-> 'Lwt.t
  val fail : exn -> 'Lwt.t
  val fail_with : string -> 'Lwt.t
  val fail_invalid_arg : string -> 'Lwt.t
  val bind : 'Lwt.t -> ('-> 'Lwt.t) -> 'Lwt.t
  val ( >>= ) : 'Lwt.t -> ('-> 'Lwt.t) -> 'Lwt.t
  val ( =<< ) : ('-> 'Lwt.t) -> 'Lwt.t -> 'Lwt.t
  val map : ('-> 'b) -> 'Lwt.t -> 'Lwt.t
  val ( >|= ) : 'Lwt.t -> ('-> 'b) -> 'Lwt.t
  val ( =|< ) : ('-> 'b) -> 'Lwt.t -> 'Lwt.t
  val return_unit : unit Lwt.t
  val return_none : 'a option Lwt.t
  val return_some : '-> 'a option Lwt.t
  val return_nil : 'a list Lwt.t
  val return_true : bool Lwt.t
  val return_false : bool Lwt.t
  val return_ok : '-> ('a, 'b) Result.result Lwt.t
  val return_error : '-> ('a, 'e) Result.result Lwt.t
  type 'a key
  val new_key : unit -> 'Lwt.key
  val get : 'Lwt.key -> 'a option
  val with_value : 'Lwt.key -> 'a option -> (unit -> 'b) -> 'b
  val catch : (unit -> 'Lwt.t) -> (exn -> 'Lwt.t) -> 'Lwt.t
  val try_bind :
    (unit -> 'Lwt.t) -> ('-> 'Lwt.t) -> (exn -> 'Lwt.t) -> 'Lwt.t
  val finalize : (unit -> 'Lwt.t) -> (unit -> unit Lwt.t) -> 'Lwt.t
  val wrap : (unit -> 'a) -> 'Lwt.t
  val wrap1 : ('-> 'b) -> '-> 'Lwt.t
  val wrap2 : ('-> '-> 'c) -> '-> '-> 'Lwt.t
  val wrap3 : ('-> '-> '-> 'd) -> '-> '-> '-> 'Lwt.t
  val wrap4 :
    ('-> '-> '-> '-> 'e) -> '-> '-> '-> '-> 'Lwt.t
  val wrap5 :
    ('-> '-> '-> '-> '-> 'f) ->
    '-> '-> '-> '-> '-> 'Lwt.t
  val wrap6 :
    ('-> '-> '-> '-> '-> '-> 'g) ->
    '-> '-> '-> '-> '-> '-> 'Lwt.t
  val wrap7 :
    ('-> '-> '-> '-> '-> '-> '-> 'h) ->
    '-> '-> '-> '-> '-> '-> '-> 'Lwt.t
  val choose : 'Lwt.t list -> 'Lwt.t
  val nchoose : 'Lwt.t list -> 'a list Lwt.t
  val nchoose_split : 'Lwt.t list -> ('a list * 'Lwt.t list) Lwt.t
  val join : unit Lwt.t list -> unit Lwt.t
  val ( <?> ) : 'Lwt.t -> 'Lwt.t -> 'Lwt.t
  val ( <&> ) : unit Lwt.t -> unit Lwt.t -> unit Lwt.t
  val async : (unit -> 'Lwt.t) -> unit
  val ignore_result : 'Lwt.t -> unit
  val async_exception_hook : (exn -> unit) Pervasives.ref
  type 'a u
  val wait : unit -> 'Lwt.t * 'Lwt.u
  val wakeup : 'Lwt.u -> '-> unit
  val wakeup_exn : 'Lwt.u -> exn -> unit
  val wakeup_later : 'Lwt.u -> '-> unit
  val wakeup_later_exn : 'Lwt.u -> exn -> unit
  val waiter_of_wakener : 'Lwt.u -> 'Lwt.t
  type 'a result = ('a, exn) Result.result
  val make_value : '-> 'Lwt.result
  val make_error : exn -> 'Lwt.result
  val of_result : 'Lwt.result -> 'Lwt.t
  val wakeup_result : 'Lwt.u -> 'Lwt.result -> unit
  val wakeup_later_result : 'Lwt.u -> 'Lwt.result -> unit
  type 'a state = Return of '| Fail of exn | Sleep
  val state : 'Lwt.t -> 'Lwt.state
  val is_sleeping : 'Lwt.t -> bool
  exception Canceled
  val task : unit -> 'Lwt.t * 'Lwt.u
  val on_cancel : 'Lwt.t -> (unit -> unit) -> unit
  val add_task_r : 'Lwt.u Lwt_sequence.t -> 'Lwt.t
  val add_task_l : 'Lwt.u Lwt_sequence.t -> 'Lwt.t
  val cancel : 'Lwt.t -> unit
  val pick : 'Lwt.t list -> 'Lwt.t
  val npick : 'Lwt.t list -> 'a list Lwt.t
  val protected : 'Lwt.t -> 'Lwt.t
  val no_cancel : 'Lwt.t -> 'Lwt.t
  val pause : unit -> unit Lwt.t
  val wakeup_paused : unit -> unit
  val paused_count : unit -> int
  val register_pause_notifier : (int -> unit) -> unit
  val on_success : 'Lwt.t -> ('-> unit) -> unit
  val on_failure : 'Lwt.t -> (exn -> unit) -> unit
  val on_termination : 'Lwt.t -> (unit -> unit) -> unit
  val on_any : 'Lwt.t -> ('-> unit) -> (exn -> unit) -> unit
  module Infix :
    sig
      val ( >>= ) : 'Lwt.t -> ('-> 'Lwt.t) -> 'Lwt.t
      val ( =<< ) : ('-> 'Lwt.t) -> 'Lwt.t -> 'Lwt.t
      val ( >|= ) : 'Lwt.t -> ('-> 'b) -> 'Lwt.t
      val ( =|< ) : ('-> 'b) -> 'Lwt.t -> 'Lwt.t
      val ( <?> ) : 'Lwt.t -> 'Lwt.t -> 'Lwt.t
      val ( <&> ) : unit Lwt.t -> unit Lwt.t -> unit Lwt.t
    end
  val poll : 'Lwt.t -> 'a option
  val apply : ('-> 'Lwt.t) -> '-> 'Lwt.t
  val backtrace_bind :
    (exn -> exn) -> 'Lwt.t -> ('-> 'Lwt.t) -> 'Lwt.t
  val backtrace_catch :
    (exn -> exn) -> (unit -> 'Lwt.t) -> (exn -> 'Lwt.t) -> 'Lwt.t
  val backtrace_try_bind :
    (exn -> exn) ->
    (unit -> 'Lwt.t) -> ('-> 'Lwt.t) -> (exn -> 'Lwt.t) -> 'Lwt.t
  val backtrace_finalize :
    (exn -> exn) -> (unit -> 'Lwt.t) -> (unit -> unit Lwt.t) -> 'Lwt.t
  val abandon_wakeups : unit -> unit
end