#pragma once #include "models/Block.h" #include "models/Transaction.h" #include "models/Account.h" #include #include #include struct SearchResults { QVector blocks; QVector transactions; QVector accounts; }; class IndexerService : public QObject { Q_OBJECT public: explicit IndexerService(QObject* parent = nullptr) : QObject(parent) {} ~IndexerService() override = default; static QString defaultEndpoint() { return "ws://localhost:8779"; } virtual QString endpoint() const = 0; virtual void setEndpoint(const QString& endpoint) = 0; virtual std::optional getAccount(const QString& accountId) = 0; virtual std::optional getBlockById(quint64 blockId) = 0; virtual std::optional getBlockByHash(const QString& hash) = 0; virtual std::optional getTransaction(const QString& hash) = 0; virtual QVector getBlocks(std::optional before, int limit) = 0; virtual quint64 getLastFinalizedBlockId() = 0; virtual QVector getTransactionsByAccount(const QString& accountId, int offset, int limit) = 0; virtual SearchResults search(const QString& query) = 0; signals: void newBlockAdded(Block block); };