diff options
| author | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2026-05-08 19:41:31 -0400 |
|---|---|---|
| committer | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2026-05-08 19:41:31 -0400 |
| commit | 15b46af9e2ad37edb79f7be5ea301206361d53b2 (patch) | |
| tree | c01de9d183e6c4c3d205814cd678bfce37edc102 /impls/monero.dart | |
| parent | bc8d1a0b75b97156d71579581b4cdfe58c777ed2 (diff) | |
wip twip2
Diffstat (limited to 'impls/monero.dart')
| -rw-r--r-- | impls/monero.dart/lib/monero.dart | 24 | ||||
| -rw-r--r-- | impls/monero.dart/lib/src/generated_bindings_monero.g.dart | 34 | ||||
| -rw-r--r-- | impls/monero.dart/lib/src/monero.dart | 42 |
3 files changed, 99 insertions, 1 deletions
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<String, List<int>> debugCallLength = {}; -final defaultSeparatorStr = ";"; +final defaultSeparatorStr = "|"; final defaultSeparator = defaultSeparatorStr.toNativeUtf8().cast<Char>(); /* 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<Utf8>().toDartString(); + MONERO_free(ret.cast()); + debugEnd?.call('MONERO_Wallet_exportTrezorTdis'); + return str; +} + // WalletManager @Deprecated("TODO") typedef WalletManager = Pointer<Void>; 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<ffi.Char> Function(ffi.Pointer<ffi.Void>)>(); + ffi.Pointer<ffi.Char> MONERO_Wallet_exportTrezorTdis( + ffi.Pointer<ffi.Void> wallet_ptr, + ) { + return _MONERO_Wallet_exportTrezorTdis( + wallet_ptr, + ); + } + + late final _MONERO_Wallet_exportTrezorTdisPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer<ffi.Char> Function( + ffi.Pointer<ffi.Void>)>>('MONERO_Wallet_exportTrezorTdis'); + late final _MONERO_Wallet_exportTrezorTdis = + _MONERO_Wallet_exportTrezorTdisPtr.asFunction< + ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Void>)>(); + + bool MONERO_Wallet_importTrezorEncryptedKeyImagesJson( + ffi.Pointer<ffi.Void> wallet_ptr, + ffi.Pointer<ffi.Char> json, + ) { + return _MONERO_Wallet_importTrezorEncryptedKeyImagesJson( + wallet_ptr, + json, + ); + } + + late final _MONERO_Wallet_importTrezorEncryptedKeyImagesJsonPtr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Char>)>>( + 'MONERO_Wallet_importTrezorEncryptedKeyImagesJson'); + late final _MONERO_Wallet_importTrezorEncryptedKeyImagesJson = + _MONERO_Wallet_importTrezorEncryptedKeyImagesJsonPtr.asFunction< + bool Function(ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Char>)>(); + ffi.Pointer<ffi.Void> MONERO_WalletManager_createWallet( ffi.Pointer<ffi.Void> wm_ptr, ffi.Pointer<ffi.Char> 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<TrezorTdi> 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<String>? additionalTxPubKeys; + final int internalOutputIndex; + final int subAddrMajor; + final int subAddrMinor; + + factory TrezorTdi.fromJson(Map<String, dynamic> j) => TrezorTdi( + outKey: j['out_key'] as String, + txPubKey: j['tx_pub_key'] as String, + additionalTxPubKeys: (j['additional_tx_pub_keys'] as List?) + ?.cast<String>(), + 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<TrezorTdi> parseTrezorTdis(String json) { + final root = jsonDecode(json) as Map<String, dynamic>; + return (root['tdis'] as List) + .map((e) => TrezorTdi.fromJson(e as Map<String, dynamic>)) + .toList(); +} + class MoneroWalletManager implements Wallet2WalletManager { MoneroWalletManager(this.wmPtr); |
