#ifndef NSTD_IO_IO_H
#define NSTD_IO_IO_H
#include "../core/result.h"
#include "../core/str.h"
#include "../nstd.h"
#include "../string.h"
#include "../vec.h"
typedef enum {
NSTD_IO_ERROR_NONE,
NSTD_IO_ERROR_UNKNOWN,
NSTD_IO_ERROR_NOT_FOUND,
NSTD_IO_ERROR_PERMISSION_DENIED,
NSTD_IO_ERROR_CONNECTION_REFUSED,
NSTD_IO_ERROR_CONNECTION_RESET,
NSTD_IO_ERROR_CONNECTION_TERMINATED,
NSTD_IO_ERROR_NO_CONNECTION,
NSTD_IO_ERROR_SOCKET_IN_USE,
NSTD_IO_ERROR_ADDRESS_NOT_FOUND,
NSTD_IO_ERROR_BROKEN_PIPE,
NSTD_IO_ERROR_ALREADY_EXISTS,
NSTD_IO_ERROR_BLOCKING,
NSTD_IO_ERROR_INVALID_INPUT,
NSTD_IO_ERROR_INVALID_DATA,
NSTD_IO_ERROR_TIMED_OUT,
NSTD_IO_ERROR_WRITE_ZERO,
NSTD_IO_ERROR_INTERRUPTED,
NSTD_IO_ERROR_UNSUPPORTED,
NSTD_IO_ERROR_UNEXPECTED_EOF,
NSTD_IO_ERROR_OUT_OF_MEMORY
} NSTDIOError;
NSTDResult(NSTDUInt, NSTDIOError) NSTDIOResult;
NSTDResult(NSTDVec, NSTDIOError) NSTDIOBufferResult;
NSTDResult(NSTDString, NSTDIOError) NSTDIOStringResult;
NSTDAPI NSTDIOError nstd_io_print(const NSTDStr *output);
NSTDAPI NSTDIOError nstd_io_print_line(const NSTDStr *output);
NSTDAPI NSTDIOStringResult nstd_io_read(void);
NSTDAPI NSTDIOStringResult nstd_io_read_line(void);
#endif