diff options
| author | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2025-04-21 11:09:37 +0200 |
|---|---|---|
| committer | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2025-04-21 11:09:37 +0200 |
| commit | 24cce8f2cff643f8dcdd4740c529e1ac066dd717 (patch) | |
| tree | f3ff2e149a17633bad917b50ac4366b0c73a0c56 | |
| parent | 4c3ed2342d642cedf3f0c4fe19c30c5d2c86700c (diff) | |
expose address
| -rw-r--r-- | impls/monero.dart/lib/src/monero.dart | 63 | ||||
| -rw-r--r-- | impls/monero.dart/lib/src/wallet2.dart | 42 | ||||
| -rw-r--r-- | impls/monero.dart/lib/src/wownero.dart | 63 |
3 files changed, 164 insertions, 4 deletions
diff --git a/impls/monero.dart/lib/src/monero.dart b/impls/monero.dart/lib/src/monero.dart index 76fee3b..5d71b26 100644 --- a/impls/monero.dart/lib/src/monero.dart +++ b/impls/monero.dart/lib/src/monero.dart @@ -10,7 +10,9 @@ class Monero implements Wallet2 { Wallet2WalletManagerFactory walletManagerFactory() { return MoneroWalletManagerFactory(); } - + + @override + int ffiAddress() => 0; } class MoneroAddressBook implements Wallet2AddressBook { @@ -58,6 +60,9 @@ class MoneroAddressBook implements Wallet2AddressBook { bool setDescription({required int rowId, required String description}) { return monero.AddressBook_setDescription(addressBookPtr, rowId: rowId, description: description); } + + @override + int ffiAddress() => addressBookPtr.address; } class MoneroAddressBookRow implements Wallet2AddressBookRow { @@ -89,6 +94,9 @@ class MoneroAddressBookRow implements Wallet2AddressBookRow { int getRowId() { return monero.AddressBookRow_getRowId(addressBookRowPtr); } + + @override + int ffiAddress() => addressBookRowPtr.address; } class MoneroCoins implements Wallet2Coins { @@ -147,6 +155,9 @@ class MoneroCoins implements Wallet2Coins { void thawByPublicKey({required String publicKey}) { monero.Coins_thawByPublicKey(coinsPtr, publicKey: publicKey); } + + @override + int ffiAddress() => coinsPtr.address; } class MoneroCoinsInfo implements Wallet2CoinsInfo { @@ -258,6 +269,9 @@ class MoneroCoinsInfo implements Wallet2CoinsInfo { bool unlocked() { return monero.CoinsInfo_unlocked(coinsInfoPtr); } + + @override + int ffiAddress() => coinsInfoPtr.address; } class MoneroDeviceProgress implements Wallet2DeviceProgress { @@ -274,6 +288,9 @@ class MoneroDeviceProgress implements Wallet2DeviceProgress { bool progress() { return monero.DeviceProgress_progress(deviceProgressPtr); } + + @override + int ffiAddress() => deviceProgressPtr.address; } class MoneroWalletListener implements Wallet2WalletListener { @@ -305,6 +322,9 @@ class MoneroWalletListener implements Wallet2WalletListener { void resetNeedToRefresh() { monero.MONERO_cw_WalletListener_resetNeedToRefresh(walletListenerPtr); } + + @override + int ffiAddress() => walletListenerPtr.address; } class MoneroWalletChecksum implements Wallet2Checksum { @@ -324,6 +344,9 @@ class MoneroWalletChecksum implements Wallet2Checksum { String checksum_wallet2_api_c_h() { return monero.MONERO_checksum_wallet2_api_c_h(); } + + @override + int ffiAddress() => 0; } class MoneroFree implements Wallet2Free { @@ -333,6 +356,9 @@ class MoneroFree implements Wallet2Free { void free(Pointer<Void> ptr) { monero.MONERO_free(ptr); } + + @override + int ffiAddress() => 0; } class MoneroMultisigState implements Wallet2MultisigState { @@ -359,6 +385,9 @@ class MoneroMultisigState implements Wallet2MultisigState { int total(Pointer<Void> ptr) { return monero.MultisigState_total(multisigStatePtr); } + + @override + int ffiAddress() => multisigStatePtr.address; } class MoneroPendingTransaction implements Wallet2PendingTransaction { @@ -440,6 +469,9 @@ class MoneroPendingTransaction implements Wallet2PendingTransaction { String txid(String separator) { return monero.PendingTransaction_txid(pendingTransactionPtr, separator); } + + @override + int ffiAddress() => pendingTransactionPtr.address; } class MoneroSubaddress implements Wallet2Subaddress { @@ -472,6 +504,9 @@ class MoneroSubaddress implements Wallet2Subaddress { void setLabel({required int accountIndex, required int addressIndex, required String label}) { monero.Subaddress_setLabel(subaddressPtr, accountIndex: accountIndex, addressIndex: addressIndex, label: label); } + + @override + int ffiAddress() => subaddressPtr.address; } class MoneroSubaddressAccount implements Wallet2SubaddressAccount { @@ -504,6 +539,9 @@ class MoneroSubaddressAccount implements Wallet2SubaddressAccount { void setLabel({required int accountIndex, required String label}) { monero.SubaddressAccount_setLabel(subaddressAccountPtr, accountIndex: accountIndex, label: label); } + + @override + int ffiAddress() => subaddressAccountPtr.address; } class MoneroSubaddressAccountRow implements Wallet2SubaddressAccountRow { @@ -540,6 +578,9 @@ class MoneroSubaddressAccountRow implements Wallet2SubaddressAccountRow { String getUnlockedBalance() { return monero.SubaddressAccountRow_getUnlockedBalance(subaddressAccountRowPtr); } + + @override + int ffiAddress() => subaddressAccountRowPtr.address; } class MoneroSubaddressRow implements Wallet2SubaddressRow { @@ -566,6 +607,9 @@ class MoneroSubaddressRow implements Wallet2SubaddressRow { int getRowId() { return monero.SubaddressRow_getRowId(subaddressRowPtr); } + + @override + int ffiAddress() => subaddressRowPtr.address; } class MoneroTransactionHistory implements Wallet2TransactionHistory { @@ -599,6 +643,9 @@ class MoneroTransactionHistory implements Wallet2TransactionHistory { final tx = monero.TransactionHistory_transactionById(transactionHistoryPtr, txid: txid); return MoneroTransactionInfo(tx); } + + @override + int ffiAddress() => transactionHistoryPtr.address; } class MoneroTransactionInfo implements Wallet2TransactionInfo { @@ -701,6 +748,8 @@ class MoneroTransactionInfo implements Wallet2TransactionInfo { return monero.TransactionInfo_unlockTime(transactionInfoPtr); } + @override + int ffiAddress() => transactionInfoPtr.address; } class MoneroUnsignedTransaction implements Wallet2UnsignedTransaction { @@ -768,7 +817,8 @@ class MoneroUnsignedTransaction implements Wallet2UnsignedTransaction { return monero.UnsignedTransaction_txCount(unsignedTransactionPtr); } - + @override + int ffiAddress() => unsignedTransactionPtr.address; } class MoneroWallet implements Wallet2Wallet { @@ -1471,6 +1521,9 @@ class MoneroWallet implements Wallet2Wallet { bool watchOnly() { return monero.Wallet_watchOnly(walletPtr); } + + @override + int ffiAddress() => walletPtr.address; } class MoneroWalletManager implements Wallet2WalletManager { @@ -1599,6 +1652,9 @@ class MoneroWalletManager implements Wallet2WalletManager { bool walletExists(String path) { return monero.WalletManager_walletExists(wmPtr, path); } + + @override + int ffiAddress() => wmPtr.address; } class MoneroWalletManagerFactory implements Wallet2WalletManagerFactory { @@ -1616,4 +1672,7 @@ class MoneroWalletManagerFactory implements Wallet2WalletManagerFactory { void setLogLevel(int level) { monero.WalletManagerFactory_setLogLevel(level); } + + @override + int ffiAddress() => 0; } diff --git a/impls/monero.dart/lib/src/wallet2.dart b/impls/monero.dart/lib/src/wallet2.dart index 4b87c6a..3c58949 100644 --- a/impls/monero.dart/lib/src/wallet2.dart +++ b/impls/monero.dart/lib/src/wallet2.dart @@ -15,9 +15,13 @@ abstract class Wallet2 { static set libPath(String path) { throw Exception('libPath is read-only, as isolates cannot be made aware of changes to this variable'); } + + int ffiAddress(); } abstract class Wallet2AddressBook { + int ffiAddress(); + int getAll_size(); Wallet2AddressBookRow getAll_byIndex(int index); bool addRow({required String dstAddr, required String paymentId, required String description, }); @@ -29,6 +33,8 @@ abstract class Wallet2AddressBook { } abstract class Wallet2AddressBookRow { + int ffiAddress(); + String extra(); String getAddress(); String getDescription(); @@ -37,6 +43,8 @@ abstract class Wallet2AddressBookRow { } abstract class Wallet2Coins { + int ffiAddress(); + int count(); Wallet2CoinsInfo coin(int index); int getAll_size(); @@ -50,6 +58,8 @@ abstract class Wallet2Coins { } abstract class Wallet2CoinsInfo { + int ffiAddress(); + int blockHeight(); String hash(); int internalOutputIndex(); @@ -74,11 +84,15 @@ abstract class Wallet2CoinsInfo { } abstract class Wallet2DeviceProgress { + int ffiAddress(); + bool progress(); bool indeterminate(); } abstract class Wallet2WalletListener { + int ffiAddress(); + void resetNeedToRefresh(); bool isNeedToRefresh(); bool isNewTransactionExist(); @@ -87,16 +101,22 @@ abstract class Wallet2WalletListener { } abstract class Wallet2Checksum { + int ffiAddress(); + String checksum_wallet2_api_c_h(); String checksum_wallet2_api_c_cpp(); String checksum_wallet2_api_c_exp(); } abstract class Wallet2Free { + int ffiAddress(); + void free(Pointer<Void> wlptr); } abstract class Wallet2MultisigState { + int ffiAddress(); + bool isMultisig(Pointer<Void> ptr); bool isReady(Pointer<Void> ptr); int threshold(Pointer<Void> ptr); @@ -104,6 +124,8 @@ abstract class Wallet2MultisigState { } abstract class Wallet2PendingTransaction { + int ffiAddress(); + int status(); String errorString(); bool commit({required String filename, required bool overwrite}); @@ -122,6 +144,8 @@ abstract class Wallet2PendingTransaction { } abstract class Wallet2Subaddress { + int ffiAddress(); + int getAll_size(); Wallet2SubaddressRow getAll_byIndex(int index); void addRow({required int accountIndex, required String label}); @@ -130,6 +154,8 @@ abstract class Wallet2Subaddress { } abstract class Wallet2SubaddressAccount { + int ffiAddress(); + int getAll_size(); Wallet2SubaddressAccountRow getAll_byIndex(int index); void addRow({required String label}); @@ -138,6 +164,8 @@ abstract class Wallet2SubaddressAccount { } abstract class Wallet2SubaddressAccountRow { + int ffiAddress(); + String extra(); String getAddress(); String getLabel(); @@ -147,6 +175,8 @@ abstract class Wallet2SubaddressAccountRow { } abstract class Wallet2SubaddressRow { + int ffiAddress(); + String extra(); String getAddress(); String getLabel(); @@ -154,6 +184,8 @@ abstract class Wallet2SubaddressRow { } abstract class Wallet2TransactionHistory { + int ffiAddress(); + int count(); Wallet2TransactionInfo transaction(int index); Wallet2TransactionInfo transactionById(String txid); @@ -162,6 +194,8 @@ abstract class Wallet2TransactionHistory { } abstract class Wallet2TransactionInfo { + int ffiAddress(); + int direction(); bool isPending(); bool isFailed(); @@ -184,6 +218,8 @@ abstract class Wallet2TransactionInfo { } abstract class Wallet2UnsignedTransaction { + int ffiAddress(); + int status(); String errorString(); String amount(); @@ -199,6 +235,8 @@ abstract class Wallet2UnsignedTransaction { } abstract class Wallet2Wallet { + int ffiAddress(); + String seed({required String seedOffset}); String getSeedLanguage(); void setSeedLanguage({required String language}); @@ -340,6 +378,8 @@ 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 recoveryWallet({ required String path, required String password, required String mnemonic, int networkType = 0, required int restoreHeight, int kdfRounds = 0, required String seedOffset, }); @@ -366,6 +406,8 @@ abstract class Wallet2WalletManager { } abstract class Wallet2WalletManagerFactory { + int ffiAddress(); + void setLogLevel(int level); void setLogCategories(String categories); Wallet2WalletManager getWalletManager(); diff --git a/impls/monero.dart/lib/src/wownero.dart b/impls/monero.dart/lib/src/wownero.dart index 7bf8809..cd16f9b 100644 --- a/impls/monero.dart/lib/src/wownero.dart +++ b/impls/monero.dart/lib/src/wownero.dart @@ -11,6 +11,8 @@ class Wownero implements Wallet2 { return WowneroWalletManagerFactory(); } + @override + int ffiAddress() => 0; } class WowneroAddressBook implements Wallet2AddressBook { @@ -58,6 +60,9 @@ class WowneroAddressBook implements Wallet2AddressBook { bool setDescription({required int rowId, required String description}) { return wownero.AddressBook_setDescription(addressBookPtr, rowId: rowId, description: description); } + + @override + int ffiAddress() => addressBookPtr.address; } class WowneroAddressBookRow implements Wallet2AddressBookRow { @@ -89,6 +94,9 @@ class WowneroAddressBookRow implements Wallet2AddressBookRow { int getRowId() { return wownero.AddressBookRow_getRowId(addressBookRowPtr); } + + @override + int ffiAddress() => addressBookRowPtr.address; } class WowneroCoins implements Wallet2Coins { @@ -147,6 +155,9 @@ class WowneroCoins implements Wallet2Coins { void thawByPublicKey({required String publicKey}) { wownero.Coins_thawByPublicKey(coinsPtr, publicKey: publicKey); } + + @override + int ffiAddress() => coinsPtr.address; } class WowneroCoinsInfo implements Wallet2CoinsInfo { @@ -258,6 +269,9 @@ class WowneroCoinsInfo implements Wallet2CoinsInfo { bool unlocked() { return wownero.CoinsInfo_unlocked(coinsInfoPtr); } + + @override + int ffiAddress() => coinsInfoPtr.address; } class WowneroDeviceProgress implements Wallet2DeviceProgress { @@ -274,6 +288,9 @@ class WowneroDeviceProgress implements Wallet2DeviceProgress { bool progress() { return wownero.DeviceProgress_progress(deviceProgressPtr); } + + @override + int ffiAddress() => deviceProgressPtr.address; } class WowneroWalletListener implements Wallet2WalletListener { @@ -305,6 +322,9 @@ class WowneroWalletListener implements Wallet2WalletListener { void resetNeedToRefresh() { wownero.WOWNERO_cw_WalletListener_resetNeedToRefresh(walletListenerPtr); } + + @override + int ffiAddress() => walletListenerPtr.address; } class WowneroWalletChecksum implements Wallet2Checksum { @@ -324,6 +344,9 @@ class WowneroWalletChecksum implements Wallet2Checksum { String checksum_wallet2_api_c_h() { return wownero.WOWNERO_checksum_wallet2_api_c_h(); } + + @override + int ffiAddress() => 0; } class WowneroFree implements Wallet2Free { @@ -333,6 +356,9 @@ class WowneroFree implements Wallet2Free { void free(Pointer<Void> ptr) { wownero.WOWNERO_free(ptr); } + + @override + int ffiAddress() => 0; } class WowneroMultisigState implements Wallet2MultisigState { @@ -359,6 +385,9 @@ class WowneroMultisigState implements Wallet2MultisigState { int total(Pointer<Void> ptr) { return wownero.MultisigState_total(multisigStatePtr); } + + @override + int ffiAddress() => multisigStatePtr.address; } class WowneroPendingTransaction implements Wallet2PendingTransaction { @@ -440,6 +469,9 @@ class WowneroPendingTransaction implements Wallet2PendingTransaction { String txid(String separator) { return wownero.PendingTransaction_txid(pendingTransactionPtr, separator); } + + @override + int ffiAddress() => pendingTransactionPtr.address; } class WowneroSubaddress implements Wallet2Subaddress { @@ -472,6 +504,9 @@ class WowneroSubaddress implements Wallet2Subaddress { void setLabel({required int accountIndex, required int addressIndex, required String label}) { wownero.Subaddress_setLabel(subaddressPtr, accountIndex: accountIndex, addressIndex: addressIndex, label: label); } + + @override + int ffiAddress() => subaddressPtr.address; } class WowneroSubaddressAccount implements Wallet2SubaddressAccount { @@ -504,6 +539,9 @@ class WowneroSubaddressAccount implements Wallet2SubaddressAccount { void setLabel({required int accountIndex, required String label}) { wownero.SubaddressAccount_setLabel(subaddressAccountPtr, accountIndex: accountIndex, label: label); } + + @override + int ffiAddress() => subaddressAccountPtr.address; } class WowneroSubaddressAccountRow implements Wallet2SubaddressAccountRow { @@ -540,6 +578,9 @@ class WowneroSubaddressAccountRow implements Wallet2SubaddressAccountRow { String getUnlockedBalance() { return wownero.SubaddressAccountRow_getUnlockedBalance(subaddressAccountRowPtr); } + + @override + int ffiAddress() => subaddressAccountRowPtr.address; } class WowneroSubaddressRow implements Wallet2SubaddressRow { @@ -566,6 +607,9 @@ class WowneroSubaddressRow implements Wallet2SubaddressRow { int getRowId() { return wownero.SubaddressRow_getRowId(subaddressRowPtr); } + + @override + int ffiAddress() => subaddressRowPtr.address; } class WowneroTransactionHistory implements Wallet2TransactionHistory { @@ -599,6 +643,9 @@ class WowneroTransactionHistory implements Wallet2TransactionHistory { final tx = wownero.TransactionHistory_transactionById(transactionHistoryPtr, txid: txid); return WowneroTransactionInfo(tx); } + + @override + int ffiAddress() => transactionHistoryPtr.address; } class WowneroTransactionInfo implements Wallet2TransactionInfo { @@ -700,7 +747,9 @@ class WowneroTransactionInfo implements Wallet2TransactionInfo { int unlockTime() { return wownero.TransactionInfo_unlockTime(transactionInfoPtr); } - + + @override + int ffiAddress() => transactionInfoPtr.address; } class WowneroUnsignedTransaction implements Wallet2UnsignedTransaction { @@ -768,7 +817,8 @@ class WowneroUnsignedTransaction implements Wallet2UnsignedTransaction { return wownero.UnsignedTransaction_txCount(unsignedTransactionPtr); } - + @override + int ffiAddress() => unsignedTransactionPtr.address; } class WowneroWallet implements Wallet2Wallet { @@ -1469,6 +1519,9 @@ class WowneroWallet implements Wallet2Wallet { bool watchOnly() { return wownero.Wallet_watchOnly(walletPtr); } + + @override + int ffiAddress() => walletPtr.address; } class WowneroWalletManager implements Wallet2WalletManager { @@ -1596,6 +1649,9 @@ class WowneroWalletManager implements Wallet2WalletManager { bool walletExists(String path) { return wownero.WalletManager_walletExists(wmPtr, path); } + + @override + int ffiAddress() => wmPtr.address; } class WowneroWalletManagerFactory implements Wallet2WalletManagerFactory { @@ -1613,4 +1669,7 @@ class WowneroWalletManagerFactory implements Wallet2WalletManagerFactory { void setLogLevel(int level) { wownero.WalletManagerFactory_setLogLevel(level); } + + @override + int ffiAddress() => 0; } |
