#pragma once

#include <filesystem>
#include <string>
#include <vector>

namespace nebula::extensions {

struct ContentScript {
    std::vector<std::string> matches;
    std::vector<std::string> js_files;
    std::vector<std::string> css_files;
    std::vector<std::string> js_sources;
    std::vector<std::string> css_sources;
    std::string run_at = "document_end";
};

struct Extension {
    std::string id;
    std::string name;
    std::string version;
    std::string description;
    std::filesystem::path directory;
    bool enabled = true;
    bool load_error = false;
    std::string load_error_message;
    std::vector<ContentScript> content_scripts;
};

}  // namespace nebula::extensions
