sig
  type curl_context
  type 'a t =
      Initialized
    | Created of GapiCurl.curl_context
    | Destroyed
    | Uninitialized
  val global_init : unit -> [ `Initialized ] GapiCurl.t
  val init :
    ?debug_function:(Curl.t -> Curl.curlDebugType -> string -> unit) ->
    ?timeout:int ->
    ?connect_timeout:int ->
    ?follow_location:bool ->
    ?compress:bool ->
    ?max_send_speed:int64 ->
    ?max_recv_speed:int64 ->
    ?low_speed_limit:int ->
    ?low_speed_time:int ->
    ?no_signal:bool ->
    ?options:Curl.curlOption list ->
    [ `Initialized ] GapiCurl.t -> [ `Created ] GapiCurl.t
  val set_options : Curl.curlOption list -> [ `Created ] GapiCurl.t -> unit
  val set_writefunction : (string -> int) -> [ `Created ] GapiCurl.t -> unit
  val set_headerfunction : (string -> int) -> [ `Created ] GapiCurl.t -> unit
  val set_httpheader :
    GapiCore.Header.t list -> [ `Created ] GapiCurl.t -> unit
  val set_httpget : bool -> [ `Created ] GapiCurl.t -> unit
  val set_post : bool -> [ `Created ] GapiCurl.t -> unit
  val set_nobody : bool -> [ `Created ] GapiCurl.t -> unit
  val set_upload : bool -> [ `Created ] GapiCurl.t -> unit
  val set_httpbody :
    GapiCore.PostData.body -> [ `Created ] GapiCurl.t -> unit
  val set_customrequest : string -> [ `Created ] GapiCurl.t -> unit
  val set_postfields :
    (string * string) list -> [ `Created ] GapiCurl.t -> unit
  val set_useragent : string -> [ `Created ] GapiCurl.t -> unit
  val set_cookies : string list -> [ `Created ] GapiCurl.t -> unit
  val reset_all_cookies : [ `Created ] GapiCurl.t -> unit
  val reset_session_cookies : [ `Created ] GapiCurl.t -> unit
  val perform : string -> [ `Created ] GapiCurl.t -> unit
  val get_error_buffer : [ `Created ] GapiCurl.t -> string
  val get_responsecode : [ `Created ] GapiCurl.t -> int
  val cleanup : [ `Created ] GapiCurl.t -> [ `Destroyed ] GapiCurl.t
  val global_cleanup :
    [ `Initialized ] GapiCurl.t -> [ `Uninitialized ] GapiCurl.t
  val string_of_curl_info_type : Curl.curlDebugType -> string
end