From 15b46af9e2ad37edb79f7be5ea301206361d53b2 Mon Sep 17 00:00:00 2001 From: Czarek Nakamoto Date: Fri, 8 May 2026 19:41:31 -0400 Subject: wip twip2 --- .../lib/src/generated_bindings_monero.g.dart | 34 ++++++++++++++++++ impls/monero.dart/lib/src/monero.dart | 42 ++++++++++++++++++++++ 2 files changed, 76 insertions(+) (limited to 'impls/monero.dart/lib/src') 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