
---@class copas_queue_options*
---@field name? string 队列名。
---@field workers? integer worker 数量。
---@field handler? function worker handler。

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

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

--- 创建队列。
---@param opts? copas_queue_options* 选项。
---@return copas_queue_object* queue 队列对象。
function M.new(opts) end

--- 推入任务。
---@param item any 任务。
---@return boolean|nil ok 是否成功。
---@return string? errMsg 错误信息。
function copas_queue_object:push(item) end

--- 弹出任务。
---@param timeout? number 超时秒数。
---@return any item 任务。
---@return string? errMsg 错误信息。
function copas_queue_object:pop(timeout) end

--- 获取队列长度。
---@return integer size 长度。
function copas_queue_object:get_size() end

--- 停止队列。
---@return boolean ok 是否成功。
function copas_queue_object:stop() end

--- 等待队列结束。
---@param timeout? number 超时秒数。
---@param no_destroy_on_timeout? boolean 超时后是否不销毁。
---@return boolean|nil ok 是否成功。
---@return string? errMsg 错误信息。
function copas_queue_object:finish(timeout, no_destroy_on_timeout) end

--- 添加 worker。
---@param worker function worker 函数。
---@return thread co worker coroutine。
function copas_queue_object:add_worker(worker) end

--- 获取 worker 列表。
---@return thread[] workers worker 列表。
function copas_queue_object:get_workers() end

--- 销毁队列。
function copas_queue_object:destroy() end

return M
