#pragma once
#include <string>
#include <vector>
#include <cstdint>

namespace System::IO {
    enum class DriveType : unsigned int {
        Unknown = 0,
        NoRootDir = 1,
        Removable = 2,
        Fixed = 3,
        Remote = 4,
        CDROM = 5,
        RAM = 6
    };

    class DriveInfo {
    public:
        explicit DriveInfo(const std::wstring& path);

        std::wstring Name;
        DriveType DriveType;
        std::wstring DriveFormat;
        uint64_t TotalSize;
        uint64_t AvailableFreeSpace;
        bool IsReady;

        static std::vector<DriveInfo> GetDrives();

    private:
        std::wstring rootPath;
    };
}