
---@class path*
---@field _NAME string module name
---@field _VERSION string module version
---@field _COPYRIGHT string Copyright information
---@field _LICENSE string license
---@field DIR_SEP string Current platform path separator
---@field IS_WINDOWS boolean Whether the current platform is Windows
---@type path*
local M = {}

M._NAME = nil
M._VERSION = nil
M._COPYRIGHT = nil
M._LICENSE = nil
M.DIR_SEP = nil
M.IS_WINDOWS = nil
M.abspath = nil
M.adate = nil
M.cdate = nil
M.getatime = nil
M.getctime = nil
M.getmtime = nil
M.getsize = nil
M.isabs = nil
M.mdate = nil
M.normalize = nil
M.normalize_sep = nil
M.normpath = nil
M.split = nil

--- path.atime
---@param P? any
---@return any ...
function M:atime(P) end

--- path.attrib
---@param P? any
---@param ... any
---@return any ...
function M:attrib(...) end

--- path.basename
---@param P? any
---@return any ...
function M:basename(P) end

--- path.chdir
---@param P? any
---@return any ...
function M:chdir(P) end

--- path.copy
---@param from? any
---@param to? any
---@param opt? any
---@return any ...
function M:copy(from, to, opt) end

--- path.ctime
---@param P? any
---@return any ...
function M:ctime(P) end

--- path.currentdir
---@return any ...
function M:currentdir() end

--- path.dirname
---@param P? any
---@return any ...
function M:dirname(P) end

--- path.each
---@param ... any
---@return any ...
function M:each(...) end

--- path.ensure_dir_end
---@param P? any
---@return any ...
function M:ensure_dir_end(P) end

--- path.exists
---@param P? any
---@return any ...
function M:exists(P) end

--- path.extension
---@param P? any
---@return any ...
function M:extension(P) end

--- path.flags
---@param P? any
---@param ... any
---@return any ...
function M:flags(...) end

--- path.fullpath
---@param P? any
---@return any ...
function M:fullpath(P) end

--- path.has_dir_end
---@param P? any
---@return any ...
function M:has_dir_end(P) end

--- path.isdir
---@param P? any
---@return any ...
function M:isdir(P) end

--- path.isempty
---@param P? any
---@return any ...
function M:isempty(P) end

--- path.isfile
---@param P? any
---@return any ...
function M:isfile(P) end

--- path.isfullpath
---@param P? any
---@return any ...
function M:isfullpath(P) end

--- path.islink
---@param P? any
---@return any ...
function M:islink(P) end

--- path.isunc
---@param P? any
---@return any ...
function M:isunc(P) end

--- path.join
---@param ... any
---@return any ...
function M:join(...) end

--- path.join_
---@param P1? any
---@param P2? any
---@return any ...
function M:join_(P1, P2) end

--- path.mkdir
---@param P? any
---@return any ...
function M:mkdir(P) end

--- path.mtime
---@param P? any
---@return any ...
function M:mtime(P) end

--- path.new
---@param DIR_SEP? any
---@return any ...
function M.new(DIR_SEP) end

--- path.normolize
---@param P? any
---@return any ...
function M:normolize(P) end

--- path.normolize_sep
---@param P? any
---@return any ...
function M:normolize_sep(P) end

--- path.quote
---@param P? any
---@return any ...
function M:quote(P) end

--- path.remove
---@param P? any
---@param opt? any
---@return any ...
function M:remove(P, opt) end

--- path.remove_dir_end
---@param P? any
---@return any ...
function M:remove_dir_end(P) end

--- path.rename
---@param from? any
---@param to? any
---@param force? any
---@return any ...
function M:rename(from, to, force) end

--- path.rmdir
---@param P? any
---@return any ...
function M:rmdir(P) end

--- path.root
---@param P? any
---@return any ...
function M:root(P) end

--- path.size
---@param P? any
---@return any ...
function M:size(P) end

--- path.splitdrive
---@param P? any
---@return any ...
function M:splitdrive(P) end

--- path.splitext
---@param P? any
---@return any ...
function M:splitext(P) end

--- path.splitpath
---@param P? any
---@return any ...
function M:splitpath(P) end

--- path.splitroot
---@param P? any
---@return any ...
function M:splitroot(P) end

--- path.tmpdir
---@return any ...
function M:tmpdir() end

--- path.tmpname
---@return any ...
function M:tmpname() end

--- path.touch
---@param P? any
---@param ... any
---@return any ...
function M:touch(...) end

--- path.unquote
---@param P? any
---@return any ...
function M:unquote(P) end

--- path.user_home
---@return any ...
function M:user_home() end

return M
