summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCzarek Nakamoto <cyjan@mrcyjanek.net>2026-05-13 12:03:03 -0400
committerCzarek Nakamoto <cyjan@mrcyjanek.net>2026-05-13 12:03:03 -0400
commitb51693c76f60fac497a26b0761fa6d3125c91420 (patch)
tree269ef49559492429815a0746996f31fa0d280da0
parent64005d120bc20ffcbe60e4717169d2b93fdba21d (diff)
wip
-rw-r--r--impls/monero.dart/lib/src/wallet2.dart248
1 files changed, 206 insertions, 42 deletions
diff --git a/impls/monero.dart/lib/src/wallet2.dart b/impls/monero.dart/lib/src/wallet2.dart
index 655862d..309621d 100644
--- a/impls/monero.dart/lib/src/wallet2.dart
+++ b/impls/monero.dart/lib/src/wallet2.dart
@@ -2,9 +2,10 @@
import 'dart:ffi';
import 'dart:io';
+
abstract class Wallet2 {
Wallet2WalletManagerFactory walletManagerFactory();
-
+
static String get libPath {
if (Platform.isWindows) return 'unknown_libwallet2_api_c.dll';
if (Platform.isMacOS) return 'unknown_libwallet2_api_c.dylib';
@@ -12,10 +13,12 @@ abstract class Wallet2 {
if (Platform.isAndroid) return 'libunknown_libwallet2_api_c.so';
return 'unknown_libwallet2_api_c.so';
}
+
static set libPath(String path) {
- throw Exception('libPath is read-only, as isolates cannot be made aware of changes to this variable');
+ throw Exception(
+ 'libPath is read-only, as isolates cannot be made aware of changes to this variable');
}
-
+
int ffiAddress();
}
@@ -24,9 +27,16 @@ abstract class Wallet2AddressBook {
int getAll_size();
Wallet2AddressBookRow getAll_byIndex(int index);
- bool addRow({required String dstAddr, required String paymentId, required String description, });
+ bool addRow({
+ required String dstAddr,
+ required String paymentId,
+ required String description,
+ });
bool deleteRow({required int rowId});
- bool setDescription({required int rowId, required String description, });
+ bool setDescription({
+ required int rowId,
+ required String description,
+ });
void refresh();
int errorCode();
int lookupPaymentID({required String paymentId});
@@ -149,7 +159,10 @@ abstract class Wallet2Subaddress {
int getAll_size();
Wallet2SubaddressRow getAll_byIndex(int index);
void addRow({required int accountIndex, required String label});
- void setLabel({required int accountIndex, required int addressIndex, required String label});
+ void setLabel(
+ {required int accountIndex,
+ required int addressIndex,
+ required String label});
void refresh({required int accountIndex, required String label});
}
@@ -232,7 +245,6 @@ abstract class Wallet2UnsignedTransaction {
int txCount();
bool sign(String signedFileName);
String signUR(int max_fragment_length);
- String commitTrezor(int tx_index);
}
abstract class Wallet2Wallet {
@@ -249,7 +261,10 @@ abstract class Wallet2Wallet {
String address({int accountIndex = 0, int addressIndex = 0});
String path();
int nettype();
- int useForkRules({required int version, required int earlyBlocks, });
+ int useForkRules({
+ required int version,
+ required int earlyBlocks,
+ });
String integratedAddress({required String paymentId});
String secretViewKey();
String publicViewKey();
@@ -260,8 +275,20 @@ abstract class Wallet2Wallet {
bool store({String path = ""});
String filename();
String keysFilename();
- bool init({ required String daemonAddress, int upperTransacationSizeLimit = 0, String daemonUsername = "", String daemonPassword = "", bool useSsl = false, bool lightWallet = false, String proxyAddress = "", });
- bool createWatchOnly({ required String path, required String password, required String language, });
+ bool init({
+ required String daemonAddress,
+ int upperTransacationSizeLimit = 0,
+ String daemonUsername = "",
+ String daemonPassword = "",
+ bool useSsl = false,
+ bool lightWallet = false,
+ String proxyAddress = "",
+ });
+ bool createWatchOnly({
+ required String path,
+ required String password,
+ required String language,
+ });
void setRefreshFromBlockHeight({required int refresh_from_block_height});
int getRefreshFromBlockHeight();
void setRecoveringFromSeed({required bool recoveringFromSeed});
@@ -287,13 +314,28 @@ abstract class Wallet2Wallet {
String genPaymentId();
bool paymentIdValid(String paymentId);
bool addressValid(String address, int networkType);
- bool keyValid({required String secret_key_string, required String address_string, required bool isViewKey, required int nettype});
- String keyValid_error({required String secret_key_string, required String address_string, required bool isViewKey, required int nettype});
+ bool keyValid(
+ {required String secret_key_string,
+ required String address_string,
+ required bool isViewKey,
+ required int nettype});
+ String keyValid_error(
+ {required String secret_key_string,
+ required String address_string,
+ required bool isViewKey,
+ required int nettype});
String paymentIdFromAddress({required String strarg, required int nettype});
int maximumAllowedAmount();
- void init3({ required String argv0, required String defaultLogBaseName, required String logPath, required bool console, });
+ void init3({
+ required String argv0,
+ required String defaultLogBaseName,
+ required String logPath,
+ required bool console,
+ });
String getPolyseed({required String passphrase});
- String createPolyseed({ String language = "English", });
+ String createPolyseed({
+ String language = "English",
+ });
void startRefresh();
void pauseRefresh();
bool refresh();
@@ -306,32 +348,76 @@ abstract class Wallet2Wallet {
void addSubaddressAccount({String label = ""});
int numSubaddressAccounts();
int numSubaddresses({required int accountIndex});
- String getSubaddressLabel({required int accountIndex, required int addressIndex});
- void setSubaddressLabel({required int accountIndex, required int addressIndex, required String label});
+ String getSubaddressLabel(
+ {required int accountIndex, required int addressIndex});
+ void setSubaddressLabel(
+ {required int accountIndex,
+ required int addressIndex,
+ required String label});
Wallet2MultisigState multisig();
String getMultisigInfo();
- String makeMultisig({ required List<String> info, required int threshold, });
- String exchangeMultisigKeys({ required List<String> info, required bool force_update_use_with_caution, });
- List<String> exportMultisigImages({ required List<String> info, });
- int importMultisigImages({ required List<String> info, });
+ String makeMultisig({
+ required List<String> info,
+ required int threshold,
+ });
+ String exchangeMultisigKeys({
+ required List<String> info,
+ required bool force_update_use_with_caution,
+ });
+ List<String> exportMultisigImages({
+ required List<String> info,
+ });
+ int importMultisigImages({
+ required List<String> info,
+ });
int hasMultisigPartialKeyImages();
- Wallet2PendingTransaction restoreMultisigTransaction({ required String signData, });
- Wallet2PendingTransaction createTransactionMultDest({ required List<String> dstAddr, String paymentId = "", required bool isSweepAll, required List<int> amounts, required int mixinCount, required int pendingTransactionPriority, required int subaddr_account, List<String> preferredInputs = const [], });
- Wallet2PendingTransaction createTransaction({required String dst_addr, required String payment_id, required int amount, required int mixin_count, required int pendingTransactionPriority, required int subaddr_account, List<String> preferredInputs = const [],});
- Wallet2UnsignedTransaction loadUnsignedTx({required String unsigned_filename});
+ Wallet2PendingTransaction restoreMultisigTransaction({
+ required String signData,
+ });
+ Wallet2PendingTransaction createTransactionMultDest({
+ required List<String> dstAddr,
+ String paymentId = "",
+ required bool isSweepAll,
+ required List<int> amounts,
+ required int mixinCount,
+ required int pendingTransactionPriority,
+ required int subaddr_account,
+ List<String> preferredInputs = const [],
+ });
+ Wallet2PendingTransaction createTransaction({
+ required String dst_addr,
+ required String payment_id,
+ required int amount,
+ required int mixin_count,
+ required int pendingTransactionPriority,
+ required int subaddr_account,
+ List<String> preferredInputs = const [],
+ });
+ Wallet2UnsignedTransaction loadUnsignedTx(
+ {required String unsigned_filename});
Wallet2UnsignedTransaction loadUnsignedTxUR({required String input});
bool submitTransaction(String filename);
bool submitTransactionUR(String input);
bool hasUnknownKeyImages();
bool exportKeyImages(String filename, {required bool all});
- String exportKeyImagesUR({ int max_fragment_length = 130, bool all = false, });
+ String exportKeyImagesUR({
+ int max_fragment_length = 130,
+ bool all = false,
+ });
bool importKeyImages(String filename);
bool importKeyImagesUR(String input);
bool exportOutputs(String filename, {required bool all});
- String exportOutputsUR({ int max_fragment_length = 130, bool all = false, });
+ String exportOutputsUR({
+ int max_fragment_length = 130,
+ bool all = false,
+ });
bool importOutputs(String filename);
bool importOutputsUR(String input);
- bool setupBackgroundSync({ required int backgroundSyncType, required String walletPassword, required String backgroundCachePassword, });
+ bool setupBackgroundSync({
+ required int backgroundSyncType,
+ required String walletPassword,
+ required String backgroundCachePassword,
+ });
int getBackgroundSyncType();
bool startBackgroundSync();
bool stopBackgroundSync(String walletPassword);
@@ -349,8 +435,15 @@ abstract class Wallet2Wallet {
bool setUserNote({required String txid, required String note});
String getUserNote({required String txid});
String getTxKey({required String txid});
- String signMessage({ required String message, required String address, });
- bool verifySignedMessage({ required String message, required String address, required String signature, });
+ String signMessage({
+ required String message,
+ required String address,
+ });
+ bool verifySignedMessage({
+ required String message,
+ required String address,
+ required String signature,
+ });
bool rescanSpent();
void setOffline({required bool offline});
bool isOffline();
@@ -362,7 +455,8 @@ abstract class Wallet2Wallet {
bool isKeysFileLocked();
int getDeviceType();
int coldKeyImageSync({required int spent, required int unspent});
- String deviceShowAddress({required int accountIndex, required int addressIndex});
+ String deviceShowAddress(
+ {required int accountIndex, required int addressIndex});
bool reconnectDevice();
int getBytesReceived();
int getBytesSent();
@@ -372,17 +466,79 @@ abstract class Wallet2Wallet {
abstract class Wallet2WalletManager {
int ffiAddress();
- Wallet2Wallet createWallet({ required String path, required String password, String language = "English", int networkType = 0, });
- Wallet2Wallet openWallet({ required String path, required String password, int networkType = 0, });
+ Wallet2Wallet createWallet({
+ required String path,
+ required String password,
+ String language = "English",
+ int networkType = 0,
+ });
+ Wallet2Wallet openWallet({
+ required String path,
+ required String password,
+ int networkType = 0,
+ });
void closeWallet(Wallet2Wallet wallet, bool store);
- Wallet2Wallet recoveryWallet({ required String path, required String password, required String mnemonic, int networkType = 0, required int restoreHeight, int kdfRounds = 0, required String seedOffset, });
- Wallet2Wallet createWalletFromKeys({ required String path, required String password, String language = "English", int nettype = 1, required int restoreHeight, required String addressString, required String viewKeyString, required String spendKeyString, int kdf_rounds = 1, });
- Wallet2Wallet createDeterministicWalletFromSpendKey({ required String path, required String password, String language = "English", int networkType = 0, required String spendKeyString, required bool newWallet, required int restoreHeight, int kdfRounds = 1, });
- Wallet2Wallet createWalletFromDevice({ required String path, required String password, int networkType = 0, required String deviceName, int restoreHeight = 0, String subaddressLookahead = "", int kdfRounds = 1, });
- Wallet2Wallet createWalletFromPolyseed({ required String path, required String password, int networkType = 0, required String mnemonic, required String seedOffset, required bool newWallet, required int restoreHeight, required int kdfRounds, });
+ Wallet2Wallet recoveryWallet({
+ required String path,
+ required String password,
+ required String mnemonic,
+ int networkType = 0,
+ required int restoreHeight,
+ int kdfRounds = 0,
+ required String seedOffset,
+ });
+ Wallet2Wallet createWalletFromKeys({
+ required String path,
+ required String password,
+ String language = "English",
+ int nettype = 1,
+ required int restoreHeight,
+ required String addressString,
+ required String viewKeyString,
+ required String spendKeyString,
+ int kdf_rounds = 1,
+ });
+ Wallet2Wallet createDeterministicWalletFromSpendKey({
+ required String path,
+ required String password,
+ String language = "English",
+ int networkType = 0,
+ required String spendKeyString,
+ required bool newWallet,
+ required int restoreHeight,
+ int kdfRounds = 1,
+ });
+ Wallet2Wallet createWalletFromDevice({
+ required String path,
+ required String password,
+ int networkType = 0,
+ required String deviceName,
+ int restoreHeight = 0,
+ String subaddressLookahead = "",
+ int kdfRounds = 1,
+ });
+ Wallet2Wallet createWalletFromPolyseed({
+ required String path,
+ required String password,
+ int networkType = 0,
+ required String mnemonic,
+ required String seedOffset,
+ required bool newWallet,
+ required int restoreHeight,
+ required int kdfRounds,
+ });
bool walletExists(String path);
- bool verifyWalletPassword({ required String keysFileName, required String password, required bool noSpendKey, required int kdfRounds, });
- int queryWalletDevice({ required String keysFileName, required String password, required int kdfRounds, });
+ bool verifyWalletPassword({
+ required String keysFileName,
+ required String password,
+ required bool noSpendKey,
+ required int kdfRounds,
+ });
+ int queryWalletDevice({
+ required String keysFileName,
+ required String password,
+ required int kdfRounds,
+ });
List<String> findWallets({required String path});
String errorString();
void setDaemonAddress(String address);
@@ -392,9 +548,17 @@ abstract class Wallet2WalletManager {
double miningHashRate();
Future<int> blockTarget();
bool isMining();
- bool startMining({ required String address, required int threads, required bool backgroundMining, required bool ignoreBattery, });
+ bool startMining({
+ required String address,
+ required int threads,
+ required bool backgroundMining,
+ required bool ignoreBattery,
+ });
bool stopMining(String address);
- String resolveOpenAlias({ required String address, required bool dnssecValid, });
+ String resolveOpenAlias({
+ required String address,
+ required bool dnssecValid,
+ });
bool setProxy(String address);
}
@@ -404,4 +568,4 @@ abstract class Wallet2WalletManagerFactory {
void setLogLevel(int level);
void setLogCategories(String categories);
Wallet2WalletManager getWalletManager();
-} \ No newline at end of file
+}