sig
  type 'a t
  type 'a future = 'CCPool.Make.Fut.t
  val return : '-> 'CCPool.Make.Fut.t
  val fail : exn -> 'CCPool.Make.Fut.t
  val make : (unit -> 'a) -> 'CCPool.Make.Fut.t
  val make1 : ('-> 'b) -> '-> 'CCPool.Make.Fut.t
  val make2 : ('-> '-> 'c) -> '-> '-> 'CCPool.Make.Fut.t
  val get : 'CCPool.Make.Fut.t -> 'a
  val state : 'CCPool.Make.Fut.t -> 'CCPool.state
  val is_done : 'CCPool.Make.Fut.t -> bool
  val on_success : 'CCPool.Make.Fut.t -> ('-> unit) -> unit
  val on_failure : 'CCPool.Make.Fut.t -> (exn -> unit) -> unit
  val on_finish : 'CCPool.Make.Fut.t -> ('CCPool.state -> unit) -> unit
  val flat_map :
    ('-> 'CCPool.Make.Fut.t) ->
    'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
  val and_then :
    'CCPool.Make.Fut.t ->
    (unit -> 'CCPool.Make.Fut.t) -> 'CCPool.Make.Fut.t
  val sequence_a : 'CCPool.Make.Fut.t array -> 'a array CCPool.Make.Fut.t
  val map_a :
    ('-> 'CCPool.Make.Fut.t) -> 'a array -> 'b array CCPool.Make.Fut.t
  val sequence_l : 'CCPool.Make.Fut.t list -> 'a list CCPool.Make.Fut.t
  val map_l :
    ('-> 'CCPool.Make.Fut.t) -> 'a list -> 'b list CCPool.Make.Fut.t
  val choose_a : 'CCPool.Make.Fut.t array -> 'CCPool.Make.Fut.t
  val choose_l : 'CCPool.Make.Fut.t list -> 'CCPool.Make.Fut.t
  val map : ('-> 'b) -> 'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
  val map_async : ('-> 'b) -> 'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
  val app :
    ('-> 'b) CCPool.Make.Fut.t ->
    'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
  val app_async :
    ('-> 'b) CCPool.Make.Fut.t ->
    'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
  val sleep : float -> unit CCPool.Make.Fut.t
  module Infix :
    sig
      val ( >>= ) :
        'CCPool.Make.Fut.t ->
        ('-> 'CCPool.Make.Fut.t) -> 'CCPool.Make.Fut.t
      val ( >> ) :
        'CCPool.Make.Fut.t ->
        (unit -> 'CCPool.Make.Fut.t) -> 'CCPool.Make.Fut.t
      val ( >|= ) :
        'CCPool.Make.Fut.t -> ('-> 'b) -> 'CCPool.Make.Fut.t
      val ( <*> ) :
        ('-> 'b) CCPool.Make.Fut.t ->
        'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
    end
  val ( >>= ) :
    'CCPool.Make.Fut.t ->
    ('-> 'CCPool.Make.Fut.t) -> 'CCPool.Make.Fut.t
  val ( >> ) :
    'CCPool.Make.Fut.t ->
    (unit -> 'CCPool.Make.Fut.t) -> 'CCPool.Make.Fut.t
  val ( >|= ) : 'CCPool.Make.Fut.t -> ('-> 'b) -> 'CCPool.Make.Fut.t
  val ( <*> ) :
    ('-> 'b) CCPool.Make.Fut.t ->
    'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
end