---@meta lcurl.safe

--------------------------------------------------------------------------------
-- Lua-cURL safe C 绑定模块
--------------------------------------------------------------------------------

---@class lcurl_safe*: lcurl
---@type lcurl_safe*
local M = {}

--- 初始化 libcurl，safe 模式下错误以返回值形式给出。
---@param initMode? integer 初始化模式
---@return boolean|nil ok 成功时返回 true 或模块自身约定值
---@return lcurl_error*? err 错误对象
function M.init(initMode) end

--- 创建错误对象。
---@param category string|integer 错误分类，可用 ERROR_* 常量或分类名
---@param code integer 错误码
---@return lcurl_error* err 错误对象
function M.error(category, code) end

--- 创建 HTTP multipart/formdata 对象。
---@return lcurl_form*? form form 对象
---@return lcurl_error*? err 错误对象
function M.form() end

--- 创建 easy handle。
---@return lcurl_easy*? easy easy handle
---@return lcurl_error*? err 错误对象
function M.easy() end

--- 创建 multi handle。
---@return lcurl_multi*? multi multi handle
---@return lcurl_error*? err 错误对象
function M.multi() end

--- 创建 share handle。
---@param options? table<lcurl_share_option,any>|table<string,any> 初始化选项
---@return lcurl_share*? share share handle
---@return lcurl_error*? err 错误对象
function M.share(options) end

--- 创建 URL 对象。
---@param url? string 初始 URL
---@param flags? lcurl_url_flag URL flag
---@return lcurl_url*? url URL 对象
---@return lcurl_error*? err 错误对象
function M.url(url, flags) end

--- 获取 libcurl 版本字符串。
---@return string version 版本字符串
function M.version() end

--- 获取 libcurl 版本信息。
---@param param? string 指定字段名
---@return lcurl_version_info|any info 版本信息表或指定字段值
function M.version_info(param) end

--- 遍历当前 libcurl 支持的 easy 选项。
---@return fun(state:table):lcurl_easy_option_info? iterator 迭代器
---@return table state 迭代状态
function M.ieasy_options() end

--- 按 ID 查询 easy 选项描述。
---@param id integer 选项 ID
---@return lcurl_easy_option_info? option 选项描述
function M.easy_option_by_id(id) end

--- 按名称查询 easy 选项描述。
---@param name string 选项名称
---@return lcurl_easy_option_info? option 选项描述
function M.easy_option_by_name(name) end

return M
