-- Copyright 2023 The Yock Authors. All rights reserved.
-- Use of this source code is governed by a MIT-style
-- license that can be found in the LICENSE file.

---@meta _

---@class ioutil
---@field Discard any
ioutil = {}

--- TempDir creates a new temporary directory in the directory dir.
--- The directory name is generated by taking pattern and applying a
--- random string to the end. If pattern includes a "*", the random string
--- replaces the last "*". TempDir returns the name of the new directory.
--- If dir is the empty string, TempDir uses the
--- default directory for temporary files (see os.TempDir).
--- Multiple programs calling TempDir simultaneously
--- will not choose the same directory. It is the caller's responsibility
--- to remove the directory when no longer needed.
---
--- Deprecated: As of Go 1.17, this function simply calls os.MkdirTemp.
---@param dir string
---@param pattern string
---@return string, err
function ioutil.TempDir(dir, pattern) end

--- ReadFile reads the file named by filename and returns the contents.
--- A successful call returns err == nil, not err == EOF. Because ReadFile
--- reads the whole file, it does not treat an EOF from Read as an error
--- to be reported.
---
--- Deprecated: As of Go 1.16, this function simply calls os.ReadFile.
---@param filename string
---@return byte[], err
function ioutil.ReadFile(filename) end

--- WriteFile writes data to a file named by filename.
--- If the file does not exist, WriteFile creates it with permissions perm
--- (before umask); otherwise WriteFile truncates it before writing, without changing permissions.
---
--- Deprecated: As of Go 1.16, this function simply calls os.WriteFile.
---@param filename string
---@param data byte[]
---@param perm fsFileMode
---@return err
function ioutil.WriteFile(filename, data, perm) end

--- ReadDir reads the directory named by dirname and returns
--- a list of fs.FileInfo for the directory's contents,
--- sorted by filename. If an error occurs reading the directory,
--- ReadDir returns no directory entries along with the error.
---
--- Deprecated: As of Go 1.16, os.ReadDir is a more efficient and correct choice:
--- it returns a list of fs.DirEntry instead of fs.FileInfo,
--- and it returns partial results in the case of an error
--- midway through reading a directory.
---
--- If you must continue obtaining a list of fs.FileInfo, you still can:
---
---	entries, err := os.ReadDir(dirname)
---	if err != nil { ... }
---	infos := make([]fs.FileInfo, 0, len(entries))
---	for _, entry := range entries {
---		info, err := entry.Info()
---		if err != nil { ... }
---		infos = append(infos, info)
---	}
---@param dirname string
---@return any, err
function ioutil.ReadDir(dirname) end

--- NopCloser returns a ReadCloser with a no-op Close method wrapping
--- the provided Reader r.
---
--- Deprecated: As of Go 1.16, this function simply calls io.NopCloser.
---@param r ioReader
---@return any
function ioutil.NopCloser(r) end

--- ReadAll reads from r until an error or EOF and returns the data it read.
--- A successful call returns err == nil, not err == EOF. Because ReadAll is
--- defined to read from src until EOF, it does not treat an EOF from Read
--- as an error to be reported.
---
--- Deprecated: As of Go 1.16, this function simply calls io.ReadAll.
---@param r ioReader
---@return byte[], err
function ioutil.ReadAll(r) end

--- TempFile creates a new temporary file in the directory dir,
--- opens the file for reading and writing, and returns the resulting *os.File.
--- The filename is generated by taking pattern and adding a random
--- string to the end. If pattern includes a "*", the random string
--- replaces the last "*".
--- If dir is the empty string, TempFile uses the default directory
--- for temporary files (see os.TempDir).
--- Multiple programs calling TempFile simultaneously
--- will not choose the same file. The caller can use f.Name()
--- to find the pathname of the file. It is the caller's responsibility
--- to remove the file when no longer needed.
---
--- Deprecated: As of Go 1.17, this function simply calls os.CreateTemp.
---@param dir string
---@param pattern string
---@return osFile, err
function ioutil.TempFile(dir, pattern) end
