#pragma once

#include <QString>
#include <QWidget>

// ---------------------------------------------------------------------------
// IPlugin – Interface that every BareCode module / plugin must implement.
// This allows components to be swapped or extended without touching the core.
// ---------------------------------------------------------------------------
class IPlugin
{
public:
    virtual ~IPlugin() = default;

    // Human-readable name of the plugin
    virtual QString pluginName() const = 0;

    // Version string, e.g. "1.0.0"
    virtual QString pluginVersion() const = 0;

    // Called once after all plugins are loaded so plugins can cross-reference
    virtual void initialize() {}

    // Called before the application shuts down
    virtual void shutdown() {}
};
