// D:\Dev\Mosis\MosisService\src\main\kernel\include\file_interface.h
#pragma once

#include <RmlUi/Core/FileInterface.h>
#include <string>
#include <vector>
#include <cstdint>

namespace mosis {

// Extends RmlUi's FileInterface with additional utility methods
class IFileInterface : public Rml::FileInterface {
public:
    virtual ~IFileInterface() = default;

    // Additional utility methods
    virtual std::vector<uint8_t> ReadAll(const std::string& path) = 0;

    // Asset path management
    virtual void SetAssetsPath(const std::string& path) = 0;
    virtual std::string GetAssetsPath() const = 0;

    // RmlUi FileInterface methods (must implement in derived classes)
    // Rml::FileHandle Open(const Rml::String& path) override;
    // void Close(Rml::FileHandle file) override;
    // size_t Read(void* buffer, size_t size, Rml::FileHandle file) override;
    // bool Seek(Rml::FileHandle file, long offset, int origin) override;
    // size_t Tell(Rml::FileHandle file) override;
    // size_t Length(Rml::FileHandle file) override;
    // bool LoadFile(const Rml::String& path, Rml::String& out_data) override;
};

} // namespace mosis
