
---@class mqtt_protocol5*
---@field properties table<string|integer, string|integer> MQTT v5 属性名和属性 ID 映射。
---@field suback_rc table<integer, string> SUBACK 原因码说明。
---@field unsuback_rc table<integer, string> UNSUBACK 原因码说明。
---@field disconnect_rc table<integer, string> DISCONNECT 原因码说明。
---@field suback_packet_mt table SUBACK 包 metatable。
---@field unsuback_packet_mt table UNSUBACK 包 metatable。
---@field disconnect_packet_mt table DISCONNECT 包 metatable。
---@type mqtt_protocol5*
local M = {}

M.properties = nil
M.suback_rc = nil
M.unsuback_rc = nil
M.disconnect_rc = nil
M.suback_packet_mt = nil
M.unsuback_packet_mt = nil
M.disconnect_packet_mt = nil

--- 按 MQTT v5.0 创建控制包。
---@param args mqtt_packet* 包参数。
---@return mqtt_combined_packet* packet 可发送的包。
function M.make_packet(args) end

--- 按 MQTT v5.0 解析控制包。
---@param read_func mqtt_read_func 读取函数。
---@return mqtt_packet*|false packet
---@return string? errMsg
function M.parse_packet(read_func) end

return M
