#pragma once #include "models/Block.h" #include "models/Transaction.h" #include "models/Account.h" #include #include struct SearchResults { QVector blocks; QVector transactions; QVector accounts; }; class IndexerService { public: virtual ~IndexerService() = default; 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 getLatestBlockId() = 0; virtual QVector getTransactionsByAccount(const QString& accountId, int offset, int limit) = 0; virtual SearchResults search(const QString& query) = 0; };