diff options
| author | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2026-05-13 12:03:03 -0400 |
|---|---|---|
| committer | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2026-05-13 12:03:03 -0400 |
| commit | b51693c76f60fac497a26b0761fa6d3125c91420 (patch) | |
| tree | 269ef49559492429815a0746996f31fa0d280da0 | |
| parent | 64005d120bc20ffcbe60e4717169d2b93fdba21d (diff) | |
wip
| -rw-r--r-- | impls/monero.dart/lib/src/wallet2.dart | 248 |
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 +} |
