---@meta socket.serial

--------------------------------------------------------------------------------
-- LuaSocket serial C 模块
--------------------------------------------------------------------------------

---@type socket_core*
local socket_core = require("socket.core")

---@class socket_serial_client*: socket_core_tcp*
local socket_serial_client = {}

--- 创建 serial socket。
---@return socket_serial_client*? client serial socket
---@return string? errMsg 错误信息
local function serial() end

--- 发送数据。
---@param data string 数据
---@param from? integer 起始位置
---@param to? integer 结束位置
---@return integer? sent 已发送字节数
---@return string? errMsg 错误信息
---@return integer? lastIndex 最后发送位置
function socket_serial_client:send(data, from, to) end

--- 接收数据。
---@param pattern? '*l'|'*a'|integer 接收模式
---@param prefix? string 前缀
---@return string? data 数据
---@return string? errMsg 错误信息
---@return string? partial 部分数据
function socket_serial_client:receive(pattern, prefix) end

--- 设置超时。
---@param timeout socket_core_timeout 超时秒数
---@param mode? 'b'|'r'|'s' 模式
---@return integer? ok 成功时返回 1
---@return string? errMsg 错误信息
function socket_serial_client:settimeout(timeout, mode) end

--- 关闭 socket。
---@return integer? ok 成功时返回 1
---@return string? errMsg 错误信息
function socket_serial_client:close() end

--- 获取底层 fd。
---@return integer fd 文件描述符
function socket_serial_client:getfd() end

--- 替换底层 fd。
---@param fd integer 文件描述符
---@return integer? ok 成功时返回 1
---@return string? errMsg 错误信息
function socket_serial_client:setfd(fd) end

--- 查询缓冲区是否有未读数据。
---@return boolean dirty 是否有未读数据
function socket_serial_client:dirty() end

--- 获取传输统计。
---@return integer received 已接收字节数
---@return integer sent 已发送字节数
---@return number age 创建后秒数
function socket_serial_client:getstats() end

--- 设置传输统计。
---@param received? integer 已接收字节数
---@param sent? integer 已发送字节数
---@param age? number 创建后秒数
---@return integer? ok 成功时返回 1
function socket_serial_client:setstats(received, sent, age) end

return serial
