#ifndef IMAPSYNCHRONIZER_H
#define IMAPSYNCHRONIZER_H

#include <QObject>
#include <QString>
// Asegúrate de incluir las definiciones necesarias de MailItem, etc. desde el proyecto.
// Por ahora, solo incluimos QObject para mantener la estructura mínima.

class ImapSynchronizer : public QObject {
    Q_OBJECT
public:
    explicit ImapSynchronizer(QObject *parent = nullptr);

    // Implementación de la interfaz del proveedor (debería heredar o implementar los métodos definidos en SynchronizerProvider)
    bool connectToImap(const QString& host, const QString& user, const QString& password);
    QVector<MailItem> fetchMailItems(const QString &folderId, int offset);
    bool sendMail(const MailItem &mail, const QString &accountId);
    void fetchMails(const QString &accountId, const QString &folderId);
    void moveMail(const QString &mailItemId, const QString &targetFolderId);
    void deleteMail(const QString &mailItemId);
    void markAsRead(const QString &mailItemId, bool read);

private:
    // Estado de conexión y credenciales (simplificado para el stub)
    bool m_isConnected = false; 

signals:
    void connectionStatusChanged(bool success);

public slots:
    void processMailSync(); // Slot para iniciar la lógica de sincronización en segundo plano.
};

#endif // IMAPSYNCHRONIZER_H