
--------------------------------------------------------------------------------
-- YOLO 跟踪器模块
--------------------------------------------------------------------------------

---@class yolo_tracker_options*
---@field iou_threshold? number 关联 IoU 阈值
---@field max_age? integer 最大保留帧数
---@field min_hits? integer 最小命中次数

---@class yolo_tracker_detection*
---@field box number[] 检测框
---@field score? number 置信度
---@field class_id? integer 类别 ID
---@field points? table[] 点列表
---@field keypoints? table[] 关键点列表
---@field track_id? integer 跟踪 ID
---@field track_hits? integer 命中次数
---@field track_age? integer 跟踪年龄

---@class yolo_tracker*
---@field closed boolean 是否已关闭
---@field config yolo_tracker_options* 跟踪配置
---@field tracks onnxruntime_track[] 跟踪状态
---@field next_id integer 下一个跟踪 ID
local yolo_tracker = {}

--- 更新跟踪器
---@param detections yolo_tracker_detection*[] 检测结果
---@param timestamp? integer 时间戳
---@return yolo_tracker_detection*[] detections 带跟踪字段的检测结果
function yolo_tracker:update(detections, timestamp) end

--- 重置跟踪器
---@return boolean ok 是否成功
function yolo_tracker:reset() end

--- 获取跟踪状态
---@return onnxruntime_track[] tracks 跟踪状态
function yolo_tracker:state() end

--- 关闭跟踪器
---@return boolean ok 是否成功
function yolo_tracker:close() end

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

--- 创建跟踪器
---@param config? yolo_tracker_options* 跟踪配置
---@return yolo_tracker*|onnxruntime_tracker*|coreml_tracker* tracker 跟踪器
function M.tracker(config) end

return M
