mirror of
https://github.com/logos-blockchain/lez-programs.git
synced 2026-08-26 06:31:19 +00:00
feat(wallet): add reusable wallet modules
Add program-neutral wallet access, a stable account model, reusable QML controls, transaction confirmation, submitted-transaction presentation, and isolated contract tests.
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
#pragma once
|
||||
|
||||
#include <QHash>
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QVariant>
|
||||
#include <QVariantList>
|
||||
|
||||
class LogosAPI;
|
||||
|
||||
class FakeExecutionZone {
|
||||
public:
|
||||
int openResult = 0;
|
||||
int saveResult = 0;
|
||||
int syncResult = 0;
|
||||
int lastSyncedBlock = 0;
|
||||
int currentBlockHeight = 0;
|
||||
QString sequencerAddress;
|
||||
QString mnemonic = QStringLiteral("one two three");
|
||||
QString publicAccountId;
|
||||
QString privateAccountId;
|
||||
QString transactionResponse;
|
||||
QVariantList accounts;
|
||||
QHash<QString, QString> publicAccounts;
|
||||
QHash<QString, QString> balances;
|
||||
|
||||
int openCalls = 0;
|
||||
int saveCalls = 0;
|
||||
int syncCalls = 0;
|
||||
int listCalls = 0;
|
||||
int publicReadCalls = 0;
|
||||
int submitCalls = 0;
|
||||
QString openedConfig;
|
||||
QString openedStorage;
|
||||
QString createdConfig;
|
||||
QString createdStorage;
|
||||
QString createdPassword;
|
||||
QStringList submittedAccountIds;
|
||||
QVariantList submittedSigningRequirements;
|
||||
QVariant submittedInstruction;
|
||||
QString submittedProgramId;
|
||||
|
||||
int open(const QString& config, const QString& storage)
|
||||
{
|
||||
++openCalls;
|
||||
openedConfig = config;
|
||||
openedStorage = storage;
|
||||
return openResult;
|
||||
}
|
||||
|
||||
QString create_new(const QString& config,
|
||||
const QString& storage,
|
||||
const QString& password)
|
||||
{
|
||||
createdConfig = config;
|
||||
createdStorage = storage;
|
||||
createdPassword = password;
|
||||
return mnemonic;
|
||||
}
|
||||
|
||||
int save()
|
||||
{
|
||||
++saveCalls;
|
||||
return saveResult;
|
||||
}
|
||||
|
||||
QString create_account_public() { return publicAccountId; }
|
||||
QString create_account_private() { return privateAccountId; }
|
||||
|
||||
int get_last_synced_block() const { return lastSyncedBlock; }
|
||||
int get_current_block_height() const { return currentBlockHeight; }
|
||||
|
||||
int sync_to_block(quint64)
|
||||
{
|
||||
++syncCalls;
|
||||
return syncResult;
|
||||
}
|
||||
|
||||
QString get_sequencer_addr() const { return sequencerAddress; }
|
||||
|
||||
QVariantList list_accounts()
|
||||
{
|
||||
++listCalls;
|
||||
return accounts;
|
||||
}
|
||||
|
||||
QString get_account_public(const QString& accountId)
|
||||
{
|
||||
++publicReadCalls;
|
||||
return publicAccounts.value(accountId);
|
||||
}
|
||||
|
||||
QString get_balance(const QString& accountId, bool) const
|
||||
{
|
||||
return balances.value(accountId);
|
||||
}
|
||||
|
||||
QString send_generic_public_transaction(
|
||||
const QStringList& accountIds,
|
||||
const QVariantList& signingRequirements,
|
||||
const QVariant& instruction,
|
||||
const QString& programId)
|
||||
{
|
||||
++submitCalls;
|
||||
submittedAccountIds = accountIds;
|
||||
submittedSigningRequirements = signingRequirements;
|
||||
submittedInstruction = instruction;
|
||||
submittedProgramId = programId;
|
||||
return transactionResponse;
|
||||
}
|
||||
};
|
||||
|
||||
struct LogosModules {
|
||||
LogosModules() = default;
|
||||
explicit LogosModules(LogosAPI*) { }
|
||||
|
||||
FakeExecutionZone logos_execution_zone;
|
||||
};
|
||||
Reference in New Issue
Block a user