#pragma once

#include <QObject>
#include <QtPlugin>

// Abstract interface that MineXpert3 will use to communicate with your plugin
class MineXpertPluginInterface
{
  public:
  virtual ~MineXpertPluginInterface() = default;

  virtual QString pluginName() const    = 0;
  virtual QString pluginVersion() const = 0;
  virtual bool
  initialize(void *appContext) = 0; // Adjust signature to match MineXpert3
  virtual void shutdown()      = 0;

  // Add MineXpert3-specific methods here (e.g., data processing, UI hooks,
  // etc.)
};

// IID must be unique and match what MineXpert3 expects
#define MINEXPERT_PLUGIN_IID "org.msxpertsuite.minexpert.plugins.BasePlugin/1.0"
Q_DECLARE_INTERFACE(MineXpertPluginInterface, MINEXPERT_PLUGIN_IID)
