From 15b46af9e2ad37edb79f7be5ea301206361d53b2 Mon Sep 17 00:00:00 2001 From: Czarek Nakamoto Date: Fri, 8 May 2026 19:41:31 -0400 Subject: wip twip2 --- impls/monero.dart/lib/monero.dart | 24 ++++++++++++- .../lib/src/generated_bindings_monero.g.dart | 34 ++++++++++++++++++ impls/monero.dart/lib/src/monero.dart | 42 ++++++++++++++++++++++ 3 files changed, 99 insertions(+), 1 deletion(-) (limited to 'impls/monero.dart') diff --git a/impls/monero.dart/lib/monero.dart b/impls/monero.dart/lib/monero.dart index ce19d4e..a7f026e 100644 --- a/impls/monero.dart/lib/monero.dart +++ b/impls/monero.dart/lib/monero.dart @@ -92,7 +92,7 @@ String libPath = (() { Map> debugCallLength = {}; -final defaultSeparatorStr = ";"; +final defaultSeparatorStr = "|"; final defaultSeparator = defaultSeparatorStr.toNativeUtf8().cast(); /* we don't call .free here, this comment serves one purpose - so the numbers match :) */ @@ -3615,6 +3615,28 @@ String MONERO_Wallet_serializeCacheToJson(wallet ptr) { return str; } +@Deprecated("TODO") +bool Wallet_importTrezorEncryptedKeyImagesJson(wallet ptr, String json) { + debugStart?.call('MONERO_Wallet_importTrezorEncryptedKeyImagesJson'); + lib ??= MoneroC(DynamicLibrary.open(libPath)); + final jsonStr = json.toNativeUtf8(); + final ret = lib!.MONERO_Wallet_importTrezorEncryptedKeyImagesJson(ptr, jsonStr.cast()); + malloc.free(jsonStr); + debugEnd?.call('MONERO_Wallet_importTrezorEncryptedKeyImagesJson'); + return ret; +} + +@Deprecated("TODO") +String Wallet_exportTrezorTdis(wallet ptr) { + debugStart?.call('MONERO_Wallet_exportTrezorTdis'); + lib ??= MoneroC(DynamicLibrary.open(libPath)); + final ret = lib!.MONERO_Wallet_exportTrezorTdis(ptr); + final str = ret.cast().toDartString(); + MONERO_free(ret.cast()); + debugEnd?.call('MONERO_Wallet_exportTrezorTdis'); + return str; +} + // WalletManager @Deprecated("TODO") typedef WalletManager = Pointer; diff --git a/impls/monero.dart/lib/src/generated_bindings_monero.g.dart b/impls/monero.dart/lib/src/generated_bindings_monero.g.dart index b757806..0cd6bb5 100644 --- a/impls/monero.dart/lib/src/generated_bindings_monero.g.dart +++ b/impls/monero.dart/lib/src/generated_bindings_monero.g.dart @@ -4504,6 +4504,40 @@ class MoneroC { _MONERO_Wallet_serializeCacheToJsonPtr.asFunction< ffi.Pointer Function(ffi.Pointer)>(); + ffi.Pointer MONERO_Wallet_exportTrezorTdis( + ffi.Pointer wallet_ptr, + ) { + return _MONERO_Wallet_exportTrezorTdis( + wallet_ptr, + ); + } + + late final _MONERO_Wallet_exportTrezorTdisPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('MONERO_Wallet_exportTrezorTdis'); + late final _MONERO_Wallet_exportTrezorTdis = + _MONERO_Wallet_exportTrezorTdisPtr.asFunction< + ffi.Pointer Function(ffi.Pointer)>(); + + bool MONERO_Wallet_importTrezorEncryptedKeyImagesJson( + ffi.Pointer wallet_ptr, + ffi.Pointer json, + ) { + return _MONERO_Wallet_importTrezorEncryptedKeyImagesJson( + wallet_ptr, + json, + ); + } + + late final _MONERO_Wallet_importTrezorEncryptedKeyImagesJsonPtr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer)>>( + 'MONERO_Wallet_importTrezorEncryptedKeyImagesJson'); + late final _MONERO_Wallet_importTrezorEncryptedKeyImagesJson = + _MONERO_Wallet_importTrezorEncryptedKeyImagesJsonPtr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer MONERO_WalletManager_createWallet( ffi.Pointer wm_ptr, ffi.Pointer path, diff --git a/impls/monero.dart/lib/src/monero.dart b/impls/monero.dart/lib/src/monero.dart index e142d6b..abecee0 100644 --- a/impls/monero.dart/lib/src/monero.dart +++ b/impls/monero.dart/lib/src/monero.dart @@ -1,5 +1,6 @@ // ignore_for_file: deprecated_member_use_from_same_package +import 'dart:convert'; import 'dart:ffi'; import 'package:monero/monero.dart' as monero; @@ -1517,10 +1518,51 @@ class MoneroWallet implements Wallet2Wallet { return monero.Wallet_watchOnly(walletPtr); } + List exportTrezorTdis() { + final res = monero.Wallet_exportTrezorTdis(walletPtr); + final l = parseTrezorTdis(res); + return l; + } + @override int ffiAddress() => walletPtr.address; } +class TrezorTdi { + TrezorTdi({ + required this.outKey, + required this.txPubKey, + this.additionalTxPubKeys, + required this.internalOutputIndex, + required this.subAddrMajor, + required this.subAddrMinor, + }); + + final String outKey; + final String txPubKey; + final List? additionalTxPubKeys; + final int internalOutputIndex; + final int subAddrMajor; + final int subAddrMinor; + + factory TrezorTdi.fromJson(Map j) => TrezorTdi( + outKey: j['out_key'] as String, + txPubKey: j['tx_pub_key'] as String, + additionalTxPubKeys: (j['additional_tx_pub_keys'] as List?) + ?.cast(), + internalOutputIndex: (j['internal_output_index'] as num).toInt(), + subAddrMajor: (j['sub_addr_major'] as num).toInt(), + subAddrMinor: (j['sub_addr_minor'] as num).toInt(), + ); +} + +List parseTrezorTdis(String json) { + final root = jsonDecode(json) as Map; + return (root['tdis'] as List) + .map((e) => TrezorTdi.fromJson(e as Map)) + .toList(); +} + class MoneroWalletManager implements Wallet2WalletManager { MoneroWalletManager(this.wmPtr); -- cgit v1.2.3