---@meta lcurl

--------------------------------------------------------------------------------
-- Lua-cURL C binding module
--------------------------------------------------------------------------------

---@alias lcurl_option integer|string
---@alias lcurl_info integer|string
---@alias lcurl_multi_option integer|string
---@alias lcurl_share_option integer|string
---@alias lcurl_url_flag integer
---@alias lcurl_headers string[]
---@alias lcurl_form_description table<string,lcurl_form_part>
---@alias lcurl_form_part string|lcurl_form_stream|lcurl_form_file|lcurl_form_buffer|lcurl_form_content

---@class lcurl_form_stream
---@field stream function|table|userdata Read function or object providing read/length
---@field length? integer Stream length, try to call stream:length() when not filled in
---@field name? string file name
---@field type? string MIME Type
---@field headers? lcurl_headers Additional headers for this part

---@class lcurl_form_file
---@field file string local file path
---@field name? string file name in form
---@field filename? string file name in form
---@field type? string MIME Type
---@field headers? lcurl_headers Additional headers for this part

---@class lcurl_form_buffer
---@field data string File content
---@field name string file name in form
---@field file? string Filename field compatible with old packaging layers
---@field type? string MIME Type
---@field headers? lcurl_headers Additional headers for this part

---@class lcurl_form_content
---@field [1]? string content
---@field content? string content
---@field type? string MIME Type
---@field headers? lcurl_headers Additional headers for this part

---@class lcurl_easy_option_info
---@field id integer Option ID
---@field name string option name
---@field type integer option type
---@field type_name string option type name
---@field flags integer option flag
---@field flags_set table<string,boolean> Option tag collection

---@class lcurl_version_info
---@field version string libcurl version
---@field version_num integer libcurl version number
---@field host string Build a platform
---@field features table<string,boolean> feature set
---@field protocols table<string,boolean> protocol collection
---@field ssl_version? string SSL version
---@field libz_version? string zlib version
---@field ares? string c-ares version
---@field libidn? string libidn version
---@field iconv_ver_num? integer iconv version number
---@field brotli_ver_num? integer brotli version number
---@field brotli_version? string brotli version
---@field nghttp2_ver_num? integer nghttp2 version number
---@field nghttp2_version? string nghttp2 version
---@field quic_version? string QUIC version
---@field cainfo? string CA file path
---@field capath? string CA directory path
---@field zstd_ver_num? integer zstd version number
---@field zstd_version? string zstd version

---@class lcurl_error*
local lcurl_error = {}

--- Get error classification.
---@return string category Misclassification
function lcurl_error:category() end

--- Get error classification.
---@return string category Misclassification
function lcurl_error:cat() end

--- Get error code.
---@return integer code error code
function lcurl_error:no() end

--- Get the error name.
---@return string name error name
function lcurl_error:name() end

--- Get the error name.
---@return string name error name
function lcurl_error:mnemo() end

--- Get error description.
---@return string message Error description
function lcurl_error:msg() end

---@class lcurl_easy*
---@field data any User data
---@field setopt_verbose fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_VERBOSE
---@field setopt_header fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HEADER
---@field setopt_noprogress fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_NOPROGRESS
---@field setopt_nosignal fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_NOSIGNAL
---@field setopt_wildcardmatch fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_WILDCARDMATCH
---@field setopt_url fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_URL
---@field setopt_failonerror fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FAILONERROR
---@field setopt_protocols fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROTOCOLS
---@field setopt_redir_protocols fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_REDIR_PROTOCOLS
---@field setopt_proxy fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY
---@field setopt_proxyport fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXYPORT
---@field setopt_proxytype fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXYTYPE
---@field setopt_noproxy fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_NOPROXY
---@field setopt_httpproxytunnel fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HTTPPROXYTUNNEL
---@field setopt_socks5_gssapi_service fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SOCKS5_GSSAPI_SERVICE
---@field setopt_socks5_gssapi_nec fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SOCKS5_GSSAPI_NEC
---@field setopt_interface fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_INTERFACE
---@field setopt_localport fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_LOCALPORT
---@field setopt_localportrange fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_LOCALPORTRANGE
---@field setopt_dns_cache_timeout fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DNS_CACHE_TIMEOUT
---@field setopt_dns_use_global_cache fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DNS_USE_GLOBAL_CACHE
---@field setopt_dns_servers fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DNS_SERVERS
---@field setopt_buffersize fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_BUFFERSIZE
---@field setopt_port fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PORT
---@field setopt_tcp_nodelay fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TCP_NODELAY
---@field setopt_address_scope fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_ADDRESS_SCOPE
---@field setopt_tcp_keepalive fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TCP_KEEPALIVE
---@field setopt_tcp_keepidle fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TCP_KEEPIDLE
---@field setopt_tcp_keepintvl fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TCP_KEEPINTVL
---@field setopt_netrc fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_NETRC
---@field setopt_netrc_file fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_NETRC_FILE
---@field setopt_userpwd fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_USERPWD
---@field setopt_proxyuserpwd fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXYUSERPWD
---@field setopt_username fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_USERNAME
---@field setopt_password fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PASSWORD
---@field setopt_login_options fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_LOGIN_OPTIONS
---@field setopt_proxyusername fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXYUSERNAME
---@field setopt_proxypassword fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXYPASSWORD
---@field setopt_httpauth fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HTTPAUTH
---@field setopt_tlsauth_username fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TLSAUTH_USERNAME
---@field setopt_tlsauth_password fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TLSAUTH_PASSWORD
---@field setopt_tlsauth_type fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TLSAUTH_TYPE
---@field setopt_proxyauth fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXYAUTH
---@field setopt_sasl_ir fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SASL_IR
---@field setopt_xoauth2_bearer fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_XOAUTH2_BEARER
---@field setopt_autoreferer fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_AUTOREFERER
---@field setopt_accept_encoding fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_ACCEPT_ENCODING
---@field setopt_transfer_encoding fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TRANSFER_ENCODING
---@field setopt_followlocation fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FOLLOWLOCATION
---@field setopt_unrestricted_auth fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_UNRESTRICTED_AUTH
---@field setopt_maxredirs fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAXREDIRS
---@field setopt_postredir fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_POSTREDIR
---@field setopt_put fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PUT
---@field setopt_post fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_POST
---@field setopt_referer fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_REFERER
---@field setopt_useragent fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_USERAGENT
---@field setopt_headeropt fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HEADEROPT
---@field setopt_httpheader fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HTTPHEADER
---@field setopt_proxyheader fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXYHEADER
---@field setopt_http200aliases fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HTTP200ALIASES
---@field setopt_cookie fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_COOKIE
---@field setopt_cookiefile fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_COOKIEFILE
---@field setopt_cookiejar fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_COOKIEJAR
---@field setopt_cookiesession fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_COOKIESESSION
---@field setopt_cookielist fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_COOKIELIST
---@field setopt_httpget fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HTTPGET
---@field setopt_http_version fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HTTP_VERSION
---@field setopt_ignore_content_length fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_IGNORE_CONTENT_LENGTH
---@field setopt_http_content_decoding fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HTTP_CONTENT_DECODING
---@field setopt_http_transfer_decoding fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HTTP_TRANSFER_DECODING
---@field setopt_expect_100_timeout_ms fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_EXPECT_100_TIMEOUT_MS
---@field setopt_mail_from fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAIL_FROM
---@field setopt_mail_rcpt fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAIL_RCPT
---@field setopt_mail_auth fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAIL_AUTH
---@field setopt_tftp_blksize fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TFTP_BLKSIZE
---@field setopt_ftpport fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTPPORT
---@field setopt_quote fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_QUOTE
---@field setopt_postquote fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_POSTQUOTE
---@field setopt_prequote fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PREQUOTE
---@field setopt_dirlistonly fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DIRLISTONLY
---@field setopt_append fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Setup OPT_APPEND
---@field setopt_ftp_use_eprt fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTP_USE_EPRT
---@field setopt_ftp_use_epsv fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTP_USE_EPSV
---@field setopt_ftp_use_pret fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTP_USE_PRET
---@field setopt_ftp_create_missing_dirs fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTP_CREATE_MISSING_DIRS
---@field setopt_ftp_response_timeout fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTP_RESPONSE_TIMEOUT
---@field setopt_ftp_alternative_to_user fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTP_ALTERNATIVE_TO_USER
---@field setopt_ftp_skip_pasv_ip fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTP_SKIP_PASV_IP
---@field setopt_ftpsslauth fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTPSSLAUTH
---@field setopt_ftp_ssl_ccc fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTP_SSL_CCC
---@field setopt_ftp_account fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTP_ACCOUNT
---@field setopt_ftp_filemethod fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FTP_FILEMETHOD
---@field setopt_transfertext fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TRANSFERTEXT
---@field setopt_proxy_transfer_mode fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_TRANSFER_MODE
---@field setopt_crlf fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CRLF
---@field setopt_range fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RANGE
---@field setopt_resume_from fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RESUME_FROM
---@field setopt_resume_from_large fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RESUME_FROM_LARGE
---@field setopt_customrequest fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CUSTOMREQUEST
---@field setopt_filetime fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FILETIME
---@field setopt_nobody fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_NOBODY
---@field setopt_infilesize fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_INFILESIZE
---@field setopt_infilesize_large fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_INFILESIZE_LARGE
---@field setopt_upload fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_UPLOAD
---@field setopt_maxfilesize fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAXFILESIZE
---@field setopt_maxfilesize_large fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAXFILESIZE_LARGE
---@field setopt_timecondition fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TIMECONDITION
---@field setopt_timevalue fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TIMEVALUE
---@field setopt_timeout fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TIMEOUT
---@field setopt_timeout_ms fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TIMEOUT_MS
---@field setopt_low_speed_limit fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_LOW_SPEED_LIMIT
---@field setopt_low_speed_time fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_LOW_SPEED_TIME
---@field setopt_max_send_speed_large fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAX_SEND_SPEED_LARGE
---@field setopt_max_recv_speed_large fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAX_RECV_SPEED_LARGE
---@field setopt_maxconnects fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAXCONNECTS
---@field setopt_fresh_connect fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FRESH_CONNECT
---@field setopt_forbid_reuse fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FORBID_REUSE
---@field setopt_connecttimeout fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CONNECTTIMEOUT
---@field setopt_connecttimeout_ms fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CONNECTTIMEOUT_MS
---@field setopt_ipresolve fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_IPRESOLVE
---@field setopt_connect_only fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CONNECT_ONLY
---@field setopt_use_ssl fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_USE_SSL
---@field setopt_resolve fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RESOLVE
---@field setopt_dns_interface fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DNS_INTERFACE
---@field setopt_dns_local_ip4 fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DNS_LOCAL_IP4
---@field setopt_dns_local_ip6 fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DNS_LOCAL_IP6
---@field setopt_accepttimeout_ms fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_ACCEPTTIMEOUT_MS
---@field setopt_ssh_auth_types fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSH_AUTH_TYPES
---@field setopt_ssh_host_public_key_md5 fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSH_HOST_PUBLIC_KEY_MD5
---@field setopt_ssh_public_keyfile fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSH_PUBLIC_KEYFILE
---@field setopt_ssh_private_keyfile fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSH_PRIVATE_KEYFILE
---@field setopt_ssh_knownhosts fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSH_KNOWNHOSTS
---@field setopt_new_file_perms fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_NEW_FILE_PERMS
---@field setopt_new_directory_perms fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_NEW_DIRECTORY_PERMS
---@field setopt_telnetoptions fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TELNETOPTIONS
---@field setopt_random_file fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RANDOM_FILE
---@field setopt_egdsocket fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_EGDSOCKET
---@field setopt_issuercert fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_ISSUERCERT
---@field setopt_krblevel fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_KRBLEVEL
---@field setopt_cainfo fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CAINFO
---@field setopt_capath fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CAPATH
---@field setopt_certinfo fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CERTINFO
---@field setopt_crlfile fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CRLFILE
---@field setopt_sslcert fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSLCERT
---@field setopt_sslcerttype fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSLCERTTYPE
---@field setopt_sslengine fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSLENGINE
---@field setopt_sslengine_default fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSLENGINE_DEFAULT
---@field setopt_sslkey fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSLKEY
---@field setopt_sslkeytype fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSLKEYTYPE
---@field setopt_sslversion fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSLVERSION
---@field setopt_ssl_cipher_list fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSL_CIPHER_LIST
---@field setopt_ssl_enable_alpn fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSL_ENABLE_ALPN
---@field setopt_ssl_enable_npn fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSL_ENABLE_NPN
---@field setopt_ssl_options fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSL_OPTIONS
---@field setopt_ssl_sessionid_cache fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSL_SESSIONID_CACHE
---@field setopt_ssl_verifyhost fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSL_VERIFYHOST
---@field setopt_ssl_verifypeer fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSL_VERIFYPEER
---@field setopt_keypasswd fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_KEYPASSWD
---@field setopt_rtsp_client_cseq fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RTSP_CLIENT_CSEQ
---@field setopt_rtsp_request fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RTSP_REQUEST
---@field setopt_rtsp_server_cseq fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RTSP_SERVER_CSEQ
---@field setopt_rtsp_session_id fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RTSP_SESSION_ID
---@field setopt_rtsp_stream_uri fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RTSP_STREAM_URI
---@field setopt_rtsp_transport fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_RTSP_TRANSPORT
---@field setopt_gssapi_delegation fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_GSSAPI_DELEGATION
---@field setopt_pinnedpublickey fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PINNEDPUBLICKEY
---@field setopt_unix_socket_path fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_UNIX_SOCKET_PATH
---@field setopt_ssl_verifystatus fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSL_VERIFYSTATUS
---@field setopt_ssl_falsestart fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSL_FALSESTART
---@field setopt_path_as_is fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PATH_AS_IS
---@field setopt_proxy_service_name fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SERVICE_NAME
---@field setopt_service_name fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SERVICE_NAME
---@field setopt_pipewait fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PIPEWAIT
---@field setopt_default_protocol fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DEFAULT_PROTOCOL
---@field setopt_stream_weight fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_STREAM_WEIGHT
---@field setopt_tftp_no_options fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TFTP_NO_OPTIONS
---@field setopt_tcp_fastopen fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TCP_FASTOPEN
---@field setopt_connect_to fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CONNECT_TO
---@field setopt_keep_sending_on_error fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_KEEP_SENDING_ON_ERROR
---@field setopt_proxy_cainfo fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_CAINFO
---@field setopt_proxy_capath fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_CAPATH
---@field setopt_proxy_ssl_verifypeer fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSL_VERIFYPEER
---@field setopt_proxy_ssl_verifyhost fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSL_VERIFYHOST
---@field setopt_proxy_sslversion fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSLVERSION
---@field setopt_proxy_tlsauth_username fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_TLSAUTH_USERNAME
---@field setopt_proxy_tlsauth_password fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_TLSAUTH_PASSWORD
---@field setopt_proxy_tlsauth_type fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_TLSAUTH_TYPE
---@field setopt_proxy_sslcert fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSLCERT
---@field setopt_proxy_sslcerttype fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSLCERTTYPE
---@field setopt_proxy_sslkey fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSLKEY
---@field setopt_proxy_sslkeytype fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSLKEYTYPE
---@field setopt_proxy_keypasswd fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_KEYPASSWD
---@field setopt_proxy_ssl_cipher_list fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSL_CIPHER_LIST
---@field setopt_proxy_crlfile fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_CRLFILE
---@field setopt_proxy_ssl_options fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSL_OPTIONS
---@field setopt_pre_proxy fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PRE_PROXY
---@field setopt_proxy_pinnedpublickey fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_PINNEDPUBLICKEY
---@field setopt_abstract_unix_socket fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_ABSTRACT_UNIX_SOCKET
---@field setopt_suppress_connect_headers fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SUPPRESS_CONNECT_HEADERS
---@field setopt_request_target fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_REQUEST_TARGET
---@field setopt_socks5_auth fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SOCKS5_AUTH
---@field setopt_ssh_compression fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSH_COMPRESSION
---@field setopt_happy_eyeballs_timeout_ms fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HAPPY_EYEBALLS_TIMEOUT_MS
---@field setopt_timevalue_large fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TIMEVALUE_LARGE
---@field setopt_dns_shuffle_addresses fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DNS_SHUFFLE_ADDRESSES
---@field setopt_haproxyprotocol fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HAPROXYPROTOCOL
---@field setopt_disallow_username_in_url fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DISALLOW_USERNAME_IN_URL
---@field setopt_proxy_tls13_ciphers fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_TLS13_CIPHERS
---@field setopt_tls13_ciphers fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TLS13_CIPHERS
---@field setopt_upkeep_interval_ms fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_UPKEEP_INTERVAL_MS
---@field setopt_doh_url fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DOH_URL
---@field setopt_upload_buffersize fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_UPLOAD_BUFFERSIZE
---@field setopt_http09_allowed fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HTTP09_ALLOWED
---@field setopt_altsvc fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_ALTSVC
---@field setopt_altsvc_ctrl fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_ALTSVC_CTRL
---@field setopt_maxage_conn fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAXAGE_CONN
---@field setopt_sasl_authzid fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SASL_AUTHZID
---@field setopt_mail_rcpt_alllowfails fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MAIL_RCPT_ALLLOWFAILS
---@field setopt_sslcert_blob fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSLCERT_BLOB
---@field setopt_sslkey_blob fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSLKEY_BLOB
---@field setopt_proxy_sslcert_blob fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSLCERT_BLOB
---@field setopt_proxy_sslkey_blob fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_SSLKEY_BLOB
---@field setopt_issuercert_blob fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_ISSUERCERT_BLOB
---@field setopt_proxy_issuercert fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_ISSUERCERT
---@field setopt_proxy_issuercert_blob fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROXY_ISSUERCERT_BLOB
---@field setopt_ssl_ec_curves fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSL_EC_CURVES
---@field setopt_hsts_ctrl fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HSTS_CTRL
---@field setopt_hsts fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HSTS
---@field setopt_postfields fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_POSTFIELDS
---@field setopt_httppost fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HTTPPOST
---@field setopt_share fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SHARE
---@field setopt_writefunction fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_WRITEFUNCTION
---@field setopt_readfunction fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_READFUNCTION
---@field setopt_headerfunction fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HEADERFUNCTION
---@field setopt_progressfunction fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_PROGRESSFUNCTION
---@field setopt_seekfunction fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SEEKFUNCTION
---@field setopt_debugfunction fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_DEBUGFUNCTION
---@field setopt_ssh_keyfunction fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_SSH_KEYFUNCTION
---@field setopt_fnmatch_function fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_FNMATCH_FUNCTION
---@field setopt_chunk_bgn_function fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CHUNK_BGN_FUNCTION
---@field setopt_chunk_end_function fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CHUNK_END_FUNCTION
---@field setopt_stream_depends fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_STREAM_DEPENDS
---@field setopt_stream_depends_e fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_STREAM_DEPENDS_E
---@field setopt_mimepost fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_MIMEPOST
---@field setopt_curlu fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_CURLU
---@field setopt_trailerfunction fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_TRAILERFUNCTION
---@field setopt_hstsreadfunction fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HSTSREADFUNCTION
---@field setopt_hstswritefunction fun(self:lcurl_easy*, value?:any, ...:any):lcurl_easy*?, lcurl_error*? Set OPT_HSTSWRITEFUNCTION
---@field unsetopt_verbose fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_VERBOSE
---@field unsetopt_header fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HEADER
---@field unsetopt_noprogress fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_NOPROGRESS
---@field unsetopt_nosignal fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_NOSIGNAL
---@field unsetopt_wildcardmatch fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_WILDCARDMATCH
---@field unsetopt_url fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_URL
---@field unsetopt_failonerror fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FAILONERROR
---@field unsetopt_protocols fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROTOCOLS
---@field unsetopt_redir_protocols fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_REDIR_PROTOCOLS
---@field unsetopt_proxy fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY
---@field unsetopt_proxyport fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXYPORT
---@field unsetopt_proxytype fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXYTYPE
---@field unsetopt_noproxy fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_NOPROXY
---@field unsetopt_httpproxytunnel fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HTTPPROXYTUNNEL
---@field unsetopt_socks5_gssapi_service fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SOCKS5_GSSAPI_SERVICE
---@field unsetopt_socks5_gssapi_nec fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SOCKS5_GSSAPI_NEC
---@field unsetopt_interface fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_INTERFACE
---@field unsetopt_localport fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_LOCALPORT
---@field unsetopt_localportrange fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_LOCALPORTRANGE
---@field unsetopt_dns_cache_timeout fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DNS_CACHE_TIMEOUT
---@field unsetopt_dns_use_global_cache fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DNS_USE_GLOBAL_CACHE
---@field unsetopt_dns_servers fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DNS_SERVERS
---@field unsetopt_buffersize fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_BUFFERSIZE
---@field unsetopt_port fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PORT
---@field unsetopt_tcp_nodelay fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TCP_NODELAY
---@field unsetopt_address_scope fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_ADDRESS_SCOPE
---@field unsetopt_tcp_keepalive fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TCP_KEEPALIVE
---@field unsetopt_tcp_keepidle fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TCP_KEEPIDLE
---@field unsetopt_tcp_keepintvl fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TCP_KEEPINTVL
---@field unsetopt_netrc fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_NETRC
---@field unsetopt_netrc_file fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_NETRC_FILE
---@field unsetopt_userpwd fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_USERPWD
---@field unsetopt_proxyuserpwd fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXYUSERPWD
---@field unsetopt_username fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_USERNAME
---@field unsetopt_password fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PASSWORD
---@field unsetopt_login_options fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_LOGIN_OPTIONS
---@field unsetopt_proxyusername fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXYUSERNAME
---@field unsetopt_proxypassword fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXYPASSWORD
---@field unsetopt_httpauth fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HTTPAUTH
---@field unsetopt_tlsauth_username fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TLSAUTH_USERNAME
---@field unsetopt_tlsauth_password fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TLSAUTH_PASSWORD
---@field unsetopt_tlsauth_type fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TLSAUTH_TYPE
---@field unsetopt_proxyauth fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXYAUTH
---@field unsetopt_sasl_ir fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SASL_IR
---@field unsetopt_xoauth2_bearer fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_XOAUTH2_BEARER
---@field unsetopt_autoreferer fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_AUTOREFERER
---@field unsetopt_accept_encoding fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_ACCEPT_ENCODING
---@field unsetopt_transfer_encoding fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TRANSFER_ENCODING
---@field unsetopt_followlocation fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FOLLOWLOCATION
---@field unsetopt_unrestricted_auth fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_UNRESTRICTED_AUTH
---@field unsetopt_maxredirs fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAXREDIRS
---@field unsetopt_postredir fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_POSTREDIR
---@field unsetopt_put fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PUT
---@field unsetopt_post fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_POST
---@field unsetopt_referer fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_REFERER
---@field unsetopt_useragent fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_USERAGENT
---@field unsetopt_headeropt fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HEADEROPT
---@field unsetopt_httpheader fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HTTPHEADER
---@field unsetopt_proxyheader fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXYHEADER
---@field unsetopt_http200aliases fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HTTP200ALIASES
---@field unsetopt_cookie fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_COOKIE
---@field unsetopt_cookiefile fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_COOKIEFILE
---@field unsetopt_cookiejar fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_COOKIEJAR
---@field unsetopt_cookiesession fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_COOKIESESSION
---@field unsetopt_cookielist fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_COOKIELIST
---@field unsetopt_httpget fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HTTPGET
---@field unsetopt_http_version fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HTTP_VERSION
---@field unsetopt_ignore_content_length fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_IGNORE_CONTENT_LENGTH
---@field unsetopt_http_content_decoding fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HTTP_CONTENT_DECODING
---@field unsetopt_http_transfer_decoding fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HTTP_TRANSFER_DECODING
---@field unsetopt_expect_100_timeout_ms fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_EXPECT_100_TIMEOUT_MS
---@field unsetopt_mail_from fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAIL_FROM
---@field unsetopt_mail_rcpt fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAIL_RCPT
---@field unsetopt_mail_auth fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAIL_AUTH
---@field unsetopt_tftp_blksize fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TFTP_BLKSIZE
---@field unsetopt_ftpport fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTPPORT
---@field unsetopt_quote fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_QUOTE
---@field unsetopt_postquote fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_POSTQUOTE
---@field unsetopt_prequote fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PREQUOTE
---@field unsetopt_dirlistonly fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DIRLISTONLY
---@field unsetopt_append fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_APPEND
---@field unsetopt_ftp_use_eprt fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTP_USE_EPRT
---@field unsetopt_ftp_use_epsv fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTP_USE_EPSV
---@field unsetopt_ftp_use_pret fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTP_USE_PRET
---@field unsetopt_ftp_create_missing_dirs fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTP_CREATE_MISSING_DIRS
---@field unsetopt_ftp_response_timeout fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTP_RESPONSE_TIMEOUT
---@field unsetopt_ftp_alternative_to_user fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTP_ALTERNATIVE_TO_USER
---@field unsetopt_ftp_skip_pasv_ip fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTP_SKIP_PASV_IP
---@field unsetopt_ftpsslauth fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTPSSLAUTH
---@field unsetopt_ftp_ssl_ccc fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTP_SSL_CCC
---@field unsetopt_ftp_account fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTP_ACCOUNT
---@field unsetopt_ftp_filemethod fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FTP_FILEMETHOD
---@field unsetopt_transfertext fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TRANSFERTEXT
---@field unsetopt_proxy_transfer_mode fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_TRANSFER_MODE
---@field unsetopt_crlf fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CRLF
---@field unsetopt_range fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RANGE
---@field unsetopt_resume_from fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RESUME_FROM
---@field unsetopt_resume_from_large fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RESUME_FROM_LARGE
---@field unsetopt_customrequest fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CUSTOMREQUEST
---@field unsetopt_filetime fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FILETIME
---@field unsetopt_nobody fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_NOBODY
---@field unsetopt_infilesize fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_INFILESIZE
---@field unsetopt_infilesize_large fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_INFILESIZE_LARGE
---@field unsetopt_upload fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_UPLOAD
---@field unsetopt_maxfilesize fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAXFILESIZE
---@field unsetopt_maxfilesize_large fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAXFILESIZE_LARGE
---@field unsetopt_timecondition fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TIMECONDITION
---@field unsetopt_timevalue fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TIMEVALUE
---@field unsetopt_timeout fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TIMEOUT
---@field unsetopt_timeout_ms fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TIMEOUT_MS
---@field unsetopt_low_speed_limit fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_LOW_SPEED_LIMIT
---@field unsetopt_low_speed_time fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_LOW_SPEED_TIME
---@field unsetopt_max_send_speed_large fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAX_SEND_SPEED_LARGE
---@field unsetopt_max_recv_speed_large fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAX_RECV_SPEED_LARGE
---@field unsetopt_maxconnects fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAXCONNECTS
---@field unsetopt_fresh_connect fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FRESH_CONNECT
---@field unsetopt_forbid_reuse fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FORBID_REUSE
---@field unsetopt_connecttimeout fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CONNECTTIMEOUT
---@field unsetopt_connecttimeout_ms fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CONNECTTIMEOUT_MS
---@field unsetopt_ipresolve fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_IPRESOLVE
---@field unsetopt_connect_only fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CONNECT_ONLY
---@field unsetopt_use_ssl fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_USE_SSL
---@field unsetopt_resolve fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RESOLVE
---@field unsetopt_dns_interface fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DNS_INTERFACE
---@field unsetopt_dns_local_ip4 fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DNS_LOCAL_IP4
---@field unsetopt_dns_local_ip6 fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DNS_LOCAL_IP6
---@field unsetopt_accepttimeout_ms fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_ACCEPTTIMEOUT_MS
---@field unsetopt_ssh_auth_types fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSH_AUTH_TYPES
---@field unsetopt_ssh_host_public_key_md5 fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSH_HOST_PUBLIC_KEY_MD5
---@field unsetopt_ssh_public_keyfile fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSH_PUBLIC_KEYFILE
---@field unsetopt_ssh_private_keyfile fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSH_PRIVATE_KEYFILE
---@field unsetopt_ssh_knownhosts fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSH_KNOWNHOSTS
---@field unsetopt_new_file_perms fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_NEW_FILE_PERMS
---@field unsetopt_new_directory_perms fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_NEW_DIRECTORY_PERMS
---@field unsetopt_telnetoptions fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TELNETOPTIONS
---@field unsetopt_random_file fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RANDOM_FILE
---@field unsetopt_egdsocket fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_EGDSOCKET
---@field unsetopt_issuercert fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_ISSUERCERT
---@field unsetopt_krblevel fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_KRBLEVEL
---@field unsetopt_cainfo fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CAINFO
---@field unsetopt_capath fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CAPATH
---@field unsetopt_certinfo fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CERTINFO
---@field unsetopt_crlfile fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CRLFILE
---@field unsetopt_sslcert fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSLCERT
---@field unsetopt_sslcerttype fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSLCERTTYPE
---@field unsetopt_sslengine fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSLENGINE
---@field unsetopt_sslengine_default fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSLENGINE_DEFAULT
---@field unsetopt_sslkey fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSLKEY
---@field unsetopt_sslkeytype fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSLKEYTYPE
---@field unsetopt_sslversion fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSLVERSION
---@field unsetopt_ssl_cipher_list fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSL_CIPHER_LIST
---@field unsetopt_ssl_enable_alpn fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSL_ENABLE_ALPN
---@field unsetopt_ssl_enable_npn fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSL_ENABLE_NPN
---@field unsetopt_ssl_options fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSL_OPTIONS
---@field unsetopt_ssl_sessionid_cache fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSL_SESSIONID_CACHE
---@field unsetopt_ssl_verifyhost fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSL_VERIFYHOST
---@field unsetopt_ssl_verifypeer fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSL_VERIFYPEER
---@field unsetopt_keypasswd fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_KEYPASSWD
---@field unsetopt_rtsp_client_cseq fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RTSP_CLIENT_CSEQ
---@field unsetopt_rtsp_request fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RTSP_REQUEST
---@field unsetopt_rtsp_server_cseq fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RTSP_SERVER_CSEQ
---@field unsetopt_rtsp_session_id fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RTSP_SESSION_ID
---@field unsetopt_rtsp_stream_uri fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RTSP_STREAM_URI
---@field unsetopt_rtsp_transport fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_RTSP_TRANSPORT
---@field unsetopt_gssapi_delegation fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_GSSAPI_DELEGATION
---@field unsetopt_pinnedpublickey fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PINNEDPUBLICKEY
---@field unsetopt_unix_socket_path fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_UNIX_SOCKET_PATH
---@field unsetopt_ssl_verifystatus fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSL_VERIFYSTATUS
---@field unsetopt_ssl_falsestart fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSL_FALSESTART
---@field unsetopt_path_as_is fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PATH_AS_IS
---@field unsetopt_proxy_service_name fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SERVICE_NAME
---@field unsetopt_service_name fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SERVICE_NAME
---@field unsetopt_pipewait fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PIPEWAIT
---@field unsetopt_default_protocol fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DEFAULT_PROTOCOL
---@field unsetopt_stream_weight fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_STREAM_WEIGHT
---@field unsetopt_tftp_no_options fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TFTP_NO_OPTIONS
---@field unsetopt_tcp_fastopen fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TCP_FASTOPEN
---@field unsetopt_connect_to fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CONNECT_TO
---@field unsetopt_keep_sending_on_error fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_KEEP_SENDING_ON_ERROR
---@field unsetopt_proxy_cainfo fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_CAINFO
---@field unsetopt_proxy_capath fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_CAPATH
---@field unsetopt_proxy_ssl_verifypeer fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSL_VERIFYPEER
---@field unsetopt_proxy_ssl_verifyhost fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSL_VERIFYHOST
---@field unsetopt_proxy_sslversion fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSLVERSION
---@field unsetopt_proxy_tlsauth_username fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_TLSAUTH_USERNAME
---@field unsetopt_proxy_tlsauth_password fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_TLSAUTH_PASSWORD
---@field unsetopt_proxy_tlsauth_type fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_TLSAUTH_TYPE
---@field unsetopt_proxy_sslcert fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSLCERT
---@field unsetopt_proxy_sslcerttype fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSLCERTTYPE
---@field unsetopt_proxy_sslkey fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSLKEY
---@field unsetopt_proxy_sslkeytype fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSLKEYTYPE
---@field unsetopt_proxy_keypasswd fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_KEYPASSWD
---@field unsetopt_proxy_ssl_cipher_list fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSL_CIPHER_LIST
---@field unsetopt_proxy_crlfile fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_CRLFILE
---@field unsetopt_proxy_ssl_options fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSL_OPTIONS
---@field unsetopt_pre_proxy fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PRE_PROXY
---@field unsetopt_proxy_pinnedpublickey fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_PINNEDPUBLICKEY
---@field unsetopt_abstract_unix_socket fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_ABSTRACT_UNIX_SOCKET
---@field unsetopt_suppress_connect_headers fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SUPPRESS_CONNECT_HEADERS
---@field unsetopt_request_target fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_REQUEST_TARGET
---@field unsetopt_socks5_auth fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SOCKS5_AUTH
---@field unsetopt_ssh_compression fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSH_COMPRESSION
---@field unsetopt_happy_eyeballs_timeout_ms fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HAPPY_EYEBALLS_TIMEOUT_MS
---@field unsetopt_timevalue_large fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TIMEVALUE_LARGE
---@field unsetopt_dns_shuffle_addresses fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DNS_SHUFFLE_ADDRESSES
---@field unsetopt_haproxyprotocol fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HAPROXYPROTOCOL
---@field unsetopt_disallow_username_in_url fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DISALLOW_USERNAME_IN_URL
---@field unsetopt_proxy_tls13_ciphers fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_TLS13_CIPHERS
---@field unsetopt_tls13_ciphers fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TLS13_CIPHERS
---@field unsetopt_upkeep_interval_ms fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_UPKEEP_INTERVAL_MS
---@field unsetopt_doh_url fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DOH_URL
---@field unsetopt_upload_buffersize fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_UPLOAD_BUFFERSIZE
---@field unsetopt_http09_allowed fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HTTP09_ALLOWED
---@field unsetopt_altsvc fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_ALTSVC
---@field unsetopt_altsvc_ctrl fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_ALTSVC_CTRL
---@field unsetopt_maxage_conn fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAXAGE_CONN
---@field unsetopt_sasl_authzid fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SASL_AUTHZID
---@field unsetopt_mail_rcpt_alllowfails fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MAIL_RCPT_ALLLOWFAILS
---@field unsetopt_sslcert_blob fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSLCERT_BLOB
---@field unsetopt_sslkey_blob fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSLKEY_BLOB
---@field unsetopt_proxy_sslcert_blob fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSLCERT_BLOB
---@field unsetopt_proxy_sslkey_blob fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_SSLKEY_BLOB
---@field unsetopt_issuercert_blob fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_ISSUERCERT_BLOB
---@field unsetopt_proxy_issuercert fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_ISSUERCERT
---@field unsetopt_proxy_issuercert_blob fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROXY_ISSUERCERT_BLOB
---@field unsetopt_ssl_ec_curves fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSL_EC_CURVES
---@field unsetopt_hsts_ctrl fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HSTS_CTRL
---@field unsetopt_hsts fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HSTS
---@field unsetopt_postfields fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_POSTFIELDS
---@field unsetopt_httppost fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HTTPPOST
---@field unsetopt_share fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SHARE
---@field unsetopt_writefunction fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_WRITEFUNCTION
---@field unsetopt_readfunction fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_READFUNCTION
---@field unsetopt_headerfunction fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HEADERFUNCTION
---@field unsetopt_progressfunction fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_PROGRESSFUNCTION
---@field unsetopt_seekfunction fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SEEKFUNCTION
---@field unsetopt_debugfunction fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_DEBUGFUNCTION
---@field unsetopt_ssh_keyfunction fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_SSH_KEYFUNCTION
---@field unsetopt_fnmatch_function fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_FNMATCH_FUNCTION
---@field unsetopt_chunk_bgn_function fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CHUNK_BGN_FUNCTION
---@field unsetopt_chunk_end_function fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CHUNK_END_FUNCTION
---@field unsetopt_stream_depends fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_STREAM_DEPENDS
---@field unsetopt_stream_depends_e fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_STREAM_DEPENDS_E
---@field unsetopt_mimepost fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_MIMEPOST
---@field unsetopt_curlu fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_CURLU
---@field unsetopt_trailerfunction fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_TRAILERFUNCTION
---@field unsetopt_hstsreadfunction fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HSTSREADFUNCTION
---@field unsetopt_hstswritefunction fun(self:lcurl_easy*):lcurl_easy*?, lcurl_error*? Reset OPT_HSTSWRITEFUNCTION
---@field getinfo_effective_url fun(self:lcurl_easy*):any Get INFO_EFFECTIVE_URL
---@field getinfo_response_code fun(self:lcurl_easy*):any Get INFO_RESPONSE_CODE
---@field getinfo_http_connectcode fun(self:lcurl_easy*):any Get INFO_HTTP_CONNECTCODE
---@field getinfo_filetime fun(self:lcurl_easy*):any Get INFO_FILETIME
---@field getinfo_total_time fun(self:lcurl_easy*):any Get INFO_TOTAL_TIME
---@field getinfo_namelookup_time fun(self:lcurl_easy*):any Get INFO_NAMELOOKUP_TIME
---@field getinfo_connect_time fun(self:lcurl_easy*):any Get INFO_CONNECT_TIME
---@field getinfo_appconnect_time fun(self:lcurl_easy*):any Get INFO_APPCONNECT_TIME
---@field getinfo_pretransfer_time fun(self:lcurl_easy*):any Get INFO_PRETRANSFER_TIME
---@field getinfo_starttransfer_time fun(self:lcurl_easy*):any Get INFO_STARTTRANSFER_TIME
---@field getinfo_redirect_time fun(self:lcurl_easy*):any Get INFO_REDIRECT_TIME
---@field getinfo_redirect_count fun(self:lcurl_easy*):any Get INFO_REDIRECT_COUNT
---@field getinfo_redirect_url fun(self:lcurl_easy*):any Get INFO_REDIRECT_URL
---@field getinfo_size_upload fun(self:lcurl_easy*):any Get INFO_SIZE_UPLOAD
---@field getinfo_size_download fun(self:lcurl_easy*):any Get INFO_SIZE_DOWNLOAD
---@field getinfo_speed_download fun(self:lcurl_easy*):any Get INFO_SPEED_DOWNLOAD
---@field getinfo_speed_upload fun(self:lcurl_easy*):any Get INFO_SPEED_UPLOAD
---@field getinfo_header_size fun(self:lcurl_easy*):any Get INFO_HEADER_SIZE
---@field getinfo_request_size fun(self:lcurl_easy*):any Get INFO_REQUEST_SIZE
---@field getinfo_ssl_verifyresult fun(self:lcurl_easy*):any Get INFO_SSL_VERIFYRESULT
---@field getinfo_ssl_engines fun(self:lcurl_easy*):any Get INFO_SSL_ENGINES
---@field getinfo_content_length_download fun(self:lcurl_easy*):any Get INFO_CONTENT_LENGTH_DOWNLOAD
---@field getinfo_content_length_upload fun(self:lcurl_easy*):any Get INFO_CONTENT_LENGTH_UPLOAD
---@field getinfo_content_type fun(self:lcurl_easy*):any Get INFO_CONTENT_TYPE
---@field getinfo_httpauth_avail fun(self:lcurl_easy*):any Get INFO_HTTPAUTH_AVAIL
---@field getinfo_proxyauth_avail fun(self:lcurl_easy*):any Get INFO_PROXYAUTH_AVAIL
---@field getinfo_os_errno fun(self:lcurl_easy*):any Get INFO_OS_ERRNO
---@field getinfo_num_connects fun(self:lcurl_easy*):any Get INFO_NUM_CONNECTS
---@field getinfo_primary_ip fun(self:lcurl_easy*):any Get INFO_PRIMARY_IP
---@field getinfo_certinfo fun(self:lcurl_easy*):any Get INFO_CERTINFO
---@field getinfo_primary_port fun(self:lcurl_easy*):any Get INFO_PRIMARY_PORT
---@field getinfo_local_ip fun(self:lcurl_easy*):any Get INFO_LOCAL_IP
---@field getinfo_local_port fun(self:lcurl_easy*):any Get INFO_LOCAL_PORT
---@field getinfo_cookielist fun(self:lcurl_easy*):any Get INFO_COOKIELIST
---@field getinfo_lastsocket fun(self:lcurl_easy*):any Get INFO_LASTSOCKET
---@field getinfo_ftp_entry_path fun(self:lcurl_easy*):any Get INFO_FTP_ENTRY_PATH
---@field getinfo_condition_unmet fun(self:lcurl_easy*):any Get INFO_CONDITION_UNMET
---@field getinfo_rtsp_session_id fun(self:lcurl_easy*):any Get INFO_RTSP_SESSION_ID
---@field getinfo_rtsp_client_cseq fun(self:lcurl_easy*):any Get INFO_RTSP_CLIENT_CSEQ
---@field getinfo_rtsp_server_cseq fun(self:lcurl_easy*):any Get INFO_RTSP_SERVER_CSEQ
---@field getinfo_rtsp_cseq_recv fun(self:lcurl_easy*):any Get INFO_RTSP_CSEQ_RECV
---@field getinfo_http_version fun(self:lcurl_easy*):any Get INFO_HTTP_VERSION
---@field getinfo_proxy_ssl_verifyresult fun(self:lcurl_easy*):any Get INFO_PROXY_SSL_VERIFYRESULT
---@field getinfo_protocol fun(self:lcurl_easy*):any Get INFO_PROTOCOL
---@field getinfo_scheme fun(self:lcurl_easy*):any Get INFO_SCHEME
---@field getinfo_content_length_download_t fun(self:lcurl_easy*):any Get INFO_CONTENT_LENGTH_DOWNLOAD_T
---@field getinfo_content_length_upload_t fun(self:lcurl_easy*):any Get INFO_CONTENT_LENGTH_UPLOAD_T
---@field getinfo_size_download_t fun(self:lcurl_easy*):any Get INFO_SIZE_DOWNLOAD_T
---@field getinfo_size_upload_t fun(self:lcurl_easy*):any Get INFO_SIZE_UPLOAD_T
---@field getinfo_speed_download_t fun(self:lcurl_easy*):any Get INFO_SPEED_DOWNLOAD_T
---@field getinfo_speed_upload_t fun(self:lcurl_easy*):any Get INFO_SPEED_UPLOAD_T
---@field getinfo_filetime_t fun(self:lcurl_easy*):any Get INFO_FILETIME_T
---@field getinfo_appconnect_time_t fun(self:lcurl_easy*):any Get INFO_APPCONNECT_TIME_T
---@field getinfo_connect_time_t fun(self:lcurl_easy*):any Get INFO_CONNECT_TIME_T
---@field getinfo_namelookup_time_t fun(self:lcurl_easy*):any Get INFO_NAMELOOKUP_TIME_T
---@field getinfo_pretransfer_time_t fun(self:lcurl_easy*):any Get INFO_PRETRANSFER_TIME_T
---@field getinfo_redirect_time_t fun(self:lcurl_easy*):any Get INFO_REDIRECT_TIME_T
---@field getinfo_starttransfer_time_t fun(self:lcurl_easy*):any Get INFO_STARTTRANSFER_TIME_T
---@field getinfo_total_time_t fun(self:lcurl_easy*):any Get INFO_TOTAL_TIME_T
---@field getinfo_retry_after fun(self:lcurl_easy*):any Get INFO_RETRY_AFTER
---@field getinfo_effective_method fun(self:lcurl_easy*):any Get INFO_EFFECTIVE_METHOD
---@field getinfo_proxy_error fun(self:lcurl_easy*):any Get INFO_PROXY_ERROR
local lcurl_easy = {}

---@class lcurl_multi*
---@field data any User data
---@field setopt_pipelining fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_PIPELINING
---@field setopt_maxconnects fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_MAXCONNECTS
---@field setopt_max_host_connections fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_MAX_HOST_CONNECTIONS
---@field setopt_max_pipeline_length fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_MAX_PIPELINE_LENGTH
---@field setopt_content_length_penalty_size fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_CONTENT_LENGTH_PENALTY_SIZE
---@field setopt_chunk_length_penalty_size fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_CHUNK_LENGTH_PENALTY_SIZE
---@field setopt_pipelining_site_bl fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_PIPELINING_SITE_BL
---@field setopt_pipelining_server_bl fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_PIPELINING_SERVER_BL
---@field setopt_max_total_connections fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_MAX_TOTAL_CONNECTIONS
---@field setopt_max_concurrent_streams fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_MAX_CONCURRENT_STREAMS
---@field setopt_timerfunction fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_TIMERFUNCTION
---@field setopt_socketfunction fun(self:lcurl_multi*, value?:any, ...:any):lcurl_multi*?, lcurl_error*? Set OPT_MULTI_SOCKETFUNCTION
local lcurl_multi = {}

---@class lcurl_share*
---@field setopt_share fun(self:lcurl_share*, value?:any, ...:any):lcurl_share*?, lcurl_error*? Set OPT_SHARE_SHARE
---@field setopt_unshare fun(self:lcurl_share*, value?:any, ...:any):lcurl_share*?, lcurl_error*? Set OPT_SHARE_UNSHARE
local lcurl_share = {}

---@class lcurl_form*
local lcurl_form = {}

---@class lcurl_mime*
local lcurl_mime = {}

---@class lcurl_mime_part*
local lcurl_mime_part = {}

---@class lcurl_url*
---@field set_fragment fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_FRAGMENT
---@field set_host fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_HOST
---@field set_options fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_OPTIONS
---@field set_password fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_PASSWORD
---@field set_path fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_PATH
---@field set_port fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_PORT
---@field set_query fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_QUERY
---@field set_scheme fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_SCHEME
---@field set_url fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_URL
---@field set_user fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_USER
---@field set_zoneid fun(self:lcurl_url*, value:string|nil|false, flags?:lcurl_url_flag):lcurl_url*?, lcurl_error*? Set UPART_ZONEID
---@field get_fragment fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_FRAGMENT
---@field get_host fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_HOST
---@field get_options fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_OPTIONS
---@field get_password fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_PASSWORD
---@field get_path fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_PATH
---@field get_port fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_PORT
---@field get_query fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_QUERY
---@field get_scheme fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_SCHEME
---@field get_url fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_URL
---@field get_user fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_USER
---@field get_zoneid fun(self:lcurl_url*, flags?:lcurl_url_flag):string? Get UPART_ZONEID
local lcurl_url = {}

---@class lcurl*
---@field null any Sentinel value passed to layer C to represent NULL
---@field ERROR_EASY string easy Misclassification
---@field ERROR_MULTI string multi Misclassification
---@field ERROR_SHARE string share Misclassification
---@field ERROR_FORM string form Misclassification
---@field OPT_VERBOSE integer easy option constants
---@field OPT_HEADER integer easy option constants
---@field OPT_NOPROGRESS integer easy option constants
---@field OPT_NOSIGNAL integer easy option constants
---@field OPT_WILDCARDMATCH integer easy option constants
---@field OPT_URL integer easy option constants
---@field OPT_FAILONERROR integer easy option constants
---@field OPT_PROTOCOLS integer easy option constants
---@field OPT_REDIR_PROTOCOLS integer easy option constants
---@field OPT_PROXY integer easy option constants
---@field OPT_PROXYPORT integer easy option constants
---@field OPT_PROXYTYPE integer easy option constants
---@field OPT_NOPROXY integer easy option constants
---@field OPT_HTTPPROXYTUNNEL integer easy option constants
---@field OPT_SOCKS5_GSSAPI_SERVICE integer easy option constants
---@field OPT_SOCKS5_GSSAPI_NEC integer easy option constants
---@field OPT_INTERFACE integer easy option constants
---@field OPT_LOCALPORT integer easy option constants
---@field OPT_LOCALPORTRANGE integer easy option constants
---@field OPT_DNS_CACHE_TIMEOUT integer easy option constants
---@field OPT_DNS_USE_GLOBAL_CACHE integer easy option constants
---@field OPT_DNS_SERVERS integer easy option constants
---@field OPT_BUFFERSIZE integer easy option constants
---@field OPT_PORT integer easy option constants
---@field OPT_TCP_NODELAY integer easy option constants
---@field OPT_ADDRESS_SCOPE integer easy option constants
---@field OPT_TCP_KEEPALIVE integer easy option constants
---@field OPT_TCP_KEEPIDLE integer easy option constants
---@field OPT_TCP_KEEPINTVL integer easy option constants
---@field OPT_NETRC integer easy option constants
---@field OPT_NETRC_FILE integer easy option constants
---@field OPT_USERPWD integer easy option constants
---@field OPT_PROXYUSERPWD integer easy option constants
---@field OPT_USERNAME integer easy option constants
---@field OPT_PASSWORD integer easy option constants
---@field OPT_LOGIN_OPTIONS integer easy option constants
---@field OPT_PROXYUSERNAME integer easy option constants
---@field OPT_PROXYPASSWORD integer easy option constants
---@field OPT_HTTPAUTH integer easy option constants
---@field OPT_TLSAUTH_USERNAME integer easy option constants
---@field OPT_TLSAUTH_PASSWORD integer easy option constants
---@field OPT_TLSAUTH_TYPE integer easy option constants
---@field OPT_PROXYAUTH integer easy option constants
---@field OPT_SASL_IR integer easy option constants
---@field OPT_XOAUTH2_BEARER integer easy option constants
---@field OPT_AUTOREFERER integer easy option constants
---@field OPT_ACCEPT_ENCODING integer easy option constants
---@field OPT_TRANSFER_ENCODING integer easy option constants
---@field OPT_FOLLOWLOCATION integer easy option constants
---@field OPT_UNRESTRICTED_AUTH integer easy option constants
---@field OPT_MAXREDIRS integer easy option constants
---@field OPT_POSTREDIR integer easy option constants
---@field OPT_PUT integer easy option constants
---@field OPT_POST integer easy option constants
---@field OPT_REFERER integer easy option constants
---@field OPT_USERAGENT integer easy option constants
---@field OPT_HEADEROPT integer easy option constants
---@field OPT_HTTPHEADER integer easy option constants
---@field OPT_PROXYHEADER integer easy option constants
---@field OPT_HTTP200ALIASES integer easy option constants
---@field OPT_COOKIE integer easy option constants
---@field OPT_COOKIEFILE integer easy option constants
---@field OPT_COOKIEJAR integer easy option constants
---@field OPT_COOKIESESSION integer easy option constants
---@field OPT_COOKIELIST integer easy option constants
---@field OPT_HTTPGET integer easy option constants
---@field OPT_HTTP_VERSION integer easy option constants
---@field OPT_IGNORE_CONTENT_LENGTH integer easy option constants
---@field OPT_HTTP_CONTENT_DECODING integer easy option constants
---@field OPT_HTTP_TRANSFER_DECODING integer easy option constants
---@field OPT_EXPECT_100_TIMEOUT_MS integer easy option constants
---@field OPT_MAIL_FROM integer easy option constants
---@field OPT_MAIL_RCPT integer easy option constants
---@field OPT_MAIL_AUTH integer easy option constants
---@field OPT_TFTP_BLKSIZE integer easy option constants
---@field OPT_FTPPORT integer easy option constants
---@field OPT_QUOTE integer easy option constants
---@field OPT_POSTQUOTE integer easy option constants
---@field OPT_PREQUOTE integer easy option constants
---@field OPT_DIRLISTONLY integer easy option constants
---@field OPT_APPEND integer easy option constants
---@field OPT_FTP_USE_EPRT integer easy option constants
---@field OPT_FTP_USE_EPSV integer easy option constants
---@field OPT_FTP_USE_PRET integer easy option constants
---@field OPT_FTP_CREATE_MISSING_DIRS integer easy option constants
---@field OPT_FTP_RESPONSE_TIMEOUT integer easy option constants
---@field OPT_FTP_ALTERNATIVE_TO_USER integer easy option constants
---@field OPT_FTP_SKIP_PASV_IP integer easy option constants
---@field OPT_FTPSSLAUTH integer easy option constants
---@field OPT_FTP_SSL_CCC integer easy option constants
---@field OPT_FTP_ACCOUNT integer easy option constants
---@field OPT_FTP_FILEMETHOD integer easy option constants
---@field OPT_TRANSFERTEXT integer easy option constants
---@field OPT_PROXY_TRANSFER_MODE integer easy option constants
---@field OPT_CRLF integer easy option constants
---@field OPT_RANGE integer easy option constants
---@field OPT_RESUME_FROM integer easy option constants
---@field OPT_RESUME_FROM_LARGE integer easy option constants
---@field OPT_CUSTOMREQUEST integer easy option constants
---@field OPT_FILETIME integer easy option constants
---@field OPT_NOBODY integer easy option constants
---@field OPT_INFILESIZE integer easy option constants
---@field OPT_INFILESIZE_LARGE integer easy option constants
---@field OPT_UPLOAD integer easy option constants
---@field OPT_MAXFILESIZE integer easy option constants
---@field OPT_MAXFILESIZE_LARGE integer easy option constants
---@field OPT_TIMECONDITION integer easy option constants
---@field OPT_TIMEVALUE integer easy option constants
---@field OPT_TIMEOUT integer easy option constants
---@field OPT_TIMEOUT_MS integer easy option constants
---@field OPT_LOW_SPEED_LIMIT integer easy option constants
---@field OPT_LOW_SPEED_TIME integer easy option constants
---@field OPT_MAX_SEND_SPEED_LARGE integer easy option constants
---@field OPT_MAX_RECV_SPEED_LARGE integer easy option constants
---@field OPT_MAXCONNECTS integer easy option constants
---@field OPT_FRESH_CONNECT integer easy option constants
---@field OPT_FORBID_REUSE integer easy option constants
---@field OPT_CONNECTTIMEOUT integer easy option constants
---@field OPT_CONNECTTIMEOUT_MS integer easy option constants
---@field OPT_IPRESOLVE integer easy option constants
---@field OPT_CONNECT_ONLY integer easy option constants
---@field OPT_USE_SSL integer easy option constants
---@field OPT_RESOLVE integer easy option constants
---@field OPT_DNS_INTERFACE integer easy option constants
---@field OPT_DNS_LOCAL_IP4 integer easy option constants
---@field OPT_DNS_LOCAL_IP6 integer easy option constants
---@field OPT_ACCEPTTIMEOUT_MS integer easy option constants
---@field OPT_SSH_AUTH_TYPES integer easy option constants
---@field OPT_SSH_HOST_PUBLIC_KEY_MD5 integer easy option constants
---@field OPT_SSH_PUBLIC_KEYFILE integer easy option constants
---@field OPT_SSH_PRIVATE_KEYFILE integer easy option constants
---@field OPT_SSH_KNOWNHOSTS integer easy option constants
---@field OPT_NEW_FILE_PERMS integer easy option constants
---@field OPT_NEW_DIRECTORY_PERMS integer easy option constants
---@field OPT_TELNETOPTIONS integer easy option constants
---@field OPT_RANDOM_FILE integer easy option constants
---@field OPT_EGDSOCKET integer easy option constants
---@field OPT_ISSUERCERT integer easy option constants
---@field OPT_KRBLEVEL integer easy option constants
---@field OPT_CAINFO integer easy option constants
---@field OPT_CAPATH integer easy option constants
---@field OPT_CERTINFO integer easy option constants
---@field OPT_CRLFILE integer easy option constants
---@field OPT_SSLCERT integer easy option constants
---@field OPT_SSLCERTTYPE integer easy option constants
---@field OPT_SSLENGINE integer easy option constants
---@field OPT_SSLENGINE_DEFAULT integer easy option constants
---@field OPT_SSLKEY integer easy option constants
---@field OPT_SSLKEYTYPE integer easy option constants
---@field OPT_SSLVERSION integer easy option constants
---@field OPT_SSL_CIPHER_LIST integer easy option constants
---@field OPT_SSL_ENABLE_ALPN integer easy option constants
---@field OPT_SSL_ENABLE_NPN integer easy option constants
---@field OPT_SSL_OPTIONS integer easy option constants
---@field OPT_SSL_SESSIONID_CACHE integer easy option constants
---@field OPT_SSL_VERIFYHOST integer easy option constants
---@field OPT_SSL_VERIFYPEER integer easy option constants
---@field OPT_KEYPASSWD integer easy option constants
---@field OPT_RTSP_CLIENT_CSEQ integer easy option constants
---@field OPT_RTSP_REQUEST integer easy option constants
---@field OPT_RTSP_SERVER_CSEQ integer easy option constants
---@field OPT_RTSP_SESSION_ID integer easy option constants
---@field OPT_RTSP_STREAM_URI integer easy option constants
---@field OPT_RTSP_TRANSPORT integer easy option constants
---@field OPT_GSSAPI_DELEGATION integer easy option constants
---@field OPT_PINNEDPUBLICKEY integer easy option constants
---@field OPT_UNIX_SOCKET_PATH integer easy option constants
---@field OPT_SSL_VERIFYSTATUS integer easy option constants
---@field OPT_SSL_FALSESTART integer easy option constants
---@field OPT_PATH_AS_IS integer easy option constants
---@field OPT_PROXY_SERVICE_NAME integer easy option constants
---@field OPT_SERVICE_NAME integer easy option constants
---@field OPT_PIPEWAIT integer easy option constants
---@field OPT_DEFAULT_PROTOCOL integer easy option constants
---@field OPT_STREAM_WEIGHT integer easy option constants
---@field OPT_TFTP_NO_OPTIONS integer easy option constants
---@field OPT_TCP_FASTOPEN integer easy option constants
---@field OPT_CONNECT_TO integer easy option constants
---@field OPT_KEEP_SENDING_ON_ERROR integer easy option constants
---@field OPT_PROXY_CAINFO integer easy option constants
---@field OPT_PROXY_CAPATH integer easy option constants
---@field OPT_PROXY_SSL_VERIFYPEER integer easy option constants
---@field OPT_PROXY_SSL_VERIFYHOST integer easy option constants
---@field OPT_PROXY_SSLVERSION integer easy option constants
---@field OPT_PROXY_TLSAUTH_USERNAME integer easy option constants
---@field OPT_PROXY_TLSAUTH_PASSWORD integer easy option constants
---@field OPT_PROXY_TLSAUTH_TYPE integer easy option constants
---@field OPT_PROXY_SSLCERT integer easy option constants
---@field OPT_PROXY_SSLCERTTYPE integer easy option constants
---@field OPT_PROXY_SSLKEY integer easy option constants
---@field OPT_PROXY_SSLKEYTYPE integer easy option constants
---@field OPT_PROXY_KEYPASSWD integer easy option constants
---@field OPT_PROXY_SSL_CIPHER_LIST integer easy option constants
---@field OPT_PROXY_CRLFILE integer easy option constants
---@field OPT_PROXY_SSL_OPTIONS integer easy option constants
---@field OPT_PRE_PROXY integer easy option constants
---@field OPT_PROXY_PINNEDPUBLICKEY integer easy option constants
---@field OPT_ABSTRACT_UNIX_SOCKET integer easy option constants
---@field OPT_SUPPRESS_CONNECT_HEADERS integer easy option constants
---@field OPT_REQUEST_TARGET integer easy option constants
---@field OPT_SOCKS5_AUTH integer easy option constants
---@field OPT_SSH_COMPRESSION integer easy option constants
---@field OPT_HAPPY_EYEBALLS_TIMEOUT_MS integer easy option constants
---@field OPT_TIMEVALUE_LARGE integer easy option constants
---@field OPT_DNS_SHUFFLE_ADDRESSES integer easy option constants
---@field OPT_HAPROXYPROTOCOL integer easy option constants
---@field OPT_DISALLOW_USERNAME_IN_URL integer easy option constants
---@field OPT_PROXY_TLS13_CIPHERS integer easy option constants
---@field OPT_TLS13_CIPHERS integer easy option constants
---@field OPT_UPKEEP_INTERVAL_MS integer easy option constants
---@field OPT_DOH_URL integer easy option constants
---@field OPT_UPLOAD_BUFFERSIZE integer easy option constants
---@field OPT_HTTP09_ALLOWED integer easy option constants
---@field OPT_ALTSVC integer easy option constants
---@field OPT_ALTSVC_CTRL integer easy option constants
---@field OPT_MAXAGE_CONN integer easy option constants
---@field OPT_SASL_AUTHZID integer easy option constants
---@field OPT_MAIL_RCPT_ALLLOWFAILS integer easy option constants
---@field OPT_SSLCERT_BLOB integer easy option constants
---@field OPT_SSLKEY_BLOB integer easy option constants
---@field OPT_PROXY_SSLCERT_BLOB integer easy option constants
---@field OPT_PROXY_SSLKEY_BLOB integer easy option constants
---@field OPT_ISSUERCERT_BLOB integer easy option constants
---@field OPT_PROXY_ISSUERCERT integer easy option constants
---@field OPT_PROXY_ISSUERCERT_BLOB integer easy option constants
---@field OPT_SSL_EC_CURVES integer easy option constants
---@field OPT_HSTS_CTRL integer easy option constants
---@field OPT_HSTS integer easy option constants
---@field OPT_POSTFIELDS integer easy option constants
---@field OPT_HTTPPOST integer easy option constants
---@field OPT_SHARE integer easy option constants
---@field OPT_WRITEFUNCTION integer easy option constants
---@field OPT_READFUNCTION integer easy option constants
---@field OPT_HEADERFUNCTION integer easy option constants
---@field OPT_PROGRESSFUNCTION integer easy option constants
---@field OPT_SEEKFUNCTION integer easy option constants
---@field OPT_DEBUGFUNCTION integer easy option constants
---@field OPT_SSH_KEYFUNCTION integer easy option constants
---@field OPT_FNMATCH_FUNCTION integer easy option constants
---@field OPT_CHUNK_BGN_FUNCTION integer easy option constants
---@field OPT_CHUNK_END_FUNCTION integer easy option constants
---@field OPT_STREAM_DEPENDS integer easy option constants
---@field OPT_STREAM_DEPENDS_E integer easy option constants
---@field OPT_MIMEPOST integer easy option constants
---@field OPT_CURLU integer easy option constants
---@field OPT_TRAILERFUNCTION integer easy option constants
---@field OPT_HSTSREADFUNCTION integer easy option constants
---@field OPT_HSTSWRITEFUNCTION integer easy option constants
---@field INFO_EFFECTIVE_URL integer easy information constant
---@field INFO_RESPONSE_CODE integer easy information constant
---@field INFO_HTTP_CONNECTCODE integer easy information constant
---@field INFO_FILETIME integer easy information constant
---@field INFO_TOTAL_TIME integer easy information constant
---@field INFO_NAMELOOKUP_TIME integer easy information constant
---@field INFO_CONNECT_TIME integer easy information constant
---@field INFO_APPCONNECT_TIME integer easy information constant
---@field INFO_PRETRANSFER_TIME integer easy information constant
---@field INFO_STARTTRANSFER_TIME integer easy information constant
---@field INFO_REDIRECT_TIME integer easy information constant
---@field INFO_REDIRECT_COUNT integer easy information constant
---@field INFO_REDIRECT_URL integer easy information constant
---@field INFO_SIZE_UPLOAD integer easy information constant
---@field INFO_SIZE_DOWNLOAD integer easy information constant
---@field INFO_SPEED_DOWNLOAD integer easy information constant
---@field INFO_SPEED_UPLOAD integer easy information constant
---@field INFO_HEADER_SIZE integer easy information constant
---@field INFO_REQUEST_SIZE integer easy information constant
---@field INFO_SSL_VERIFYRESULT integer easy information constant
---@field INFO_SSL_ENGINES integer easy information constant
---@field INFO_CONTENT_LENGTH_DOWNLOAD integer easy information constant
---@field INFO_CONTENT_LENGTH_UPLOAD integer easy information constant
---@field INFO_CONTENT_TYPE integer easy information constant
---@field INFO_HTTPAUTH_AVAIL integer easy information constant
---@field INFO_PROXYAUTH_AVAIL integer easy information constant
---@field INFO_OS_ERRNO integer easy information constant
---@field INFO_NUM_CONNECTS integer easy information constant
---@field INFO_PRIMARY_IP integer easy information constant
---@field INFO_CERTINFO integer easy information constant
---@field INFO_PRIMARY_PORT integer easy information constant
---@field INFO_LOCAL_IP integer easy information constant
---@field INFO_LOCAL_PORT integer easy information constant
---@field INFO_COOKIELIST integer easy information constant
---@field INFO_LASTSOCKET integer easy information constant
---@field INFO_FTP_ENTRY_PATH integer easy information constant
---@field INFO_CONDITION_UNMET integer easy information constant
---@field INFO_RTSP_SESSION_ID integer easy information constant
---@field INFO_RTSP_CLIENT_CSEQ integer easy information constant
---@field INFO_RTSP_SERVER_CSEQ integer easy information constant
---@field INFO_RTSP_CSEQ_RECV integer easy information constant
---@field INFO_HTTP_VERSION integer easy information constant
---@field INFO_PROXY_SSL_VERIFYRESULT integer easy information constant
---@field INFO_PROTOCOL integer easy information constant
---@field INFO_SCHEME integer easy information constant
---@field INFO_CONTENT_LENGTH_DOWNLOAD_T integer easy information constant
---@field INFO_CONTENT_LENGTH_UPLOAD_T integer easy information constant
---@field INFO_SIZE_DOWNLOAD_T integer easy information constant
---@field INFO_SIZE_UPLOAD_T integer easy information constant
---@field INFO_SPEED_DOWNLOAD_T integer easy information constant
---@field INFO_SPEED_UPLOAD_T integer easy information constant
---@field INFO_FILETIME_T integer easy information constant
---@field INFO_APPCONNECT_TIME_T integer easy information constant
---@field INFO_CONNECT_TIME_T integer easy information constant
---@field INFO_NAMELOOKUP_TIME_T integer easy information constant
---@field INFO_PRETRANSFER_TIME_T integer easy information constant
---@field INFO_REDIRECT_TIME_T integer easy information constant
---@field INFO_STARTTRANSFER_TIME_T integer easy information constant
---@field INFO_TOTAL_TIME_T integer easy information constant
---@field INFO_RETRY_AFTER integer easy information constant
---@field INFO_EFFECTIVE_METHOD integer easy information constant
---@field INFO_PROXY_ERROR integer easy information constant
---@field INFO_TEXT integer debug or file type constants
---@field INFO_HEADER_IN integer debug or file type constants
---@field INFO_HEADER_OUT integer debug or file type constants
---@field INFO_DATA_IN integer debug or file type constants
---@field INFO_DATA_OUT integer debug or file type constants
---@field INFO_SSL_DATA_OUT integer debug or file type constants
---@field INFO_SSL_DATA_IN integer debug or file type constants
---@field FILETYPE_DEVICE_BLOCK integer debug or file type constants
---@field FILETYPE_DEVICE_CHAR integer debug or file type constants
---@field FILETYPE_DIRECTORY integer debug or file type constants
---@field FILETYPE_DOOR integer debug or file type constants
---@field FILETYPE_FILE integer debug or file type constants
---@field FILETYPE_NAMEDPIPE integer debug or file type constants
---@field FILETYPE_SOCKET integer debug or file type constants
---@field FILETYPE_SYMLINK integer debug or file type constants
---@field FILETYPE_UNKNOWN integer debug or file type constants
---@field OPT_MULTI_PIPELINING integer multi option constants
---@field OPT_MULTI_MAXCONNECTS integer multi option constants
---@field OPT_MULTI_MAX_HOST_CONNECTIONS integer multi option constants
---@field OPT_MULTI_MAX_PIPELINE_LENGTH integer multi option constants
---@field OPT_MULTI_CONTENT_LENGTH_PENALTY_SIZE integer multi option constants
---@field OPT_MULTI_CHUNK_LENGTH_PENALTY_SIZE integer multi option constants
---@field OPT_MULTI_PIPELINING_SITE_BL integer multi option constants
---@field OPT_MULTI_PIPELINING_SERVER_BL integer multi option constants
---@field OPT_MULTI_MAX_TOTAL_CONNECTIONS integer multi option constants
---@field OPT_MULTI_MAX_CONCURRENT_STREAMS integer multi option constants
---@field OPT_MULTI_TIMERFUNCTION integer multi option constants
---@field OPT_MULTI_SOCKETFUNCTION integer multi option constants
---@field OPT_SHARE_SHARE integer share option constants
---@field OPT_SHARE_UNSHARE integer share option constants
---@field UPART_FRAGMENT integer URL part constant
---@field UPART_HOST integer URL part constant
---@field UPART_OPTIONS integer URL part constant
---@field UPART_PASSWORD integer URL part constant
---@field UPART_PATH integer URL part constant
---@field UPART_PORT integer URL part constant
---@field UPART_QUERY integer URL part constant
---@field UPART_SCHEME integer URL part constant
---@field UPART_URL integer URL part constant
---@field UPART_USER integer URL part constant
---@field UPART_ZONEID integer URL part constant
---@field U_DEFAULT_PORT integer URL flag constant
---@field U_NO_DEFAULT_PORT integer URL flag constant
---@field U_DEFAULT_SCHEME integer URL flag constant
---@field U_NON_SUPPORT_SCHEME integer URL flag constant
---@field U_PATH_AS_IS integer URL flag constant
---@field U_DISALLOW_USER integer URL flag constant
---@field U_URLDECODE integer URL flag constant
---@field U_URLENCODE integer URL flag constant
---@field U_APPENDQUERY integer URL flag constant
---@field U_GUESS_SCHEME integer URL flag constant
---@field U_NO_AUTHORITY integer URL flag constant
---@field ALTSVC_H1 integer libcurl Mark constants
---@field ALTSVC_H2 integer libcurl Mark constants
---@field ALTSVC_H3 integer libcurl Mark constants
---@field ALTSVC_READONLYFILE integer libcurl Mark constants
---@field AUTH_ANY integer libcurl Mark constants
---@field AUTH_ANYSAFE integer libcurl Mark constants
---@field AUTH_BASIC integer libcurl Mark constants
---@field AUTH_BEARER integer libcurl Mark constants
---@field AUTH_DIGEST integer libcurl Mark constants
---@field AUTH_DIGEST_IE integer libcurl Mark constants
---@field AUTH_GSSAPI integer libcurl Mark constants
---@field AUTH_GSSNEGOTIATE integer libcurl Mark constants
---@field AUTH_NEGOTIATE integer libcurl Mark constants
---@field AUTH_NONE integer libcurl Mark constants
---@field AUTH_NTLM integer libcurl Mark constants
---@field AUTH_NTLM_WB integer libcurl Mark constants
---@field AUTH_ONLY integer libcurl Mark constants
---@field CSELECT_ERR integer libcurl Mark constants
---@field CSELECT_IN integer libcurl Mark constants
---@field CSELECT_OUT integer libcurl Mark constants
---@field FTPAUTH_DEFAULT integer libcurl Mark constants
---@field FTPAUTH_SSL integer libcurl Mark constants
---@field FTPAUTH_TLS integer libcurl Mark constants
---@field FTPMETHOD_DEFAULT integer libcurl Mark constants
---@field FTPMETHOD_MULTICWD integer libcurl Mark constants
---@field FTPMETHOD_NOCWD integer libcurl Mark constants
---@field FTPMETHOD_SINGLECWD integer libcurl Mark constants
---@field FTPSSL_CCC_ACTIVE integer libcurl Mark constants
---@field FTPSSL_CCC_NONE integer libcurl Mark constants
---@field FTPSSL_CCC_PASSIVE integer libcurl Mark constants
---@field FTP_CREATE_DIR integer libcurl Mark constants
---@field FTP_CREATE_DIR_LAST integer libcurl Mark constants
---@field FTP_CREATE_DIR_NONE integer libcurl Mark constants
---@field FTP_CREATE_DIR_RETRY integer libcurl Mark constants
---@field GSSAPI_DELEGATION_FLAG integer libcurl Mark constants
---@field GSSAPI_DELEGATION_NONE integer libcurl Mark constants
---@field GSSAPI_DELEGATION_POLICY_FLAG integer libcurl Mark constants
---@field HEADER_SEPARATE integer libcurl Mark constants
---@field HEADER_UNIFIED integer libcurl Mark constants
---@field HSTS_ENABLE integer libcurl Mark constants
---@field HSTS_READONLYFILE integer libcurl Mark constants
---@field HTTP_VERSION_1_0 integer libcurl Mark constants
---@field HTTP_VERSION_1_1 integer libcurl Mark constants
---@field HTTP_VERSION_2 integer libcurl Mark constants
---@field HTTP_VERSION_2TLS integer libcurl Mark constants
---@field HTTP_VERSION_2_0 integer libcurl Mark constants
---@field HTTP_VERSION_2_PRIOR_KNOWLEDGE integer libcurl Mark constants
---@field HTTP_VERSION_3 integer libcurl Mark constants
---@field HTTP_VERSION_NONE integer libcurl Mark constants
---@field IPRESOLVE_V4 integer libcurl Mark constants
---@field IPRESOLVE_V6 integer libcurl Mark constants
---@field IPRESOLVE_WHATEVER integer libcurl Mark constants
---@field KHMATCH_MISMATCH integer libcurl Mark constants
---@field KHMATCH_MISSING integer libcurl Mark constants
---@field KHMATCH_OK integer libcurl Mark constants
---@field KHSTAT_DEFER integer libcurl Mark constants
---@field KHSTAT_FINE integer libcurl Mark constants
---@field KHSTAT_FINE_ADD_TO_FILE integer libcurl Mark constants
---@field KHSTAT_FINE_REPLACE integer libcurl Mark constants
---@field KHSTAT_REJECT integer libcurl Mark constants
---@field KHTYPE_DSS integer libcurl Mark constants
---@field KHTYPE_ECDSA integer libcurl Mark constants
---@field KHTYPE_ED25519 integer libcurl Mark constants
---@field KHTYPE_RSA integer libcurl Mark constants
---@field KHTYPE_RSA1 integer libcurl Mark constants
---@field LOCK_DATA_CONNECT integer libcurl Mark constants
---@field LOCK_DATA_COOKIE integer libcurl Mark constants
---@field LOCK_DATA_DNS integer libcurl Mark constants
---@field LOCK_DATA_SSL_SESSION integer libcurl Mark constants
---@field OT_BLOB integer libcurl Mark constants
---@field OT_CBPTR integer libcurl Mark constants
---@field OT_FLAG_ALIAS integer libcurl Mark constants
---@field OT_FUNCTION integer libcurl Mark constants
---@field OT_LONG integer libcurl Mark constants
---@field OT_OBJECT integer libcurl Mark constants
---@field OT_OFF_T integer libcurl Mark constants
---@field OT_SLIST integer libcurl Mark constants
---@field OT_STRING integer libcurl Mark constants
---@field OT_VALUES integer libcurl Mark constants
---@field PAUSE_ALL integer libcurl Mark constants
---@field PAUSE_CONT integer libcurl Mark constants
---@field PAUSE_RECV integer libcurl Mark constants
---@field PAUSE_RECV_CONT integer libcurl Mark constants
---@field PAUSE_SEND integer libcurl Mark constants
---@field PAUSE_SEND_CONT integer libcurl Mark constants
---@field POLL_IN integer libcurl Mark constants
---@field POLL_INOUT integer libcurl Mark constants
---@field POLL_NONE integer libcurl Mark constants
---@field POLL_OUT integer libcurl Mark constants
---@field POLL_REMOVE integer libcurl Mark constants
---@field PROGRESSFUNC_CONTINUE integer libcurl Mark constants
---@field PROTO_ALL integer libcurl Mark constants
---@field PROTO_DICT integer libcurl Mark constants
---@field PROTO_FILE integer libcurl Mark constants
---@field PROTO_FTP integer libcurl Mark constants
---@field PROTO_FTPS integer libcurl Mark constants
---@field PROTO_GOPHER integer libcurl Mark constants
---@field PROTO_HTTP integer libcurl Mark constants
---@field PROTO_HTTPS integer libcurl Mark constants
---@field PROTO_IMAP integer libcurl Mark constants
---@field PROTO_IMAPS integer libcurl Mark constants
---@field PROTO_LDAP integer libcurl Mark constants
---@field PROTO_LDAPS integer libcurl Mark constants
---@field PROTO_MQTT integer libcurl Mark constants
---@field PROTO_POP3 integer libcurl Mark constants
---@field PROTO_POP3S integer libcurl Mark constants
---@field PROTO_RTMP integer libcurl Mark constants
---@field PROTO_RTMPE integer libcurl Mark constants
---@field PROTO_RTMPS integer libcurl Mark constants
---@field PROTO_RTMPT integer libcurl Mark constants
---@field PROTO_RTMPTE integer libcurl Mark constants
---@field PROTO_RTMPTS integer libcurl Mark constants
---@field PROTO_RTSP integer libcurl Mark constants
---@field PROTO_SCP integer libcurl Mark constants
---@field PROTO_SFTP integer libcurl Mark constants
---@field PROTO_SMB integer libcurl Mark constants
---@field PROTO_SMBS integer libcurl Mark constants
---@field PROTO_SMTP integer libcurl Mark constants
---@field PROTO_SMTPS integer libcurl Mark constants
---@field PROTO_TELNET integer libcurl Mark constants
---@field PROTO_TFTP integer libcurl Mark constants
---@field PROXY_HTTP integer libcurl Mark constants
---@field PROXY_HTTPS integer libcurl Mark constants
---@field PROXY_HTTP_1_0 integer libcurl Mark constants
---@field PROXY_SOCKS4 integer libcurl Mark constants
---@field PROXY_SOCKS4A integer libcurl Mark constants
---@field PROXY_SOCKS5 integer libcurl Mark constants
---@field PROXY_SOCKS5_HOSTNAME integer libcurl Mark constants
---@field PX_BAD_ADDRESS_TYPE integer libcurl Mark constants
---@field PX_BAD_VERSION integer libcurl Mark constants
---@field PX_CLOSED integer libcurl Mark constants
---@field PX_GSSAPI integer libcurl Mark constants
---@field PX_GSSAPI_PERMSG integer libcurl Mark constants
---@field PX_GSSAPI_PROTECTION integer libcurl Mark constants
---@field PX_IDENTD integer libcurl Mark constants
---@field PX_IDENTD_DIFFER integer libcurl Mark constants
---@field PX_LONG_HOSTNAME integer libcurl Mark constants
---@field PX_LONG_PASSWD integer libcurl Mark constants
---@field PX_LONG_USER integer libcurl Mark constants
---@field PX_NO_AUTH integer libcurl Mark constants
---@field PX_OK integer libcurl Mark constants
---@field PX_RECV_ADDRESS integer libcurl Mark constants
---@field PX_RECV_AUTH integer libcurl Mark constants
---@field PX_RECV_CONNECT integer libcurl Mark constants
---@field PX_RECV_REQACK integer libcurl Mark constants
---@field PX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED integer libcurl Mark constants
---@field PX_REPLY_COMMAND_NOT_SUPPORTED integer libcurl Mark constants
---@field PX_REPLY_CONNECTION_REFUSED integer libcurl Mark constants
---@field PX_REPLY_GENERAL_SERVER_FAILURE integer libcurl Mark constants
---@field PX_REPLY_HOST_UNREACHABLE integer libcurl Mark constants
---@field PX_REPLY_NETWORK_UNREACHABLE integer libcurl Mark constants
---@field PX_REPLY_NOT_ALLOWED integer libcurl Mark constants
---@field PX_REPLY_TTL_EXPIRED integer libcurl Mark constants
---@field PX_REPLY_UNASSIGNED integer libcurl Mark constants
---@field PX_REQUEST_FAILED integer libcurl Mark constants
---@field PX_RESOLVE_HOST integer libcurl Mark constants
---@field PX_SEND_AUTH integer libcurl Mark constants
---@field PX_SEND_CONNECT integer libcurl Mark constants
---@field PX_SEND_REQUEST integer libcurl Mark constants
---@field PX_UNKNOWN_FAIL integer libcurl Mark constants
---@field PX_UNKNOWN_MODE integer libcurl Mark constants
---@field PX_USER_REJECTED integer libcurl Mark constants
---@field READFUNC_PAUSE integer libcurl Mark constants
---@field RTSPREQ_ANNOUNCE integer libcurl Mark constants
---@field RTSPREQ_DESCRIBE integer libcurl Mark constants
---@field RTSPREQ_GET_PARAMETER integer libcurl Mark constants
---@field RTSPREQ_OPTIONS integer libcurl Mark constants
---@field RTSPREQ_PAUSE integer libcurl Mark constants
---@field RTSPREQ_PLAY integer libcurl Mark constants
---@field RTSPREQ_RECEIVE integer libcurl Mark constants
---@field RTSPREQ_RECORD integer libcurl Mark constants
---@field RTSPREQ_SETUP integer libcurl Mark constants
---@field RTSPREQ_SET_PARAMETER integer libcurl Mark constants
---@field RTSPREQ_TEARDOWN integer libcurl Mark constants
---@field SOCKET_TIMEOUT integer libcurl Mark constants
---@field SSH_AUTH_AGENT integer libcurl Mark constants
---@field SSH_AUTH_ANY integer libcurl Mark constants
---@field SSH_AUTH_DEFAULT integer libcurl Mark constants
---@field SSH_AUTH_GSSAPI integer libcurl Mark constants
---@field SSH_AUTH_HOST integer libcurl Mark constants
---@field SSH_AUTH_KEYBOARD integer libcurl Mark constants
---@field SSH_AUTH_NONE integer libcurl Mark constants
---@field SSH_AUTH_PASSWORD integer libcurl Mark constants
---@field SSH_AUTH_PUBLICKEY integer libcurl Mark constants
---@field SSLOPT_ALLOW_BEAST integer libcurl Mark constants
---@field SSLOPT_NATIVE_CA integer libcurl Mark constants
---@field SSLOPT_NO_PARTIALCHAIN integer libcurl Mark constants
---@field SSLOPT_NO_REVOKE integer libcurl Mark constants
---@field SSLOPT_REVOKE_BEST_EFFORT integer libcurl Mark constants
---@field SSLVERSION_DEFAULT integer libcurl Mark constants
---@field SSLVERSION_MAX_DEFAULT integer libcurl Mark constants
---@field SSLVERSION_MAX_NONE integer libcurl Mark constants
---@field STS_DONE integer libcurl Mark constants
---@field STS_FAIL integer libcurl Mark constants
---@field STS_OK integer libcurl Mark constants
---@field TLSAUTH_SRP integer libcurl Mark constants
---@field USESSL_ALL integer libcurl Mark constants
---@field USESSL_CONTROL integer libcurl Mark constants
---@field USESSL_NONE integer libcurl Mark constants
---@field USESSL_TRY integer libcurl Mark constants
---@field WRITEFUNC_PAUSE integer libcurl Mark constants
---@field E_ABORTED_BY_CALLBACK integer Error code constant
---@field E_AGAIN integer Error code constant
---@field E_AUTH_ERROR integer Error code constant
---@field E_BAD_CONTENT_ENCODING integer Error code constant
---@field E_BAD_DOWNLOAD_RESUME integer Error code constant
---@field E_BAD_FUNCTION_ARGUMENT integer Error code constant
---@field E_CHUNK_FAILED integer Error code constant
---@field E_CONV_FAILED integer Error code constant
---@field E_CONV_REQD integer Error code constant
---@field E_COULDNT_CONNECT integer Error code constant
---@field E_COULDNT_RESOLVE_HOST integer Error code constant
---@field E_COULDNT_RESOLVE_PROXY integer Error code constant
---@field E_FAILED_INIT integer Error code constant
---@field E_FILESIZE_EXCEEDED integer Error code constant
---@field E_FILE_COULDNT_READ_FILE integer Error code constant
---@field E_FORM_DISABLED integer Error code constant
---@field E_FORM_ILLEGAL_ARRAY integer Error code constant
---@field E_FORM_INCOMPLETE integer Error code constant
---@field E_FORM_MEMORY integer Error code constant
---@field E_FORM_NULL integer Error code constant
---@field E_FORM_OK integer Error code constant
---@field E_FORM_OPTION_TWICE integer Error code constant
---@field E_FORM_UNKNOWN_OPTION integer Error code constant
---@field E_FTP_ACCEPT_FAILED integer Error code constant
---@field E_FTP_ACCEPT_TIMEOUT integer Error code constant
---@field E_FTP_BAD_FILE_LIST integer Error code constant
---@field E_FTP_CANT_GET_HOST integer Error code constant
---@field E_FTP_COULDNT_RETR_FILE integer Error code constant
---@field E_FTP_COULDNT_SET_TYPE integer Error code constant
---@field E_FTP_COULDNT_USE_REST integer Error code constant
---@field E_FTP_PORT_FAILED integer Error code constant
---@field E_FTP_PRET_FAILED integer Error code constant
---@field E_FTP_WEIRD_227_FORMAT integer Error code constant
---@field E_FTP_WEIRD_PASS_REPLY integer Error code constant
---@field E_FTP_WEIRD_PASV_REPLY integer Error code constant
---@field E_FTP_WEIRD_SERVER_REPLY integer Error code constant
---@field E_FUNCTION_NOT_FOUND integer Error code constant
---@field E_GOT_NOTHING integer Error code constant
---@field E_HTTP2 integer Error code constant
---@field E_HTTP2_STREAM integer Error code constant
---@field E_HTTP3 integer Error code constant
---@field E_HTTP_POST_ERROR integer Error code constant
---@field E_HTTP_RETURNED_ERROR integer Error code constant
---@field E_INTERFACE_FAILED integer Error code constant
---@field E_LDAP_CANNOT_BIND integer Error code constant
---@field E_LDAP_INVALID_URL integer Error code constant
---@field E_LDAP_SEARCH_FAILED integer Error code constant
---@field E_LOGIN_DENIED integer Error code constant
---@field E_MULTI_ADDED_ALREADY integer Error code constant
---@field E_MULTI_BAD_EASY_HANDLE integer Error code constant
---@field E_MULTI_BAD_HANDLE integer Error code constant
---@field E_MULTI_BAD_SOCKET integer Error code constant
---@field E_MULTI_CALL_MULTI_PERFORM integer Error code constant
---@field E_MULTI_INTERNAL_ERROR integer Error code constant
---@field E_MULTI_OK integer Error code constant
---@field E_MULTI_OUT_OF_MEMORY integer Error code constant
---@field E_MULTI_RECURSIVE_API_CALL integer Error code constant
---@field E_MULTI_UNKNOWN_OPTION integer Error code constant
---@field E_NOT_BUILT_IN integer Error code constant
---@field E_NO_CONNECTION_AVAILABLE integer Error code constant
---@field E_OBSOLETE16 integer Error code constant
---@field E_OBSOLETE20 integer Error code constant
---@field E_OBSOLETE24 integer Error code constant
---@field E_OBSOLETE29 integer Error code constant
---@field E_OBSOLETE32 integer Error code constant
---@field E_OBSOLETE40 integer Error code constant
---@field E_OBSOLETE44 integer Error code constant
---@field E_OBSOLETE46 integer Error code constant
---@field E_OBSOLETE50 integer Error code constant
---@field E_OBSOLETE51 integer Error code constant
---@field E_OBSOLETE57 integer Error code constant
---@field E_OK integer Error code constant
---@field E_OPERATION_TIMEDOUT integer Error code constant
---@field E_OUT_OF_MEMORY integer Error code constant
---@field E_PARTIAL_FILE integer Error code constant
---@field E_PEER_FAILED_VERIFICATION integer Error code constant
---@field E_PROXY integer Error code constant
---@field E_QUIC_CONNECT_ERROR integer Error code constant
---@field E_QUOTE_ERROR integer Error code constant
---@field E_RANGE_ERROR integer Error code constant
---@field E_READ_ERROR integer Error code constant
---@field E_RECURSIVE_API_CALL integer Error code constant
---@field E_RECV_ERROR integer Error code constant
---@field E_REMOTE_ACCESS_DENIED integer Error code constant
---@field E_REMOTE_DISK_FULL integer Error code constant
---@field E_REMOTE_FILE_EXISTS integer Error code constant
---@field E_REMOTE_FILE_NOT_FOUND integer Error code constant
---@field E_RTSP_CSEQ_ERROR integer Error code constant
---@field E_RTSP_SESSION_ERROR integer Error code constant
---@field E_SEND_ERROR integer Error code constant
---@field E_SEND_FAIL_REWIND integer Error code constant
---@field E_SHARE_BAD_OPTION integer Error code constant
---@field E_SHARE_INVALID integer Error code constant
---@field E_SHARE_IN_USE integer Error code constant
---@field E_SHARE_NOMEM integer Error code constant
---@field E_SHARE_NOT_BUILT_IN integer Error code constant
---@field E_SHARE_OK integer Error code constant
---@field E_SSH integer Error code constant
---@field E_SSL_CACERT integer Error code constant
---@field E_SSL_CACERT_BADFILE integer Error code constant
---@field E_SSL_CERTPROBLEM integer Error code constant
---@field E_SSL_CIPHER integer Error code constant
---@field E_SSL_CONNECT_ERROR integer Error code constant
---@field E_SSL_CRL_BADFILE integer Error code constant
---@field E_SSL_ENGINE_INITFAILED integer Error code constant
---@field E_SSL_ENGINE_NOTFOUND integer Error code constant
---@field E_SSL_ENGINE_SETFAILED integer Error code constant
---@field E_SSL_INVALIDCERTSTATUS integer Error code constant
---@field E_SSL_ISSUER_ERROR integer Error code constant
---@field E_SSL_PINNEDPUBKEYNOTMATCH integer Error code constant
---@field E_SSL_SHUTDOWN_FAILED integer Error code constant
---@field E_TELNET_OPTION_SYNTAX integer Error code constant
---@field E_TFTP_ILLEGAL integer Error code constant
---@field E_TFTP_NOSUCHUSER integer Error code constant
---@field E_TFTP_NOTFOUND integer Error code constant
---@field E_TFTP_PERM integer Error code constant
---@field E_TFTP_UNKNOWNID integer Error code constant
---@field E_TOO_MANY_REDIRECTS integer Error code constant
---@field E_UNKNOWN_OPTION integer Error code constant
---@field E_UNKNOWN_TELNET_OPTION integer Error code constant
---@field E_UNSUPPORTED_PROTOCOL integer Error code constant
---@field E_UPLOAD_FAILED integer Error code constant
---@field E_URL_BAD_HANDLE integer Error code constant
---@field E_URL_BAD_PARTPOINTER integer Error code constant
---@field E_URL_BAD_PORT_NUMBER integer Error code constant
---@field E_URL_MALFORMAT integer Error code constant
---@field E_URL_MALFORMED_INPUT integer Error code constant
---@field E_URL_NO_FRAGMENT integer Error code constant
---@field E_URL_NO_HOST integer Error code constant
---@field E_URL_NO_OPTIONS integer Error code constant
---@field E_URL_NO_PASSWORD integer Error code constant
---@field E_URL_NO_PORT integer Error code constant
---@field E_URL_NO_QUERY integer Error code constant
---@field E_URL_NO_SCHEME integer Error code constant
---@field E_URL_NO_USER integer Error code constant
---@field E_URL_OK integer Error code constant
---@field E_URL_OUT_OF_MEMORY integer Error code constant
---@field E_URL_UNKNOWN_PART integer Error code constant
---@field E_URL_UNSUPPORTED_SCHEME integer Error code constant
---@field E_URL_URLDECODE integer Error code constant
---@field E_URL_USER_NOT_ALLOWED integer Error code constant
---@field E_USE_SSL_FAILED integer Error code constant
---@field E_WEIRD_SERVER_REPLY integer Error code constant
---@field E_WRITE_ERROR integer Error code constant
---@type lcurl*
local M = {}

--- Initialize libcurl.
---@param initMode? integer initialization mode
---@return boolean|nil ok Returns true or the module's own agreed value on success
---@return lcurl_error*? err error object
function M.init(initMode) end

--- Create an error object.
---@param category string|integer Error classification, available ERROR_* constant or classification name
---@param code integer error code
---@return lcurl_error* err error object
function M.error(category, code) end

--- Create an HTTP multipart/formdata object.
---@return lcurl_form*? form form object
---@return lcurl_error*? err error object
function M.form() end

--- Create easy handle.
---@return lcurl_easy*? easy easy handle
---@return lcurl_error*? err error object
function M.easy() end

--- Create multiple handles.
---@return lcurl_multi*? multi multi handle
---@return lcurl_error*? err error object
function M.multi() end

--- Create share handle.
---@param options? table<lcurl_share_option,any>|table<string,any> Initialization options
---@return lcurl_share*? share share handle
---@return lcurl_error*? err error object
function M.share(options) end

--- Create a URL object.
---@param url? string Initial URL
---@param flags? lcurl_url_flag URL flag
---@return lcurl_url*? url URL object
---@return lcurl_error*? err error object
function M.url(url, flags) end

--- Get the libcurl version string.
---@return string version version string
function M.version() end

--- Get libcurl version information.
---@param param? string Specify field name
---@return lcurl_version_info|any info Version information table or specified field value
function M.version_info(param) end

--- Iterates through the easy options currently supported by libcurl.
---@return fun(state:table):lcurl_easy_option_info? iterator Iterator
---@return table state Iteration status
function M.ieasy_options() end

--- Query easy option description by ID.
---@param id integer Option ID
---@return lcurl_easy_option_info? option Option description
function M.easy_option_by_id(id) end

--- Query easy option descriptions by name.
---@param name string option name
---@return lcurl_easy_option_info? option Option description
function M.easy_option_by_name(name) end

--- Get the internal registry for debugging.
---@return table registry internal registry
function M.__getregistry() end

--- Set the easy option.
---@param option lcurl_option|table<lcurl_option,any>|table<string,any> options or option list
---@param value? any value
---@param ... any extra parameters
---@return lcurl_easy*? self current object
---@return lcurl_error*? err error object
function lcurl_easy:setopt(option, value, ...) end

--- Reset the easy option.
---@param option lcurl_option Options
---@return lcurl_easy*? self current object
---@return lcurl_error*? err error object
function lcurl_easy:unsetopt(option) end

--- Read easy information.
---@param info lcurl_info information item
---@return any value information value
function lcurl_easy:getinfo(info) end

--- Execute easy request.
---@return lcurl_easy*? self current object
---@return lcurl_error*? err error object
function lcurl_easy:perform() end

--- Create a MIME form object.
---@return lcurl_mime*? mime MIME object
---@return lcurl_error*? err error object
function lcurl_easy:mime() end

--- Pause or resume transmission.
---@param mask integer PAUSE_* mask
---@return lcurl_easy*? self current object
---@return lcurl_error*? err error object
function lcurl_easy:pause(mask) end

--- Option to reset easy handle.
---@return lcurl_easy* self current object
function lcurl_easy:reset() end

--- Keep the connection active.
---@return lcurl_easy*? self current object
---@return lcurl_error*? err error object
function lcurl_easy:upkeep() end

--- URL encoded string.
---@param value string raw string
---@return string encoded encoded string
function lcurl_easy:escape(value) end

--- URL decoded string.
---@param value string encoded string
---@return string decoded decoded string
function lcurl_easy:unescape(value) end

--- Close easy handle.
function lcurl_easy:close() end

--- Bind user data.
---@param data any User data
---@return lcurl_easy* self current object
function lcurl_easy:setdata(data) end

--- Read user data.
---@return any data User data
function lcurl_easy:getdata() end

--- Add easy handle.
---@param easy lcurl_easy* easy handle
---@return lcurl_multi*? self current object
---@return lcurl_error*? err error object
function lcurl_multi:add_handle(easy) end

--- Remove easy handle.
---@param easy lcurl_easy* easy handle
---@return lcurl_multi*? self current object
---@return lcurl_error*? err error object
function lcurl_multi:remove_handle(easy) end

--- Perform multi transfer.
---@return integer? runningHandles Number of handles still running
---@return lcurl_error*? err error object
function lcurl_multi:perform() end

--- Read multi completion information.
---@param remove? boolean Whether to remove completed handles at the same time
---@return lcurl_easy*|integer|nil easyOrQueue easy object, number of remaining queues, or nil
---@return boolean|lcurl_error*? okOrErr Success mark or error object
---@return lcurl_error*? err error object
function lcurl_multi:info_read(remove) end

--- Set the multi option.
---@param option lcurl_multi_option|table<lcurl_multi_option,any>|table<string,any> options or option list
---@param value? any value
---@param ... any extra parameters
---@return lcurl_multi*? self current object
---@return lcurl_error*? err error object
function lcurl_multi:setopt(option, value, ...) end

--- Wait for network events from multiple handles.
---@param timeout? integer Timeout in milliseconds
---@return integer? maxfd max fd or wait for result
---@return lcurl_error*? err error object
function lcurl_multi:wait(timeout) end

--- Gets the recommended number of milliseconds to wait before the next multi operation.
---@return integer? timeout Timeout in milliseconds
---@return lcurl_error*? err error object
function lcurl_multi:timeout() end

--- Execute socket action.
---@param socket? integer socket， Default SOCKET_TIMEOUT
---@param mask? integer event mask
---@return integer? runningHandles Number of handles still running
---@return lcurl_error*? err error object
function lcurl_multi:socket_action(socket, mask) end

--- Close multi handle.
function lcurl_multi:close() end

--- Bind user data.
---@param data any User data
---@return lcurl_multi* self current object
function lcurl_multi:setdata(data) end

--- Read user data.
---@return any data User data
function lcurl_multi:getdata() end

--- Set share options.
---@param option lcurl_share_option|table<lcurl_share_option,any>|table<string,any> options or option list
---@param value? any value
---@param ... any extra parameters
---@return lcurl_share*? self current object
---@return lcurl_error*? err error object
function lcurl_share:setopt(option, value, ...) end

--- Close the share handle.
function lcurl_share:close() end

--- Add normal content part.
---@param name string Field name
---@param content string content
---@param typeOrHeaders? string|lcurl_headers MIME Type or headers
---@param headers? lcurl_headers additional header
---@return lcurl_form*? self current object
---@return lcurl_error*? err error object
function lcurl_form:add_content(name, content, typeOrHeaders, headers) end

--- Add memory buffer file part.
---@param name string Field name
---@param filename string file name
---@param content string content
---@param type? string MIME Type
---@param headers? lcurl_headers additional header
---@return lcurl_form*? self current object
---@return lcurl_error*? err error object
function lcurl_form:add_buffer(name, filename, content, type, headers) end

--- Add local file part.
---@param name string Field name
---@param path string file path
---@param type? string MIME Type
---@param filenameOrHeaders? string|lcurl_headers Filename or headers
---@param headers? lcurl_headers additional header
---@return lcurl_form*? self current object
---@return lcurl_error*? err error object
function lcurl_form:add_file(name, path, type, filenameOrHeaders, headers) end

--- Add streaming part.
---@param name string Field name
---@param ... any filename/type/headers/size/reader/context combination
---@return lcurl_form*? self current object
---@return lcurl_error*? err error object
function lcurl_form:add_stream(name, ...) end

--- Add multiple files under one field.
---@param name string Field name
---@param files table file array
---@return lcurl_form*? self current object
---@return lcurl_error*? err error object
function lcurl_form:add_files(name, files) end

--- Serialize multipart/formdata.
---@param writer? function|table|userdata Write function or object
---@param context? any write context
---@return string|lcurl_form*? dataOrSelf Returns a string if writer is not passed, otherwise returns itself
---@return lcurl_error*? err error object
function lcurl_form:get(writer, context) end

--- Release form.
function lcurl_form:free() end

--- Add MIME part.
---@param part? table part Description
---@return lcurl_mime_part*? part MIME part
---@return lcurl_error*? err error object
function lcurl_mime:addpart(part) end

--- Returns the easy handle that created this MIME object.
---@return lcurl_easy* easy easy handle
function lcurl_mime:easy() end

--- Release the MIME object.
function lcurl_mime:free() end

--- Set part data.
---@param data string|false Data, false means clear
---@param type? string|false MIME Type
---@param name? string|false Field name
---@param filenameOrHeaders? string|false|lcurl_headers Filename or headers
---@param headers? lcurl_headers additional header
---@return lcurl_mime_part*? self current object
---@return lcurl_error*? err error object
function lcurl_mime_part:data(data, type, name, filenameOrHeaders, headers) end

--- Set part to a local file.
---@param path string file path
---@param type? string|false MIME Type
---@param name? string|false Field name
---@param filenameOrHeaders? string|false|lcurl_headers Filename or headers
---@param headers? lcurl_headers additional header
---@return lcurl_mime_part*? self current object
---@return lcurl_error*? err error object
function lcurl_mime_part:filedata(path, type, name, filenameOrHeaders, headers) end

--- Set nested MIME.
---@param mime lcurl_mime* Child MIME object
---@param type? string|false MIME Type
---@param name? string|false Field name
---@param filenameOrHeaders? string|false|lcurl_headers Filename or headers
---@param headers? lcurl_headers additional header
---@return lcurl_mime_part*? self current object
---@return lcurl_error*? err error object
function lcurl_mime_part:subparts(mime, type, name, filenameOrHeaders, headers) end

--- Set part headers.
---@param headers lcurl_headers|false headers，false Indicates clearing
---@return lcurl_mime_part*? self current object
---@return lcurl_error*? err error object
function lcurl_mime_part:headers(headers) end

--- Set part MIME type.
---@param type string|false MIME Type, false means clear
---@return lcurl_mime_part*? self current object
---@return lcurl_error*? err error object
function lcurl_mime_part:type(type) end

--- Set the part field name.
---@param name string|false Field name, false means clear
---@return lcurl_mime_part*? self current object
---@return lcurl_error*? err error object
function lcurl_mime_part:name(name) end

--- Set the part file name.
---@param filename string|false File name, false means clear
---@return lcurl_mime_part*? self current object
---@return lcurl_error*? err error object
function lcurl_mime_part:filename(filename) end

--- Set part transfer encoding.
---@param encoder string|false Encoding name, false means clear
---@return lcurl_mime_part*? self current object
---@return lcurl_error*? err error object
function lcurl_mime_part:encoder(encoder) end

--- Release the MIME part.
function lcurl_mime_part:free() end

--- Copy the URL object.
---@return lcurl_url*? url URL object
---@return lcurl_error*? err error object
function lcurl_url:dup() end

--- Release the URL object.
function lcurl_url:cleanup() end

return M
