#pragma once #include #include #include #include #include #include "WalletProvider.h" struct WalletDecodedAccount { QString id; QString status; QString typeName; QJsonValue value; QHash accountIds; }; struct WalletDecodeResult { QString status; QString error; QVector accounts; bool ok() const { return status == QStringLiteral("ok"); } }; class WalletIdlDecoder final { public: static WalletDecodeResult decode(const QByteArray& idlJson, const QVector& accounts); }; struct WalletDecodedProgram { QString programId; QString programName; WalletDecodeResult result; }; class WalletIdlRegistry final { public: void registerProgram(const QString& programId, const QString& programName, const QByteArray& idlJson); QVector decode( const QVector& accounts) const; private: struct Program { QString name; QByteArray idl; }; QHash m_programs; };