sig
  type call
  type +'a t
  type 'a request
  type error =
      Network_Error of string
    | API_Error of string
    | Other_Error of exn
  type 'a result = Unserved | Failed of Call.error | Successful of 'a
  exception API of string
  val return : 'a -> 'a Call.t
  val bind : 'a Call.t -> ('a -> 'b Call.t) -> 'b Call.t
  val map : ('a -> 'b) -> 'a Call.t -> 'b Call.t
  val http : Call.call -> Xml.elt Call.t
  val parallel : 'a Call.t -> 'b Call.t -> ('a * 'b) Call.t
  val join : 'a Call.t list -> 'a list Call.t
  val cast : Http_client.http_call -> (Nethttp.cookie -> unit) -> Call.call
  val instantiate : 'a Call.t -> 'a Call.request
  val enqueue : 'a Call.request -> Http_client.pipeline -> unit
  val result : 'a Call.request -> 'a Call.result
end