
---@class mqtt_connection*
---@field uri? string 原始 URI。
---@field host string 主机名。
---@field port integer 端口。
---@field sock any 底层 socket。
---@field timeout? number 超时时间。
---@field secure? boolean 是否 TLS。
---@field secure_params? table TLS 参数。
---@field ssl_module? string TLS 模块名。

---@class mqtt_connector*
---@type mqtt_connector*
local M = {}

--- 打开网络连接。
---@param conn mqtt_connection* 连接参数和状态。
---@return boolean ok 是否成功。
---@return string? errMsg 错误信息。
function M.connect(conn) end

--- 关闭网络连接。
---@param conn mqtt_connection* 连接状态。
function M.shutdown(conn) end

--- 发送数据。
---@param conn mqtt_connection* 连接状态。
---@param data string 数据。
---@param i? integer 起始位置。
---@param j? integer 结束位置。
---@return integer|nil nextIndex 下一次发送位置。
---@return string? errMsg 错误信息。
function M.send(conn, data, i, j) end

--- 接收指定长度的数据。
---@param conn mqtt_connection* 连接状态。
---@param size integer 字节数。
---@return string|nil data 数据。
---@return string? errMsg 错误信息。
function M.receive(conn, size) end

--- 设置超时时间。
---@param conn mqtt_connection* 连接状态。
---@param timeout? number 超时时间。
function M.settimeout(conn, timeout) end

return M
