---@meta iconv

--------------------------------------------------------------------------------
-- luaiconv C 模块
--------------------------------------------------------------------------------

---@alias iconv_error integer

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

--- 转换字符串编码。
---@param input string 输入文本
---@return string output 已转换文本；出错时为已转换前缀
---@return iconv_error? errCode 错误码
function iconv_converter:iconv(input) end

---@class iconv*
---@field ERROR_NO_MEMORY integer 内存不足
---@field ERROR_INVALID integer 非法字节序列
---@field ERROR_INCOMPLETE integer 不完整字节序列
---@field ERROR_FINALIZED integer 转换器已释放
---@field ERROR_UNKNOWN integer 未知错误
---@field VERSION string 版本
---@type iconv*
local M = {}

--- 创建编码转换器。
---@param tocode string 目标编码
---@param fromcode string 源编码
---@return iconv_converter*? converter 转换器；失败时为 nil
function M.open(tocode, fromcode) end

--- 创建编码转换器。
---@param tocode string 目标编码
---@param fromcode string 源编码
---@return iconv_converter*? converter 转换器；失败时为 nil
function M.new(tocode, fromcode) end

--- 使用转换器转换字符串。
---@param converter iconv_converter* 转换器
---@param input string 输入文本
---@return string output 已转换文本；出错时为已转换前缀
---@return iconv_error? errCode 错误码
function M.iconv(converter, input) end

--- 列出当前 iconv 支持的编码名称。
---@return string[] names 编码名列表
function M.list() end

return M
