sig
  type t
  type curlCode =
      CURLE_OK
    | CURLE_UNSUPPORTED_PROTOCOL
    | CURLE_FAILED_INIT
    | CURLE_URL_MALFORMAT
    | CURLE_URL_MALFORMAT_USER
    | CURLE_COULDNT_RESOLVE_PROXY
    | CURLE_COULDNT_RESOLVE_HOST
    | CURLE_COULDNT_CONNECT
    | CURLE_FTP_WEIRD_SERVER_REPLY
    | CURLE_FTP_ACCESS_DENIED
    | CURLE_FTP_USER_PASSWORD_INCORRECT
    | CURLE_FTP_WEIRD_PASS_REPLY
    | CURLE_FTP_WEIRD_USER_REPLY
    | CURLE_FTP_WEIRD_PASV_REPLY
    | CURLE_FTP_WEIRD_227_FORMAT
    | CURLE_FTP_CANT_GET_HOST
    | CURLE_FTP_CANT_RECONNECT
    | CURLE_FTP_COULDNT_SET_BINARY
    | CURLE_PARTIAL_FILE
    | CURLE_FTP_COULDNT_RETR_FILE
    | CURLE_FTP_WRITE_ERROR
    | CURLE_FTP_QUOTE_ERROR
    | CURLE_HTTP_NOT_FOUND
    | CURLE_WRITE_ERROR
    | CURLE_MALFORMAT_USER
    | CURLE_FTP_COULDNT_STOR_FILE
    | CURLE_READ_ERROR
    | CURLE_OUT_OF_MEMORY
    | CURLE_OPERATION_TIMEOUTED
    | CURLE_FTP_COULDNT_SET_ASCII
    | CURLE_FTP_PORT_FAILED
    | CURLE_FTP_COULDNT_USE_REST
    | CURLE_FTP_COULDNT_GET_SIZE
    | CURLE_HTTP_RANGE_ERROR
    | CURLE_HTTP_POST_ERROR
    | CURLE_SSL_CONNECT_ERROR
    | CURLE_FTP_BAD_DOWNLOAD_RESUME
    | CURLE_FILE_COULDNT_READ_FILE
    | CURLE_LDAP_CANNOT_BIND
    | CURLE_LDAP_SEARCH_FAILED
    | CURLE_LIBRARY_NOT_FOUND
    | CURLE_FUNCTION_NOT_FOUND
    | CURLE_ABORTED_BY_CALLBACK
    | CURLE_BAD_FUNCTION_ARGUMENT
    | CURLE_BAD_CALLING_ORDER
    | CURLE_HTTP_PORT_FAILED
    | CURLE_BAD_PASSWORD_ENTERED
    | CURLE_TOO_MANY_REDIRECTS
    | CURLE_UNKNOWN_TELNET_OPTION
    | CURLE_TELNET_OPTION_SYNTAX
    | CURLE_OBSOLETE
    | CURLE_SSL_PEER_CERTIFICATE
    | CURLE_GOT_NOTHING
    | CURLE_SSL_ENGINE_NOTFOUND
    | CURLE_SSL_ENGINE_SETFAILED
    | CURLE_SEND_ERROR
    | CURLE_RECV_ERROR
    | CURLE_SHARE_IN_USE
    | CURLE_SSL_CERTPROBLEM
    | CURLE_SSL_CIPHER
    | CURLE_SSL_CACERT
    | CURLE_BAD_CONTENT_ENCODING
    | CURLE_LDAP_INVALID_URL
    | CURLE_FILESIZE_EXCEEDED
    | CURLE_USE_SSL_FAILED
    | CURLE_SEND_FAIL_REWIND
    | CURLE_SSL_ENGINE_INITFAILED
    | CURLE_LOGIN_DENIED
    | CURLE_TFTP_NOTFOUND
    | CURLE_TFTP_PERM
    | CURLE_REMOTE_DISK_FULL
    | CURLE_TFTP_ILLEGAL
    | CURLE_TFTP_UNKNOWNID
    | CURLE_REMOTE_FILE_EXISTS
    | CURLE_TFTP_NOSUCHUSER
    | CURLE_CONV_FAILED
    | CURLE_CONV_REQD
    | CURLE_SSL_CACERT_BADFILE
    | CURLE_REMOTE_FILE_NOT_FOUND
    | CURLE_SSH
    | CURLE_SSL_SHUTDOWN_FAILED
    | CURLE_AGAIN
  exception CurlException of (Curl.curlCode * int * string)
  exception NotImplemented of string
  type curlNETRCOption =
      CURL_NETRC_OPTIONAL
    | CURL_NETRC_IGNORED
    | CURL_NETRC_REQUIRED
  type curlEncoding =
      CURL_ENCODING_NONE
    | CURL_ENCODING_DEFLATE
    | CURL_ENCODING_GZIP
    | CURL_ENCODING_ANY
  type curlContentType = DEFAULT | CONTENTTYPE of string
  type curlHTTPPost =
      CURLFORM_CONTENT of string * string * Curl.curlContentType
    | CURLFORM_FILECONTENT of string * string * Curl.curlContentType
    | CURLFORM_FILE of string * string * Curl.curlContentType
    | CURLFORM_BUFFER of string * string * string * Curl.curlContentType
  type curlSSLVersion =
      SSLVERSION_DEFAULT
    | SSLVERSION_TLSv1
    | SSLVERSION_SSLv2
    | SSLVERSION_SSLv3
    | SSLVERSION_TLSv1_0
    | SSLVERSION_TLSv1_1
    | SSLVERSION_TLSv1_2
    | SSLVERSION_TLSv1_3
  type curlTimeCondition =
      TIMECOND_NONE
    | TIMECOND_IFMODSINCE
    | TIMECOND_IFUNMODSINCE
    | TIMECOND_LASTMOD
  type curlKRB4Level =
      KRB4_NONE
    | KRB4_CLEAR
    | KRB4_SAFE
    | KRB4_CONFIDENTIAL
    | KRB4_PRIVATE
  type curlClosePolicy = CLOSEPOLICY_OLDEST | CLOSEPOLICY_LEAST_RECENTLY_USED
  type curlSSLVerifyHost =
      SSLVERIFYHOST_NONE
    | SSLVERIFYHOST_EXISTENCE
    | SSLVERIFYHOST_HOSTNAME
  type curlHTTPVersion =
      HTTP_VERSION_NONE
    | HTTP_VERSION_1_0
    | HTTP_VERSION_1_1
    | HTTP_VERSION_2
    | HTTP_VERSION_2TLS
    | HTTP_VERSION_2_PRIOR_KNOWLEDGE
  type curlDebugType =
      DEBUGTYPE_TEXT
    | DEBUGTYPE_HEADER_IN
    | DEBUGTYPE_HEADER_OUT
    | DEBUGTYPE_DATA_IN
    | DEBUGTYPE_DATA_OUT
    | DEBUGTYPE_SSL_DATA_IN
    | DEBUGTYPE_SSL_DATA_OUT
    | DEBUGTYPE_END
  type curlAuth =
      CURLAUTH_BASIC
    | CURLAUTH_DIGEST
    | CURLAUTH_GSSNEGOTIATE
    | CURLAUTH_NTLM
    | CURLAUTH_ANY
    | CURLAUTH_ANYSAFE
  type curlIPResolve = IPRESOLVE_WHATEVER | IPRESOLVE_V4 | IPRESOLVE_V6
  type curlFTPSSL = FTPSSL_NONE | FTPSSL_TRY | FTPSSL_CONTROL | FTPSSL_ALL
  type curlFTPSSLAuth = FTPAUTH_DEFAULT | FTPAUTH_SSL | FTPAUTH_TLS
  type curlIOCmd = IOCMD_NOP | IOCMD_RESTARTREAD
  type curlIOErr = IOE_OK | IOE_UNKNOWNCMD | IOE_FAILRESTART
  type curlSeekResult = SEEKFUNC_OK | SEEKFUNC_FAIL | SEEKFUNC_CANTSEEK
  type curlFTPMethod =
      FTPMETHOD_DEFAULT
    | FTPMETHOD_MULTICWD
    | FTPMETHOD_NOCWD
    | FTPMETHOD_SINGLECWD
  type curlSSHAuthTypes =
      SSHAUTH_ANY
    | SSHAUTH_PUBLICKEY
    | SSHAUTH_PASSWORD
    | SSHAUTH_HOST
    | SSHAUTH_KEYBOARD
  type curlFTPSSLCCC =
      FTPSSL_CCC_NONE
    | FTPSSL_CCC_PASSIVE
    | FTPSSL_CCC_ACTIVE
  type curlSeek = SEEK_SET | SEEK_CUR | SEEK_END
  type curlProxyType =
      CURLPROXY_HTTP
    | CURLPROXY_HTTP_1_0
    | CURLPROXY_SOCKS4
    | CURLPROXY_SOCKS5
    | CURLPROXY_SOCKS4A
    | CURLPROXY_SOCKS5_HOSTNAME
  type curlMIMEPartData =
      CURLMIME_DATA of string
    | CURLMIME_FILEDATA of string
  type curlMIMEEncoding =
      CURLMIME_8BIT
    | CURLMIME_BINARY
    | CURLMIME_7BIT
    | CURLMIME_QUOTEDPRINTABLE
    | CURLMIME_BASE64
    | CURLMIME_NONE
  type curlMIMEPart = {
    encoding : Curl.curlMIMEEncoding;
    headers : string list;
    subparts : Curl.curlMIMEPart list;
    data : Curl.curlMIMEPartData;
  }
  type curlKHMatch =
      CURLKHMATCH_OK
    | CURLKHMATCH_MISMATCH of string
    | CURLKHMATCH_MISSING
  type curlKHStat =
      CURLKHSTAT_FINE_ADD_TO_FILE
    | CURLKHSTAT_FINE
    | CURLKHSTAT_REJECT
    | CURLKHSTAT_DEFER
  type curlProto =
      CURLPROTO_ALL
    | CURLPROTO_HTTP
    | CURLPROTO_HTTPS
    | CURLPROTO_FTP
    | CURLPROTO_FTPS
    | CURLPROTO_SCP
    | CURLPROTO_SFTP
    | CURLPROTO_TELNET
    | CURLPROTO_LDAP
    | CURLPROTO_LDAPS
    | CURLPROTO_DICT
    | CURLPROTO_FILE
    | CURLPROTO_TFTP
    | CURLPROTO_IMAP
    | CURLPROTO_IMAPS
    | CURLPROTO_POP3
    | CURLPROTO_POP3S
    | CURLPROTO_SMTP
    | CURLPROTO_SMTPS
    | CURLPROTO_RTSP
    | CURLPROTO_RTMP
    | CURLPROTO_RTMPT
    | CURLPROTO_RTMPE
    | CURLPROTO_RTMPTE
    | CURLPROTO_RTMPS
    | CURLPROTO_RTMPTS
    | CURLPROTO_GOPHER
  type curlPostRedir =
      REDIR_POST_ALL
    | REDIR_POST_301
    | REDIR_POST_302
    | REDIR_POST_303
  type curlOption =
      CURLOPT_WRITEFUNCTION of (string -> int)
    | CURLOPT_READFUNCTION of (int -> string)
    | CURLOPT_INFILESIZE of int
    | CURLOPT_URL of string
    | CURLOPT_PROXY of string
    | CURLOPT_PROXYPORT of int
    | CURLOPT_HTTPPROXYTUNNEL of bool
    | CURLOPT_VERBOSE of bool
    | CURLOPT_HEADER of bool
    | CURLOPT_NOPROGRESS of bool
    | CURLOPT_NOSIGNAL of bool
    | CURLOPT_NOBODY of bool
    | CURLOPT_FAILONERROR of bool
    | CURLOPT_UPLOAD of bool
    | CURLOPT_POST of bool
    | CURLOPT_FTPLISTONLY of bool
    | CURLOPT_FTPAPPEND of bool
    | CURLOPT_NETRC of Curl.curlNETRCOption
    | CURLOPT_ENCODING of Curl.curlEncoding
    | CURLOPT_FOLLOWLOCATION of bool
    | CURLOPT_TRANSFERTEXT of bool
    | CURLOPT_PUT of bool
    | CURLOPT_USERPWD of string
    | CURLOPT_PROXYUSERPWD of string
    | CURLOPT_RANGE of string
    | CURLOPT_ERRORBUFFER of string Pervasives.ref
    | CURLOPT_TIMEOUT of int
    | CURLOPT_POSTFIELDS of string
    | CURLOPT_POSTFIELDSIZE of int
    | CURLOPT_REFERER of string
    | CURLOPT_USERAGENT of string
    | CURLOPT_FTPPORT of string
    | CURLOPT_LOWSPEEDLIMIT of int
    | CURLOPT_LOWSPEEDTIME of int
    | CURLOPT_RESUMEFROM of int
    | CURLOPT_COOKIE of string
    | CURLOPT_HTTPHEADER of string list
    | CURLOPT_HTTPPOST of Curl.curlHTTPPost list
    | CURLOPT_SSLCERT of string
    | CURLOPT_SSLCERTTYPE of string
    | CURLOPT_SSLCERTPASSWD of string
    | CURLOPT_SSLKEY of string
    | CURLOPT_SSLKEYTYPE of string
    | CURLOPT_SSLKEYPASSWD of string
    | CURLOPT_SSLENGINE of string
    | CURLOPT_SSLENGINEDEFAULT of bool
    | CURLOPT_CRLF of bool
    | CURLOPT_QUOTE of string list
    | CURLOPT_POSTQUOTE of string list
    | CURLOPT_HEADERFUNCTION of (string -> int)
    | CURLOPT_COOKIEFILE of string
    | CURLOPT_SSLVERSION of Curl.curlSSLVersion
    | CURLOPT_TIMECONDITION of Curl.curlTimeCondition
    | CURLOPT_TIMEVALUE of int32
    | CURLOPT_CUSTOMREQUEST of string
    | CURLOPT_INTERFACE of string
    | CURLOPT_KRB4LEVEL of Curl.curlKRB4Level
    | CURLOPT_PROGRESSFUNCTION of (float -> float -> float -> float -> bool)
    | CURLOPT_SSLVERIFYPEER of bool
    | CURLOPT_CAINFO of string
    | CURLOPT_CAPATH of string
    | CURLOPT_FILETIME of bool
    | CURLOPT_MAXREDIRS of int
    | CURLOPT_MAXCONNECTS of int
    | CURLOPT_CLOSEPOLICY of Curl.curlClosePolicy
    | CURLOPT_FRESHCONNECT of bool
    | CURLOPT_FORBIDREUSE of bool
    | CURLOPT_RANDOMFILE of string
    | CURLOPT_EGDSOCKET of string
    | CURLOPT_CONNECTTIMEOUT of int
    | CURLOPT_HTTPGET of bool
    | CURLOPT_SSLVERIFYHOST of Curl.curlSSLVerifyHost
    | CURLOPT_COOKIEJAR of string
    | CURLOPT_SSLCIPHERLIST of string
    | CURLOPT_HTTPVERSION of Curl.curlHTTPVersion
    | CURLOPT_FTPUSEEPSV of bool
    | CURLOPT_DNSCACHETIMEOUT of int
    | CURLOPT_DNSUSEGLOBALCACHE of bool
    | CURLOPT_DEBUGFUNCTION of
        (Curl.t -> Curl.curlDebugType -> string -> unit)
    | CURLOPT_PRIVATE of string
    | CURLOPT_HTTP200ALIASES of string list
    | CURLOPT_UNRESTRICTEDAUTH of bool
    | CURLOPT_FTPUSEEPRT of bool
    | CURLOPT_HTTPAUTH of Curl.curlAuth list
    | CURLOPT_FTPCREATEMISSINGDIRS of bool
    | CURLOPT_PROXYAUTH of Curl.curlAuth list
    | CURLOPT_FTPRESPONSETIMEOUT of int
    | CURLOPT_IPRESOLVE of Curl.curlIPResolve
    | CURLOPT_MAXFILESIZE of int32
    | CURLOPT_INFILESIZELARGE of int64
    | CURLOPT_RESUMEFROMLARGE of int64
    | CURLOPT_MAXFILESIZELARGE of int64
    | CURLOPT_NETRCFILE of string
    | CURLOPT_FTPSSL of Curl.curlFTPSSL
    | CURLOPT_POSTFIELDSIZELARGE of int64
    | CURLOPT_TCPNODELAY of bool
    | CURLOPT_FTPSSLAUTH of Curl.curlFTPSSLAuth
    | CURLOPT_IOCTLFUNCTION of (Curl.t -> Curl.curlIOCmd -> Curl.curlIOErr)
    | CURLOPT_FTPACCOUNT of string
    | CURLOPT_COOKIELIST of string
    | CURLOPT_IGNORECONTENTLENGTH of bool
    | CURLOPT_FTPSKIPPASVIP of bool
    | CURLOPT_FTPFILEMETHOD of Curl.curlFTPMethod
    | CURLOPT_LOCALPORT of int
    | CURLOPT_LOCALPORTRANGE of int
    | CURLOPT_CONNECTONLY of bool
    | CURLOPT_MAXSENDSPEEDLARGE of int64
    | CURLOPT_MAXRECVSPEEDLARGE of int64
    | CURLOPT_FTPALTERNATIVETOUSER of string
    | CURLOPT_SSLSESSIONIDCACHE of bool
    | CURLOPT_SSHAUTHTYPES of Curl.curlSSHAuthTypes list
    | CURLOPT_SSHPUBLICKEYFILE of string
    | CURLOPT_SSHPRIVATEKEYFILE of string
    | CURLOPT_FTPSSLCCC of Curl.curlFTPSSLCCC
    | CURLOPT_TIMEOUTMS of int
    | CURLOPT_CONNECTTIMEOUTMS of int
    | CURLOPT_HTTPTRANSFERDECODING of bool
    | CURLOPT_HTTPCONTENTDECODING of bool
    | CURLOPT_NEWFILEPERMS of int
    | CURLOPT_NEWDIRECTORYPERMS of int
    | CURLOPT_POST301 of bool
    | CURLOPT_SSHHOSTPUBLICKEYMD5 of string
    | CURLOPT_COPYPOSTFIELDS of string
    | CURLOPT_PROXYTRANSFERMODE of bool
    | CURLOPT_SEEKFUNCTION of (int64 -> Curl.curlSeek -> Curl.curlSeekResult)
    | CURLOPT_AUTOREFERER of bool
    | CURLOPT_OPENSOCKETFUNCTION of (Unix.file_descr -> unit)
    | CURLOPT_PROXYTYPE of Curl.curlProxyType
    | CURLOPT_PROTOCOLS of Curl.curlProto list
    | CURLOPT_REDIR_PROTOCOLS of Curl.curlProto list
    | CURLOPT_RESOLVE of string list
    | CURLOPT_DNS_SERVERS of string
    | CURLOPT_MAIL_FROM of string
    | CURLOPT_MAIL_RCPT of string list
    | CURLOPT_PIPEWAIT of bool
    | CURLOPT_CERTINFO of bool
    | CURLOPT_USERNAME of string
    | CURLOPT_PASSWORD of string
    | CURLOPT_LOGIN_OPTIONS of string
    | CURLOPT_CONNECT_TO of string list
    | CURLOPT_POSTREDIR of Curl.curlPostRedir list
    | CURLOPT_MIMEPOST of Curl.curlMIMEPart list
    | CURLOPT_SSHKNOWNHOSTS of string
    | CURLOPT_SSHKEYFUNCTION of
        (Curl.curlKHMatch -> string -> Curl.curlKHStat)
  type initOption =
      CURLINIT_GLOBALALL
    | CURLINIT_GLOBALSSL
    | CURLINIT_GLOBALWIN32
    | CURLINIT_GLOBALNOTHING
  type curlInfo =
      CURLINFO_EFFECTIVE_URL
    | CURLINFO_HTTP_CODE
    | CURLINFO_RESPONSE_CODE
    | CURLINFO_TOTAL_TIME
    | CURLINFO_NAMELOOKUP_TIME
    | CURLINFO_CONNECT_TIME
    | CURLINFO_PRETRANSFER_TIME
    | CURLINFO_SIZE_UPLOAD
    | CURLINFO_SIZE_DOWNLOAD
    | CURLINFO_SPEED_DOWNLOAD
    | CURLINFO_SPEED_UPLOAD
    | CURLINFO_HEADER_SIZE
    | CURLINFO_REQUEST_SIZE
    | CURLINFO_SSL_VERIFYRESULT
    | CURLINFO_FILETIME
    | CURLINFO_CONTENT_LENGTH_DOWNLOAD
    | CURLINFO_CONTENT_LENGTH_UPLOAD
    | CURLINFO_STARTTRANSFER_TIME
    | CURLINFO_CONTENT_TYPE
    | CURLINFO_REDIRECT_TIME
    | CURLINFO_REDIRECT_COUNT
    | CURLINFO_PRIVATE
    | CURLINFO_HTTP_CONNECTCODE
    | CURLINFO_HTTPAUTH_AVAIL
    | CURLINFO_PROXYAUTH_AVAIL
    | CURLINFO_OS_ERRNO
    | CURLINFO_NUM_CONNECTS
    | CURLINFO_SSL_ENGINES
    | CURLINFO_COOKIELIST
    | CURLINFO_LASTSOCKET
    | CURLINFO_FTP_ENTRY_PATH
    | CURLINFO_REDIRECT_URL
    | CURLINFO_PRIMARY_IP
    | CURLINFO_LOCAL_IP
    | CURLINFO_LOCAL_PORT
    | CURLINFO_CONDITION_UNMET
    | CURLINFO_CERTINFO
  type curlInfoResult =
      CURLINFO_String of string
    | CURLINFO_Long of int
    | CURLINFO_Double of float
    | CURLINFO_StringList of string list
    | CURLINFO_StringListList of string list list
  type version_info = {
    version : string;
    number : int * int * int;
    host : string;
    features : string list;
    ssl_version : string option;
    libz_version : string option;
    protocols : string list;
    ares : string;
    ares_num : int;
    libidn : string;
    iconv_ver_num : int;
    libssh_version : string;
  }
  type pauseOption = PAUSE_SEND | PAUSE_RECV | PAUSE_ALL
  val global_init : Curl.initOption -> unit
  val global_cleanup : unit -> unit
  val init : unit -> Curl.t
  val reset : Curl.t -> unit
  val duphandle : Curl.t -> Curl.t
  val setopt : Curl.t -> Curl.curlOption -> unit
  val perform : Curl.t -> unit
  val cleanup : Curl.t -> unit
  val getinfo : Curl.t -> Curl.curlInfo -> Curl.curlInfoResult
  val escape : string -> string
  val unescape : string -> string
  val getdate : string -> float -> float
  val version : unit -> string
  val strerror : Curl.curlCode -> string
  val int_of_curlCode : Curl.curlCode -> int
  val curlCode_of_int : int -> Curl.curlCode option
  val errno : Curl.curlCode -> int
  val version_info : unit -> Curl.version_info
  val pause : Curl.t -> Curl.pauseOption list -> unit
  val set_writefunction : Curl.t -> (string -> int) -> unit
  val set_readfunction : Curl.t -> (int -> string) -> unit
  val set_infilesize : Curl.t -> int -> unit
  val set_url : Curl.t -> string -> unit
  val set_proxy : Curl.t -> string -> unit
  val set_proxyport : Curl.t -> int -> unit
  val set_httpproxytunnel : Curl.t -> bool -> unit
  val set_verbose : Curl.t -> bool -> unit
  val set_header : Curl.t -> bool -> unit
  val set_noprogress : Curl.t -> bool -> unit
  val set_nosignal : Curl.t -> bool -> unit
  val set_nobody : Curl.t -> bool -> unit
  val set_failonerror : Curl.t -> bool -> unit
  val set_upload : Curl.t -> bool -> unit
  val set_post : Curl.t -> bool -> unit
  val set_ftplistonly : Curl.t -> bool -> unit
  val set_ftpappend : Curl.t -> bool -> unit
  val set_netrc : Curl.t -> Curl.curlNETRCOption -> unit
  val set_encoding : Curl.t -> Curl.curlEncoding -> unit
  val set_followlocation : Curl.t -> bool -> unit
  val set_transfertext : Curl.t -> bool -> unit
  val set_put : Curl.t -> bool -> unit
  val set_userpwd : Curl.t -> string -> unit
  val set_proxyuserpwd : Curl.t -> string -> unit
  val set_range : Curl.t -> string -> unit
  val set_errorbuffer : Curl.t -> string Pervasives.ref -> unit
  val set_timeout : Curl.t -> int -> unit
  val set_postfields : Curl.t -> string -> unit
  val set_postfieldsize : Curl.t -> int -> unit
  val set_referer : Curl.t -> string -> unit
  val set_useragent : Curl.t -> string -> unit
  val set_ftpport : Curl.t -> string -> unit
  val set_lowspeedlimit : Curl.t -> int -> unit
  val set_lowspeedtime : Curl.t -> int -> unit
  val set_resumefrom : Curl.t -> int -> unit
  val set_cookie : Curl.t -> string -> unit
  val set_httpheader : Curl.t -> string list -> unit
  val set_httppost : Curl.t -> Curl.curlHTTPPost list -> unit
  val set_sslcert : Curl.t -> string -> unit
  val set_sslcerttype : Curl.t -> string -> unit
  val set_sslcertpasswd : Curl.t -> string -> unit
  val set_sslkey : Curl.t -> string -> unit
  val set_sslkeytype : Curl.t -> string -> unit
  val set_sslkeypasswd : Curl.t -> string -> unit
  val set_sslengine : Curl.t -> string -> unit
  val set_sslenginedefault : Curl.t -> bool -> unit
  val set_certinfo : Curl.t -> bool -> unit
  val set_crlf : Curl.t -> bool -> unit
  val set_quote : Curl.t -> string list -> unit
  val set_postquote : Curl.t -> string list -> unit
  val set_headerfunction : Curl.t -> (string -> int) -> unit
  val set_cookiefile : Curl.t -> string -> unit
  val set_sslversion : Curl.t -> Curl.curlSSLVersion -> unit
  val set_timecondition : Curl.t -> Curl.curlTimeCondition -> unit
  val set_timevalue : Curl.t -> int32 -> unit
  val set_customrequest : Curl.t -> string -> unit
  val set_interface : Curl.t -> string -> unit
  val set_krb4level : Curl.t -> Curl.curlKRB4Level -> unit
  val set_progressfunction :
    Curl.t -> (float -> float -> float -> float -> bool) -> unit
  val set_sslverifypeer : Curl.t -> bool -> unit
  val set_cainfo : Curl.t -> string -> unit
  val set_capath : Curl.t -> string -> unit
  val set_filetime : Curl.t -> bool -> unit
  val set_maxredirs : Curl.t -> int -> unit
  val set_maxconnects : Curl.t -> int -> unit
  val set_closepolicy : Curl.t -> Curl.curlClosePolicy -> unit
  val set_freshconnect : Curl.t -> bool -> unit
  val set_forbidreuse : Curl.t -> bool -> unit
  val set_randomfile : Curl.t -> string -> unit
  val set_egdsocket : Curl.t -> string -> unit
  val set_connecttimeout : Curl.t -> int -> unit
  val set_httpget : Curl.t -> bool -> unit
  val set_sslverifyhost : Curl.t -> Curl.curlSSLVerifyHost -> unit
  val set_cookiejar : Curl.t -> string -> unit
  val set_sslcipherlist : Curl.t -> string -> unit
  val set_httpversion : Curl.t -> Curl.curlHTTPVersion -> unit
  val set_ftpuseepsv : Curl.t -> bool -> unit
  val set_dnscachetimeout : Curl.t -> int -> unit
  val set_dnsuseglobalcache : Curl.t -> bool -> unit
  val set_debugfunction :
    Curl.t -> (Curl.t -> Curl.curlDebugType -> string -> unit) -> unit
  val set_private : Curl.t -> string -> unit
  val set_http200aliases : Curl.t -> string list -> unit
  val set_unrestrictedauth : Curl.t -> bool -> unit
  val set_ftpuseeprt : Curl.t -> bool -> unit
  val set_httpauth : Curl.t -> Curl.curlAuth list -> unit
  val set_ftpcreatemissingdirs : Curl.t -> bool -> unit
  val set_proxyauth : Curl.t -> Curl.curlAuth list -> unit
  val set_ftpresponsetimeout : Curl.t -> int -> unit
  val set_ipresolve : Curl.t -> Curl.curlIPResolve -> unit
  val set_maxfilesize : Curl.t -> int32 -> unit
  val set_infilesizelarge : Curl.t -> int64 -> unit
  val set_resumefromlarge : Curl.t -> int64 -> unit
  val set_maxfilesizelarge : Curl.t -> int64 -> unit
  val set_netrcfile : Curl.t -> string -> unit
  val set_ftpssl : Curl.t -> Curl.curlFTPSSL -> unit
  val set_postfieldsizelarge : Curl.t -> int64 -> unit
  val set_tcpnodelay : Curl.t -> bool -> unit
  val set_ftpsslauth : Curl.t -> Curl.curlFTPSSLAuth -> unit
  val set_ioctlfunction :
    Curl.t -> (Curl.t -> Curl.curlIOCmd -> Curl.curlIOErr) -> unit
  val set_ftpaccount : Curl.t -> string -> unit
  val set_cookielist : Curl.t -> string -> unit
  val set_ignorecontentlength : Curl.t -> bool -> unit
  val set_ftpskippasvip : Curl.t -> bool -> unit
  val set_ftpfilemethod : Curl.t -> Curl.curlFTPMethod -> unit
  val set_localport : Curl.t -> int -> unit
  val set_localportrange : Curl.t -> int -> unit
  val set_connectonly : Curl.t -> bool -> unit
  val set_maxsendspeedlarge : Curl.t -> int64 -> unit
  val set_maxrecvspeedlarge : Curl.t -> int64 -> unit
  val set_ftpalternativetouser : Curl.t -> string -> unit
  val set_sslsessionidcache : Curl.t -> bool -> unit
  val set_sshauthtypes : Curl.t -> Curl.curlSSHAuthTypes list -> unit
  val set_sshpublickeyfile : Curl.t -> string -> unit
  val set_sshprivatekeyfile : Curl.t -> string -> unit
  val set_ftpsslccc : Curl.t -> Curl.curlFTPSSLCCC -> unit
  val set_timeoutms : Curl.t -> int -> unit
  val set_connecttimeoutms : Curl.t -> int -> unit
  val set_httptransferdecoding : Curl.t -> bool -> unit
  val set_httpcontentdecoding : Curl.t -> bool -> unit
  val set_newfileperms : Curl.t -> int -> unit
  val set_newdirectoryperms : Curl.t -> int -> unit
  val set_post301 : Curl.t -> bool -> unit
  val set_sshhostpublickeymd5 : Curl.t -> string -> unit
  val set_copypostfields : Curl.t -> string -> unit
  val set_proxytransfermode : Curl.t -> bool -> unit
  val set_seekfunction :
    Curl.t -> (int64 -> Curl.curlSeek -> Curl.curlSeekResult) -> unit
  val set_autoreferer : Curl.t -> bool -> unit
  val set_opensocketfunction : Curl.t -> (Unix.file_descr -> unit) -> unit
  val set_proxytype : Curl.t -> Curl.curlProxyType -> unit
  val set_protocols : Curl.t -> Curl.curlProto list -> unit
  val set_redirprotocols : Curl.t -> Curl.curlProto list -> unit
  val set_resolve :
    Curl.t -> (string * int * string) list -> (string * int) list -> unit
  val set_dns_servers : Curl.t -> string list -> unit
  val set_mailfrom : Curl.t -> string -> unit
  val set_mailrcpt : Curl.t -> string list -> unit
  val set_pipewait : Curl.t -> bool -> unit
  val set_username : Curl.t -> string -> unit
  val set_password : Curl.t -> string -> unit
  val set_login_options : Curl.t -> string -> unit
  val set_connect_to : Curl.t -> string list -> unit
  val set_postredir : Curl.t -> Curl.curlPostRedir list -> unit
  val set_mimepost : Curl.t -> Curl.curlMIMEPart list -> unit
  val set_sshknownhosts : Curl.t -> string -> unit
  val set_sshkeyfunction :
    Curl.t -> (Curl.curlKHMatch -> string -> Curl.curlKHStat) -> unit
  val get_effectiveurl : Curl.t -> string
  val get_redirecturl : Curl.t -> string
  val get_httpcode : Curl.t -> int
  val get_responsecode : Curl.t -> int
  val get_totaltime : Curl.t -> float
  val get_namelookuptime : Curl.t -> float
  val get_connecttime : Curl.t -> float
  val get_pretransfertime : Curl.t -> float
  val get_sizeupload : Curl.t -> float
  val get_sizedownload : Curl.t -> float
  val get_speeddownload : Curl.t -> float
  val get_speedupload : Curl.t -> float
  val get_headersize : Curl.t -> int
  val get_requestsize : Curl.t -> int
  val get_sslverifyresult : Curl.t -> int
  val get_filetime : Curl.t -> float
  val get_contentlengthdownload : Curl.t -> float
  val get_contentlengthupload : Curl.t -> float
  val get_starttransfertime : Curl.t -> float
  val get_contenttype : Curl.t -> string
  val get_redirecttime : Curl.t -> float
  val get_redirectcount : Curl.t -> int
  val get_private : Curl.t -> string
  val get_httpconnectcode : Curl.t -> int
  val get_httpauthavail : Curl.t -> Curl.curlAuth list
  val get_proxyauthavail : Curl.t -> Curl.curlAuth list
  val get_oserrno : Curl.t -> int
  val get_numconnects : Curl.t -> int
  val get_sslengines : Curl.t -> string list
  val get_cookielist : Curl.t -> string list
  val get_lastsocket : Curl.t -> int
  val get_ftpentrypath : Curl.t -> string
  val get_primaryip : Curl.t -> string
  val get_localip : Curl.t -> string
  val get_localport : Curl.t -> int
  val get_conditionunmet : Curl.t -> bool
  val get_certinfo : Curl.t -> string list list
  class handle :
    object ('a)
      val conn : Curl.t
      method cleanup : unit
      method duphandle : 'a
      method get_certinfo : string list list
      method get_conditionunmet : bool
      method get_connecttime : float
      method get_contentlengthdownload : float
      method get_contentlengthupload : float
      method get_contenttype : string
      method get_cookielist : string list
      method get_effectiveurl : string
      method get_filetime : float
      method get_ftpentrypath : string
      method get_headersize : int
      method get_httpauthavail : Curl.curlAuth list
      method get_httpcode : int
      method get_httpconnectcode : int
      method get_lastsocket : int
      method get_localip : string
      method get_localport : int
      method get_namelookuptime : float
      method get_numconnects : int
      method get_oserrno : int
      method get_pretransfertime : float
      method get_primaryip : string
      method get_private : string
      method get_proxyauthavail : Curl.curlAuth list
      method get_redirectcount : int
      method get_redirecttime : float
      method get_redirecturl : string
      method get_requestsize : int
      method get_responsecode : int
      method get_sizedownload : float
      method get_sizeupload : float
      method get_speeddownload : float
      method get_speedupload : float
      method get_sslengines : string list
      method get_sslverifyresult : int
      method get_starttransfertime : float
      method get_totaltime : float
      method handle : Curl.t
      method perform : unit
      method set_autoreferer : bool -> unit
      method set_cainfo : string -> unit
      method set_capath : string -> unit
      method set_certinfo : bool -> unit
      method set_closepolicy : Curl.curlClosePolicy -> unit
      method set_connectonly : bool -> unit
      method set_connecttimeout : int -> unit
      method set_connecttimeoutms : int -> unit
      method set_cookie : string -> unit
      method set_cookiefile : string -> unit
      method set_cookiejar : string -> unit
      method set_cookielist : string -> unit
      method set_copypostfields : string -> unit
      method set_crlf : bool -> unit
      method set_customrequest : string -> unit
      method set_debugfunction :
        (Curl.t -> Curl.curlDebugType -> string -> unit) -> unit
      method set_dns_servers : string list -> unit
      method set_dnscachetimeout : int -> unit
      method set_dnsuseglobalcache : bool -> unit
      method set_egdsocket : string -> unit
      method set_encoding : Curl.curlEncoding -> unit
      method set_errorbuffer : string Pervasives.ref -> unit
      method set_failonerror : bool -> unit
      method set_filetime : bool -> unit
      method set_followlocation : bool -> unit
      method set_forbidreuse : bool -> unit
      method set_freshconnect : bool -> unit
      method set_ftpaccount : string -> unit
      method set_ftpalternativetouser : string -> unit
      method set_ftpappend : bool -> unit
      method set_ftpcreatemissingdirs : bool -> unit
      method set_ftpfilemethod : Curl.curlFTPMethod -> unit
      method set_ftplistonly : bool -> unit
      method set_ftpport : string -> unit
      method set_ftpresponsetimeout : int -> unit
      method set_ftpskippasvip : bool -> unit
      method set_ftpssl : Curl.curlFTPSSL -> unit
      method set_ftpsslauth : Curl.curlFTPSSLAuth -> unit
      method set_ftpsslccc : Curl.curlFTPSSLCCC -> unit
      method set_ftpuseeprt : bool -> unit
      method set_ftpuseepsv : bool -> unit
      method set_header : bool -> unit
      method set_headerfunction : (string -> int) -> unit
      method set_http200aliases : string list -> unit
      method set_httpauth : Curl.curlAuth list -> unit
      method set_httpcontentdecoding : bool -> unit
      method set_httpget : bool -> unit
      method set_httpheader : string list -> unit
      method set_httppost : Curl.curlHTTPPost list -> unit
      method set_httpproxytunnel : bool -> unit
      method set_httptransferdecoding : bool -> unit
      method set_httpversion : Curl.curlHTTPVersion -> unit
      method set_ignorecontentlength : bool -> unit
      method set_infilesize : int -> unit
      method set_infilesizelarge : int64 -> unit
      method set_interface : string -> unit
      method set_ioctlfunction :
        (Curl.t -> Curl.curlIOCmd -> Curl.curlIOErr) -> unit
      method set_ipresolve : Curl.curlIPResolve -> unit
      method set_krb4level : Curl.curlKRB4Level -> unit
      method set_localport : int -> unit
      method set_localportrange : int -> unit
      method set_lowspeedlimit : int -> unit
      method set_lowspeedtime : int -> unit
      method set_maxconnects : int -> unit
      method set_maxfilesize : int32 -> unit
      method set_maxfilesizelarge : int64 -> unit
      method set_maxrecvspeedlarge : int64 -> unit
      method set_maxredirs : int -> unit
      method set_maxsendspeedlarge : int64 -> unit
      method set_mimepost : Curl.curlMIMEPart list -> unit
      method set_netrc : Curl.curlNETRCOption -> unit
      method set_netrcfile : string -> unit
      method set_newdirectoryperms : int -> unit
      method set_newfileperms : int -> unit
      method set_nobody : bool -> unit
      method set_noprogress : bool -> unit
      method set_nosignal : bool -> unit
      method set_opensocketfunction : (Unix.file_descr -> unit) -> unit
      method set_post : bool -> unit
      method set_post301 : bool -> unit
      method set_postfields : string -> unit
      method set_postfieldsize : int -> unit
      method set_postfieldsizelarge : int64 -> unit
      method set_postquote : string list -> unit
      method set_private : string -> unit
      method set_progressfunction :
        (float -> float -> float -> float -> bool) -> unit
      method set_proxy : string -> unit
      method set_proxyauth : Curl.curlAuth list -> unit
      method set_proxyport : int -> unit
      method set_proxytransfermode : bool -> unit
      method set_proxytype : Curl.curlProxyType -> unit
      method set_proxyuserpwd : string -> unit
      method set_put : bool -> unit
      method set_quote : string list -> unit
      method set_randomfile : string -> unit
      method set_range : string -> unit
      method set_readfunction : (int -> string) -> unit
      method set_referer : string -> unit
      method set_resolve :
        (string * int * string) list -> (string * int) list -> unit
      method set_resumefrom : int -> unit
      method set_resumefromlarge : int64 -> unit
      method set_seekfunction :
        (int64 -> Curl.curlSeek -> Curl.curlSeekResult) -> unit
      method set_sshauthtypes : Curl.curlSSHAuthTypes list -> unit
      method set_sshhostpublickeymd5 : string -> unit
      method set_sshkeyfunction :
        (Curl.curlKHMatch -> string -> Curl.curlKHStat) -> unit
      method set_sshknownhosts : string -> unit
      method set_sshprivatekeyfile : string -> unit
      method set_sshpublickeyfile : string -> unit
      method set_sslcert : string -> unit
      method set_sslcertpasswd : string -> unit
      method set_sslcerttype : string -> unit
      method set_sslcipherlist : string -> unit
      method set_sslengine : string -> unit
      method set_sslenginedefault : bool -> unit
      method set_sslkey : string -> unit
      method set_sslkeypasswd : string -> unit
      method set_sslkeytype : string -> unit
      method set_sslsessionidcache : bool -> unit
      method set_sslverifyhost : Curl.curlSSLVerifyHost -> unit
      method set_sslverifypeer : bool -> unit
      method set_sslversion : Curl.curlSSLVersion -> unit
      method set_tcpnodelay : bool -> unit
      method set_timecondition : Curl.curlTimeCondition -> unit
      method set_timeout : int -> unit
      method set_timeoutms : int -> unit
      method set_timevalue : int32 -> unit
      method set_transfertext : bool -> unit
      method set_unrestrictedauth : bool -> unit
      method set_upload : bool -> unit
      method set_url : string -> unit
      method set_useragent : string -> unit
      method set_userpwd : string -> unit
      method set_verbose : bool -> unit
      method set_writefunction : (string -> int) -> unit
    end
  module Multi :
    sig
      type mt
      type curlPipelining = PIPE_NOTHING | PIPE_HTTP1 | PIPE_MULTIPLEX
      type curlMultiOption =
          CURLMOPT_PIPELINING of Curl.Multi.curlPipelining list
        | CURLMOPT_MAXCONNECTS of int
        | CURLMOPT_MAX_PIPELINE_LENGTH of int
        | CURLMOPT_MAX_HOST_CONNECTIONS of int
      exception Error of string
      val create : unit -> Curl.Multi.mt
      val add : Curl.Multi.mt -> Curl.t -> unit
      val remove : Curl.Multi.mt -> Curl.t -> unit
      val perform : Curl.Multi.mt -> int
      val wait : ?timeout_ms:int -> Curl.Multi.mt -> bool
      val remove_finished : Curl.Multi.mt -> (Curl.t * Curl.curlCode) option
      val cleanup : Curl.Multi.mt -> unit
      type poll = POLL_NONE | POLL_IN | POLL_OUT | POLL_INOUT | POLL_REMOVE
      type fd_status = EV_AUTO | EV_IN | EV_OUT | EV_INOUT
      val set_socket_function :
        Curl.Multi.mt -> (Unix.file_descr -> Curl.Multi.poll -> unit) -> unit
      val set_timer_function : Curl.Multi.mt -> (int -> unit) -> unit
      val action_all : Curl.Multi.mt -> int
      val action_timeout : Curl.Multi.mt -> unit
      val action :
        Curl.Multi.mt -> Unix.file_descr -> Curl.Multi.fd_status -> int
      external timeout : Curl.Multi.mt -> int = "caml_curl_multi_timeout"
      val setopt : Curl.Multi.mt -> Curl.Multi.curlMultiOption -> unit
    end
end