process.lua

 ---@meta Process

 local process = {}

 ---@async
 ---Runs a command in a terminal, has to be called from a coroutine!
 ---@param cmd string The command to run.
 ---@return number exitCode The exit code of the command.
 function process.runInTerminal(cmd) end

 ---@async
 ---Runs a command and returns the output!
 ---@param cmd string The command to run.
 ---@return string output The output of the command.
 function process.commandOutput(cmd) end

 ---@class Process
 process.Process = {}

 ---@class ProcessParameters
 ---@field command FilePath The command to run.
 ---@field arguments? string[] The arguments to pass to the command.
 ---@field workingDirectory? FilePath The working directory for the command.
 ---@field stdin? string The input to write to stdin.
 ---@field stdout? function The callback to call when the process writes to stdout.
 ---@field stderr? function The callback to call when the process writes to stderr.
 ---@field onFinished? function () The callback to call when the process finishes.
 process.ProcessParameters = {}

 ---Creates a new process object.
 ---@param parameters ProcessParameters
 ---@return Process
 function process.create(parameters) end

 ---Start the process.
 ---@async
 ---@return boolean isRunning Whether the process was started successfully.
 function process.Process:start() end

 ---Stop the process.
 ---@async
 ---@return boolean didStop Whether the process was stopped successfully.
 ---@return number exitCode The exit code of the process.
 ---@return string error The error message if the process could not be stopped.
 function process.Process:stop() end

 ---Returns whether the process is running.
 ---@return boolean isRunning Whether the process is running.
 function process.Process:isRunning() end

 ---
 return process