---@meta lyaml

--------------------------------------------------------------------------------
-- LYAML 模块
--------------------------------------------------------------------------------

---@alias lyaml_scalar_parser fun(value:string):any

---@type lyaml_explicit*
local explicit = require("lyaml.explicit")

---@type lyaml_functional*
local functional = require("lyaml.functional")

---@type lyaml_implicit*
local implicit = require("lyaml.implicit")

---@type yaml*
local yaml_core = require("yaml")

---@class lyaml_dump_options*
---@field anchors? table<string,any> 初始锚点表，键为锚点名，值为需要绑定的 Lua 对象
---@field implicit_scalar? lyaml_scalar_parser 用于判断字符串是否需要显式引用的隐式标量解析器

---@class lyaml_load_options*
---@field all? boolean 是否返回所有文档
---@field explicit_scalar? table<string,lyaml_scalar_parser> 显式 tag 到解析函数的映射
---@field implicit_scalar? lyaml_scalar_parser 隐式标量解析器

---@class lyaml*
---@field null lyaml_null* YAML null 哨兵值
---@field _VERSION string yaml C 绑定版本信息
---@type lyaml*
local M = {}

M.null = functional.NULL
M._VERSION = yaml_core.version

--- 将文档列表转储为 YAML 流。
---@param documents any[] 文档列表
---@param opts? lyaml_dump_options* 选项
---@return string yaml YAML 文本
function M.dump(documents, opts) end

--- 将 YAML 流加载为 Lua 值。
---@param s string YAML 文本
---@param opts? lyaml_load_options*|boolean 选项；传 true 等同于 `{ all = true }`
---@return any value Lua 值；opts.all 为 true 时返回文档列表
function M.load(s, opts) end

return M
