From df059e02b6c75f161101edde998141041559b3f6 Mon Sep 17 00:00:00 2001 From: Some Random Crypto Guy Date: Tue, 30 Sep 2025 09:54:09 +0100 Subject: [PATCH] added ledger functions; added serialize_cache_to_JSON() functionality --- impls/monero.dart/lib/salvium.dart | 19 ++++++++ .../lib/src/generated_bindings_salvium.g.dart | 45 +++++++++++++++++++ .../salvium_libwallet2_api_c.exp | 2 + .../src/main/cpp/wallet2_api_c.cpp | 14 ++++++ .../src/main/cpp/wallet2_api_c.h | 2 + 5 files changed, 82 insertions(+) diff --git a/impls/monero.dart/lib/salvium.dart b/impls/monero.dart/lib/salvium.dart index 6dd5705..e9debb3 100644 --- a/impls/monero.dart/lib/salvium.dart +++ b/impls/monero.dart/lib/salvium.dart @@ -3358,6 +3358,25 @@ void Wallet_setDeviceSendData(wallet ptr, Pointer data, int len) { return ret; } +@Deprecated("TODO") +void Wallet_setLedgerCallback(Pointer, UnsignedInt)>> callback) { + debugStart?.call('SALVIUM_Wallet_setLedgerCallback'); + lib ??= MoneroC(DynamicLibrary.open(libPath)); + final ret = lib!.SALVIUM_Wallet_setLedgerCallback(callback); + debugEnd?.call('SALVIUM_Wallet_setLedgerCallback'); + return ret; +} + +String Wallet_serializeCacheToJson(wallet ptr) { + debugStart?.call('SALVIUM_Wallet_serializeCacheToJson'); + lib ??= MoneroC(DynamicLibrary.open(libPath)); + final ret = lib!.SALVIUM_Wallet_serializeCacheToJson(ptr); + final str = ret.cast().toDartString(); + MONERO_free(ret.cast()); + debugEnd?.call('SALVIUM_Wallet_serializeCacheToJson'); + return str; +} + // WalletManager typedef WalletManager = Pointer; diff --git a/impls/monero.dart/lib/src/generated_bindings_salvium.g.dart b/impls/monero.dart/lib/src/generated_bindings_salvium.g.dart index dcdc622..4b76847 100644 --- a/impls/monero.dart/lib/src/generated_bindings_salvium.g.dart +++ b/impls/monero.dart/lib/src/generated_bindings_salvium.g.dart @@ -4550,6 +4550,51 @@ class SalviumC { void Function( ffi.Pointer, ffi.Pointer, int)>(); + void MONERO_Wallet_setLedgerCallback( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer command, + ffi.UnsignedInt cmd_len)>> + sendToLedgerDevice, + ) { + return _MONERO_Wallet_setLedgerCallback( + sendToLedgerDevice, + ); + } + + late final _SALVIUM_Wallet_setLedgerCallbackPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer command, + ffi.UnsignedInt cmd_len)>>)>>( + 'SALVIUM_Wallet_setLedgerCallback'); + late final _SALVIUM_Wallet_setLedgerCallback = + _SALVIUM_Wallet_setLedgerCallbackPtr.asFunction< + void Function( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer command, + ffi.UnsignedInt cmd_len)>>)>(); + + ffi.Pointer SALVIUM_Wallet_serializeCacheToJson( + ffi.Pointer wallet_ptr, + ) { + return _SALVIUM_Wallet_serializeCacheToJson( + wallet_ptr, + ); + } + + late final _SALVIUM_Wallet_serializeCacheToJsonPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('SALVIUM_Wallet_serializeCacheToJson'); + late final _SALVIUM_Wallet_serializeCacheToJson = + _SALVIUM_Wallet_serializeCacheToJsonPtr.asFunction< + ffi.Pointer Function(ffi.Pointer)>(); + ffi.Pointer SALVIUM_WalletManager_createWallet( ffi.Pointer wm_ptr, ffi.Pointer path, diff --git a/salvium_libwallet2_api_c/salvium_libwallet2_api_c.exp b/salvium_libwallet2_api_c/salvium_libwallet2_api_c.exp index b73d81f..d566d68 100644 --- a/salvium_libwallet2_api_c/salvium_libwallet2_api_c.exp +++ b/salvium_libwallet2_api_c/salvium_libwallet2_api_c.exp @@ -126,6 +126,8 @@ _SALVIUM_MultisigState_total _SALVIUM_DeviceProgress_progress _SALVIUM_DeviceProgress_indeterminate _SALVIUM_Wallet_seed +_SALVIUM_Wallet_setLedgerCallback +_SALVIUM_Wallet_serializeCacheToJson _SALVIUM_Wallet_getSeedLanguage _SALVIUM_Wallet_setSeedLanguage _SALVIUM_Wallet_status diff --git a/salvium_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp b/salvium_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp index 2268300..d87e500 100644 --- a/salvium_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp +++ b/salvium_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp @@ -2211,6 +2211,20 @@ void SALVIUM_Wallet_setDeviceSendData(void* wallet_ptr, unsigned char* data, siz DEBUG_END() } +void SALVIUM_Wallet_setLedgerCallback(void (*sendToLedgerDevice)(unsigned char *command, unsigned int cmd_len)) { + DEBUG_START() + Monero::Wallet::setLedgerCallback(sendToLedgerDevice); + DEBUG_END() +} + +const char* SALVIUM_Wallet_serializeCacheToJson(void* wallet_ptr) { + DEBUG_START() + Monero::Wallet *wallet = reinterpret_cast(wallet_ptr); + std::string result = wallet->serializeCacheToJson(); + return strdup(result.c_str()); + DEBUG_END() +} + void* SALVIUM_WalletManager_createWallet(void* wm_ptr, const char* path, const char* password, const char* language, int networkType) { DEBUG_START() Monero::WalletManager *wm = reinterpret_cast(wm_ptr); diff --git a/salvium_libwallet2_api_c/src/main/cpp/wallet2_api_c.h b/salvium_libwallet2_api_c/src/main/cpp/wallet2_api_c.h index cfc00c2..0f9884e 100644 --- a/salvium_libwallet2_api_c/src/main/cpp/wallet2_api_c.h +++ b/salvium_libwallet2_api_c/src/main/cpp/wallet2_api_c.h @@ -854,6 +854,8 @@ extern ADDAPI bool SALVIUM_Wallet_getWaitsForDeviceSend(void* wallet_ptr); extern ADDAPI bool SALVIUM_Wallet_getWaitsForDeviceReceive(void* wallet_ptr); extern ADDAPI void SALVIUM_Wallet_setDeviceReceivedData(void* wallet_ptr, unsigned char* data, size_t len); extern ADDAPI void SALVIUM_Wallet_setDeviceSendData(void* wallet_ptr, unsigned char* data, size_t len); +extern ADDAPI void SALVIUM_Wallet_setLedgerCallback(void (*sendToLedgerDevice)(unsigned char *command, unsigned int cmd_len)); +extern ADDAPI const char* SALVIUM_Wallet_serializeCacheToJson(void* wallet_ptr); // }; // struct WalletManager