summaryrefslogtreecommitdiff
path: root/impls/monero.dart/lib
diff options
context:
space:
mode:
authorcyan <cyjan@mrcyjanek.net>2025-01-04 09:02:44 +0100
committerGitHub <noreply@github.com>2025-01-04 09:02:44 +0100
commitfcc2924f31e6ecc1ad787ab6c704188c393318aa (patch)
tree1e43e28bd5556334b0b37068fd3ea97916f50add /impls/monero.dart/lib
parenta6134fcebc9928b8a1e90623b136e4e4a309fc64 (diff)
initial zano commit (#83)
* initial zano commit * update checksum, fix zano patches on CI * fix monero builds * fix cmake command * fix: devcontainer on x64 ffigen: add zano zano: add missing free dart: implement zano * update boost filenames * unboost the cmakelists * fix zano boost issues * added patch into proper location * fix various build issues * [skip ci] update tor-connect * fix zano builds for ios * fix apply patches and don't fail-fast * uncomment build depends for monero * build_single.sh fix for macos native builds * disable qemu on arm64 builders from buildjet * fix boost, fix missing symbols (maybe) * fix ordering of crypto and ssl libraries * fix wownero mingw * fetch zano releases to release-bulk * build things 'the zano way' * proper cmake config * Zano.. yeah... * Update zano release to 2.0.1.367 * update zano patches * update zano builds * update zano build * fix zano build * move zlibstatic to the top (this shouldn't matter anyway) * fix patch location, update tor-connect * update ci runner * fix zano build on the CI * enable zano for other targets * nvm * don't use darwin in single release file * Increase max password length * build contrib/depends offline * zano support for macos * Update dependencies to work on multithread via rosetta2 * different way of adding .patch-applied * Improve performance of incremental builds * remove unnecessary patches * update coin-control patch * fix test * remove contrib/depends patches in wownero * chore: support fallback names in the download_deps util --------- Co-authored-by: Im-Beast <franik.mateusz@gmail.com>
Diffstat (limited to 'impls/monero.dart/lib')
-rw-r--r--impls/monero.dart/lib/src/checksum_zano.dart4
-rw-r--r--impls/monero.dart/lib/src/generated_bindings_zano.g.dart527
-rw-r--r--impls/monero.dart/lib/zano.dart688
3 files changed, 1219 insertions, 0 deletions
diff --git a/impls/monero.dart/lib/src/checksum_zano.dart b/impls/monero.dart/lib/src/checksum_zano.dart
new file mode 100644
index 0000000..b8b879a
--- /dev/null
+++ b/impls/monero.dart/lib/src/checksum_zano.dart
@@ -0,0 +1,4 @@
+// ignore_for_file: constant_identifier_names
+const String wallet2_api_c_h_sha256 = "8acaa95513b85a984c08e05cc3f2ac7530bb8f32946eeeb45357bd846aef33dd";
+const String wallet2_api_c_cpp_sha256 = "4efacd3812d53dd268b6869cc0a9560e7320574d96e09136cf067f796edfeba6-2817090c8ac7639d6f697d00fc8bcba2b3681d90";
+const String wallet2_api_c_exp_sha256 = "66f3ff655bbfd11ad28c318ab707090b5a93276f436b06f7b1c0f329dba3c9c2";
diff --git a/impls/monero.dart/lib/src/generated_bindings_zano.g.dart b/impls/monero.dart/lib/src/generated_bindings_zano.g.dart
new file mode 100644
index 0000000..1ffdc3e
--- /dev/null
+++ b/impls/monero.dart/lib/src/generated_bindings_zano.g.dart
@@ -0,0 +1,527 @@
+// AUTO GENERATED FILE, DO NOT EDIT.
+//
+// Generated by `package:ffigen`.
+// ignore_for_file: type=lint
+import 'dart:ffi' as ffi;
+
+/// monero_c bindings
+class ZanoC {
+ /// Holds the symbol lookup function.
+ final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+ _lookup;
+
+ /// The symbols are looked up in [dynamicLibrary].
+ ZanoC(ffi.DynamicLibrary dynamicLibrary) : _lookup = dynamicLibrary.lookup;
+
+ /// The symbols are looked up with [lookup].
+ ZanoC.fromLookup(
+ ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+ lookup)
+ : _lookup = lookup;
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_init(
+ ffi.Pointer<ffi.Char> address,
+ ffi.Pointer<ffi.Char> working_dir,
+ int log_level,
+ ) {
+ return _ZANO_PlainWallet_init(
+ address,
+ working_dir,
+ log_level,
+ );
+ }
+
+ late final _ZANO_PlainWallet_initPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>, ffi.Int)>>('ZANO_PlainWallet_init');
+ late final _ZANO_PlainWallet_init = _ZANO_PlainWallet_initPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>, int)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_init2(
+ ffi.Pointer<ffi.Char> ip,
+ ffi.Pointer<ffi.Char> port,
+ ffi.Pointer<ffi.Char> working_dir,
+ int log_level,
+ ) {
+ return _ZANO_PlainWallet_init2(
+ ip,
+ port,
+ working_dir,
+ log_level,
+ );
+ }
+
+ late final _ZANO_PlainWallet_init2Ptr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>,
+ ffi.Int)>>('ZANO_PlainWallet_init2');
+ late final _ZANO_PlainWallet_init2 = _ZANO_PlainWallet_init2Ptr.asFunction<
+ ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>, int)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_reset() {
+ return _ZANO_PlainWallet_reset();
+ }
+
+ late final _ZANO_PlainWallet_resetPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
+ 'ZANO_PlainWallet_reset');
+ late final _ZANO_PlainWallet_reset =
+ _ZANO_PlainWallet_resetPtr.asFunction<ffi.Pointer<ffi.Char> Function()>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_setLogLevel(
+ int log_level,
+ ) {
+ return _ZANO_PlainWallet_setLogLevel(
+ log_level,
+ );
+ }
+
+ late final _ZANO_PlainWallet_setLogLevelPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
+ 'ZANO_PlainWallet_setLogLevel');
+ late final _ZANO_PlainWallet_setLogLevel = _ZANO_PlainWallet_setLogLevelPtr
+ .asFunction<ffi.Pointer<ffi.Char> Function(int)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_getVersion() {
+ return _ZANO_PlainWallet_getVersion();
+ }
+
+ late final _ZANO_PlainWallet_getVersionPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
+ 'ZANO_PlainWallet_getVersion');
+ late final _ZANO_PlainWallet_getVersion = _ZANO_PlainWallet_getVersionPtr
+ .asFunction<ffi.Pointer<ffi.Char> Function()>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_getWalletFiles() {
+ return _ZANO_PlainWallet_getWalletFiles();
+ }
+
+ late final _ZANO_PlainWallet_getWalletFilesPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
+ 'ZANO_PlainWallet_getWalletFiles');
+ late final _ZANO_PlainWallet_getWalletFiles =
+ _ZANO_PlainWallet_getWalletFilesPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function()>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_getExportPrivateInfo(
+ ffi.Pointer<ffi.Char> target_dir,
+ ) {
+ return _ZANO_PlainWallet_getExportPrivateInfo(
+ target_dir,
+ );
+ }
+
+ late final _ZANO_PlainWallet_getExportPrivateInfoPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_getExportPrivateInfo');
+ late final _ZANO_PlainWallet_getExportPrivateInfo =
+ _ZANO_PlainWallet_getExportPrivateInfoPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_deleteWallet(
+ ffi.Pointer<ffi.Char> file_name,
+ ) {
+ return _ZANO_PlainWallet_deleteWallet(
+ file_name,
+ );
+ }
+
+ late final _ZANO_PlainWallet_deleteWalletPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_deleteWallet');
+ late final _ZANO_PlainWallet_deleteWallet = _ZANO_PlainWallet_deleteWalletPtr
+ .asFunction<ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_getAddressInfo(
+ ffi.Pointer<ffi.Char> addr,
+ ) {
+ return _ZANO_PlainWallet_getAddressInfo(
+ addr,
+ );
+ }
+
+ late final _ZANO_PlainWallet_getAddressInfoPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_getAddressInfo');
+ late final _ZANO_PlainWallet_getAddressInfo =
+ _ZANO_PlainWallet_getAddressInfoPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_getAppconfig(
+ ffi.Pointer<ffi.Char> encryption_key,
+ ) {
+ return _ZANO_PlainWallet_getAppconfig(
+ encryption_key,
+ );
+ }
+
+ late final _ZANO_PlainWallet_getAppconfigPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_getAppconfig');
+ late final _ZANO_PlainWallet_getAppconfig = _ZANO_PlainWallet_getAppconfigPtr
+ .asFunction<ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_setAppconfig(
+ ffi.Pointer<ffi.Char> conf_str,
+ ffi.Pointer<ffi.Char> encryption_key,
+ ) {
+ return _ZANO_PlainWallet_setAppconfig(
+ conf_str,
+ encryption_key,
+ );
+ }
+
+ late final _ZANO_PlainWallet_setAppconfigPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_setAppconfig');
+ late final _ZANO_PlainWallet_setAppconfig =
+ _ZANO_PlainWallet_setAppconfigPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_generateRandomKey(
+ int lenght,
+ ) {
+ return _ZANO_PlainWallet_generateRandomKey(
+ lenght,
+ );
+ }
+
+ late final _ZANO_PlainWallet_generateRandomKeyPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Uint64)>>(
+ 'ZANO_PlainWallet_generateRandomKey');
+ late final _ZANO_PlainWallet_generateRandomKey =
+ _ZANO_PlainWallet_generateRandomKeyPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(int)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_getLogsBuffer() {
+ return _ZANO_PlainWallet_getLogsBuffer();
+ }
+
+ late final _ZANO_PlainWallet_getLogsBufferPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
+ 'ZANO_PlainWallet_getLogsBuffer');
+ late final _ZANO_PlainWallet_getLogsBuffer =
+ _ZANO_PlainWallet_getLogsBufferPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function()>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_truncateLog() {
+ return _ZANO_PlainWallet_truncateLog();
+ }
+
+ late final _ZANO_PlainWallet_truncateLogPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
+ 'ZANO_PlainWallet_truncateLog');
+ late final _ZANO_PlainWallet_truncateLog = _ZANO_PlainWallet_truncateLogPtr
+ .asFunction<ffi.Pointer<ffi.Char> Function()>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_getConnectivityStatus() {
+ return _ZANO_PlainWallet_getConnectivityStatus();
+ }
+
+ late final _ZANO_PlainWallet_getConnectivityStatusPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
+ 'ZANO_PlainWallet_getConnectivityStatus');
+ late final _ZANO_PlainWallet_getConnectivityStatus =
+ _ZANO_PlainWallet_getConnectivityStatusPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function()>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_open(
+ ffi.Pointer<ffi.Char> path,
+ ffi.Pointer<ffi.Char> password,
+ ) {
+ return _ZANO_PlainWallet_open(
+ path,
+ password,
+ );
+ }
+
+ late final _ZANO_PlainWallet_openPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_open');
+ late final _ZANO_PlainWallet_open = _ZANO_PlainWallet_openPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_restore(
+ ffi.Pointer<ffi.Char> seed,
+ ffi.Pointer<ffi.Char> path,
+ ffi.Pointer<ffi.Char> password,
+ ffi.Pointer<ffi.Char> seed_password,
+ ) {
+ return _ZANO_PlainWallet_restore(
+ seed,
+ path,
+ password,
+ seed_password,
+ );
+ }
+
+ late final _ZANO_PlainWallet_restorePtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_restore');
+ late final _ZANO_PlainWallet_restore =
+ _ZANO_PlainWallet_restorePtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_generate(
+ ffi.Pointer<ffi.Char> path,
+ ffi.Pointer<ffi.Char> password,
+ ) {
+ return _ZANO_PlainWallet_generate(
+ path,
+ password,
+ );
+ }
+
+ late final _ZANO_PlainWallet_generatePtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>,
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_generate');
+ late final _ZANO_PlainWallet_generate =
+ _ZANO_PlainWallet_generatePtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_getOpenWallets() {
+ return _ZANO_PlainWallet_getOpenWallets();
+ }
+
+ late final _ZANO_PlainWallet_getOpenWalletsPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
+ 'ZANO_PlainWallet_getOpenWallets');
+ late final _ZANO_PlainWallet_getOpenWallets =
+ _ZANO_PlainWallet_getOpenWalletsPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function()>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_getWalletStatus(
+ int h,
+ ) {
+ return _ZANO_PlainWallet_getWalletStatus(
+ h,
+ );
+ }
+
+ late final _ZANO_PlainWallet_getWalletStatusPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int64)>>(
+ 'ZANO_PlainWallet_getWalletStatus');
+ late final _ZANO_PlainWallet_getWalletStatus =
+ _ZANO_PlainWallet_getWalletStatusPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(int)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_closeWallet(
+ int h,
+ ) {
+ return _ZANO_PlainWallet_closeWallet(
+ h,
+ );
+ }
+
+ late final _ZANO_PlainWallet_closeWalletPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int64)>>(
+ 'ZANO_PlainWallet_closeWallet');
+ late final _ZANO_PlainWallet_closeWallet = _ZANO_PlainWallet_closeWalletPtr
+ .asFunction<ffi.Pointer<ffi.Char> Function(int)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_invoke(
+ int h,
+ ffi.Pointer<ffi.Char> params,
+ ) {
+ return _ZANO_PlainWallet_invoke(
+ h,
+ params,
+ );
+ }
+
+ late final _ZANO_PlainWallet_invokePtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Int64, ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_invoke');
+ late final _ZANO_PlainWallet_invoke = _ZANO_PlainWallet_invokePtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(int, ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_asyncCall(
+ ffi.Pointer<ffi.Char> method_name,
+ int instance_id,
+ ffi.Pointer<ffi.Char> params,
+ ) {
+ return _ZANO_PlainWallet_asyncCall(
+ method_name,
+ instance_id,
+ params,
+ );
+ }
+
+ late final _ZANO_PlainWallet_asyncCallPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>, ffi.Uint64,
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_asyncCall');
+ late final _ZANO_PlainWallet_asyncCall =
+ _ZANO_PlainWallet_asyncCallPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>, int, ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_tryPullResult(
+ int instance_id,
+ ) {
+ return _ZANO_PlainWallet_tryPullResult(
+ instance_id,
+ );
+ }
+
+ late final _ZANO_PlainWallet_tryPullResultPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Uint64)>>(
+ 'ZANO_PlainWallet_tryPullResult');
+ late final _ZANO_PlainWallet_tryPullResult =
+ _ZANO_PlainWallet_tryPullResultPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(int)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_syncCall(
+ ffi.Pointer<ffi.Char> method_name,
+ int instance_id,
+ ffi.Pointer<ffi.Char> params,
+ ) {
+ return _ZANO_PlainWallet_syncCall(
+ method_name,
+ instance_id,
+ params,
+ );
+ }
+
+ late final _ZANO_PlainWallet_syncCallPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(ffi.Pointer<ffi.Char>, ffi.Uint64,
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_syncCall');
+ late final _ZANO_PlainWallet_syncCall =
+ _ZANO_PlainWallet_syncCallPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(
+ ffi.Pointer<ffi.Char>, int, ffi.Pointer<ffi.Char>)>();
+
+ bool ZANO_PlainWallet_isWalletExist(
+ ffi.Pointer<ffi.Char> path,
+ ) {
+ return _ZANO_PlainWallet_isWalletExist(
+ path,
+ );
+ }
+
+ late final _ZANO_PlainWallet_isWalletExistPtr =
+ _lookup<ffi.NativeFunction<ffi.Bool Function(ffi.Pointer<ffi.Char>)>>(
+ 'ZANO_PlainWallet_isWalletExist');
+ late final _ZANO_PlainWallet_isWalletExist =
+ _ZANO_PlainWallet_isWalletExistPtr.asFunction<
+ bool Function(ffi.Pointer<ffi.Char>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_getWalletInfo(
+ int h,
+ ) {
+ return _ZANO_PlainWallet_getWalletInfo(
+ h,
+ );
+ }
+
+ late final _ZANO_PlainWallet_getWalletInfoPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int64)>>(
+ 'ZANO_PlainWallet_getWalletInfo');
+ late final _ZANO_PlainWallet_getWalletInfo =
+ _ZANO_PlainWallet_getWalletInfoPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(int)>();
+
+ ffi.Pointer<ffi.Char> ZANO_PlainWallet_resetWalletPassword(
+ int h,
+ ffi.Pointer<ffi.Char> password,
+ ) {
+ return _ZANO_PlainWallet_resetWalletPassword(
+ h,
+ password,
+ );
+ }
+
+ late final _ZANO_PlainWallet_resetWalletPasswordPtr = _lookup<
+ ffi.NativeFunction<
+ ffi.Pointer<ffi.Char> Function(ffi.Int64,
+ ffi.Pointer<ffi.Char>)>>('ZANO_PlainWallet_resetWalletPassword');
+ late final _ZANO_PlainWallet_resetWalletPassword =
+ _ZANO_PlainWallet_resetWalletPasswordPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function(int, ffi.Pointer<ffi.Char>)>();
+
+ int ZANO_PlainWallet_getCurrentTxFee(
+ int priority,
+ ) {
+ return _ZANO_PlainWallet_getCurrentTxFee(
+ priority,
+ );
+ }
+
+ late final _ZANO_PlainWallet_getCurrentTxFeePtr =
+ _lookup<ffi.NativeFunction<ffi.Uint64 Function(ffi.Uint64)>>(
+ 'ZANO_PlainWallet_getCurrentTxFee');
+ late final _ZANO_PlainWallet_getCurrentTxFee =
+ _ZANO_PlainWallet_getCurrentTxFeePtr.asFunction<int Function(int)>();
+
+ void ZANO_free(
+ ffi.Pointer<ffi.Void> ptr,
+ ) {
+ return _ZANO_free(
+ ptr,
+ );
+ }
+
+ late final _ZANO_freePtr =
+ _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
+ 'ZANO_free');
+ late final _ZANO_free =
+ _ZANO_freePtr.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
+
+ ffi.Pointer<ffi.Char> ZANO_checksum_wallet2_api_c_h() {
+ return _ZANO_checksum_wallet2_api_c_h();
+ }
+
+ late final _ZANO_checksum_wallet2_api_c_hPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
+ 'ZANO_checksum_wallet2_api_c_h');
+ late final _ZANO_checksum_wallet2_api_c_h = _ZANO_checksum_wallet2_api_c_hPtr
+ .asFunction<ffi.Pointer<ffi.Char> Function()>();
+
+ ffi.Pointer<ffi.Char> ZANO_checksum_wallet2_api_c_cpp() {
+ return _ZANO_checksum_wallet2_api_c_cpp();
+ }
+
+ late final _ZANO_checksum_wallet2_api_c_cppPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
+ 'ZANO_checksum_wallet2_api_c_cpp');
+ late final _ZANO_checksum_wallet2_api_c_cpp =
+ _ZANO_checksum_wallet2_api_c_cppPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function()>();
+
+ ffi.Pointer<ffi.Char> ZANO_checksum_wallet2_api_c_exp() {
+ return _ZANO_checksum_wallet2_api_c_exp();
+ }
+
+ late final _ZANO_checksum_wallet2_api_c_expPtr =
+ _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
+ 'ZANO_checksum_wallet2_api_c_exp');
+ late final _ZANO_checksum_wallet2_api_c_exp =
+ _ZANO_checksum_wallet2_api_c_expPtr.asFunction<
+ ffi.Pointer<ffi.Char> Function()>();
+}
diff --git a/impls/monero.dart/lib/zano.dart b/impls/monero.dart/lib/zano.dart
new file mode 100644
index 0000000..f17346a
--- /dev/null
+++ b/impls/monero.dart/lib/zano.dart
@@ -0,0 +1,688 @@
+
+// ignore_for_file: non_constant_identifier_names, camel_case_types
+
+import 'dart:ffi';
+import 'dart:io';
+
+import 'package:ffi/ffi.dart';
+import 'package:monero/src/generated_bindings_zano.g.dart';
+
+export 'src/checksum_monero.dart';
+
+typedef PendingTransaction = Pointer<Void>;
+
+ZanoC? lib;
+String libPath = (() {
+ if (Platform.isWindows) return 'zano_libwallet2_api_c.dll';
+ if (Platform.isMacOS) return 'zano_libwallet2_api_c.dylib';
+ if (Platform.isIOS) return 'ZanoWallet.framework/ZanoWallet';
+ if (Platform.isAndroid) return 'libzano_libwallet2_api_c.so';
+ return 'zano_libwallet2_api_c.so';
+})();
+
+Map<String, List<int>> debugCallLength = {};
+
+final defaultSeparatorStr = ";";
+final defaultSeparator = defaultSeparatorStr.toNativeUtf8().cast<Char>();
+/* we don't call .free here, this comment serves one purpose - so the numbers match :) */
+
+final Stopwatch sw = Stopwatch()..start();
+
+bool printStarts = false;
+
+void Function(String call)? debugStart = (call) {
+ try {
+ if (printStarts) print("MONERO: $call");
+ debugCallLength[call] ??= <int>[];
+ debugCallLength[call]!.add(sw.elapsedMicroseconds);
+ } catch (e) {}
+};
+void debugChores() {
+ for (var key in debugCallLength.keys) {
+ if (debugCallLength[key]!.length > 1000000) {
+ final elm =
+ debugCallLength[key]!.reduce((value, element) => value + element);
+ debugCallLength[key]!.clear();
+ debugCallLength["${key}_1M"] ??= <int>[];
+ debugCallLength["${key}_1M"]!.add(elm);
+ }
+ }
+}
+
+int debugCount = 0;
+
+void Function(String call)? debugEnd = (call) {
+ try {
+ final id = debugCallLength[call]!.length - 1;
+ if (++debugCount > 1000000) {
+ debugCount = 0;
+ debugChores();
+ }
+ debugCallLength[call]![id] =
+ sw.elapsedMicroseconds - debugCallLength[call]![id];
+ } catch (e) {}
+};
+void Function(String call, dynamic error)? errorHandler = (call, error) {
+ print("$call: $error");
+};
+
+// extern ADDAPI const char* ZANO_PlainWallet_init(const char* address, const char* working_dir, int log_level);
+String PlainWallet_init(String address, String working_dir, int log_level) {
+ debugStart?.call('ZANO_PlainWallet_init');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final address_ = address.toNativeUtf8();
+ final working_dir_ = working_dir.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_init(address_.cast(), working_dir_.cast(), log_level);
+ calloc.free(address_);
+ calloc.free(working_dir_);
+ debugEnd?.call('ZANO_PlainWallet_init');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_init');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_init', e);
+ debugEnd?.call('ZANO_PlainWallet_init');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_init2(const char* ip, const char* port, const char* working_dir, int log_level);
+String PlainWallet_init2(String ip, String port, String working_dir, int log_level) {
+ debugStart?.call('ZANO_PlainWallet_init2');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final ip_ = ip.toNativeUtf8();
+ final port_ = port.toNativeUtf8();
+ final working_dir_ = working_dir.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_init2(ip_.cast(), port_.cast(), working_dir_.cast(), log_level);
+ calloc.free(ip_);
+ calloc.free(port_);
+ calloc.free(working_dir_);
+ debugEnd?.call('ZANO_PlainWallet_init2');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_init2');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_init2', e);
+ debugEnd?.call('ZANO_PlainWallet_init2');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_reset();
+String PlainWallet_reset() {
+ debugStart?.call('ZANO_PlainWallet_reset');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_reset();
+ debugEnd?.call('ZANO_PlainWallet_reset');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_reset');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_reset', e);
+ debugEnd?.call('ZANO_PlainWallet_reset');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_setLogLevel(int log_level);
+String PlainWallet_setLogLevel(int log_level) {
+ debugStart?.call('ZANO_PlainWallet_setLogLevel');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_setLogLevel(log_level);
+ debugEnd?.call('ZANO_PlainWallet_setLogLevel');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_setLogLevel');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_setLogLevel', e);
+ debugEnd?.call('ZANO_PlainWallet_setLogLevel');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_getVersion();
+String PlainWallet_getVersion() {
+ debugStart?.call('ZANO_PlainWallet_getVersion');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_getVersion();
+ debugEnd?.call('ZANO_PlainWallet_getVersion');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_getVersion');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_getVersion', e);
+ debugEnd?.call('ZANO_PlainWallet_getVersion');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_getWalletFiles();
+String PlainWallet_getWalletFiles() {
+ debugStart?.call('ZANO_PlainWallet_getWalletFiles');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_getWalletFiles();
+ debugEnd?.call('ZANO_PlainWallet_getWalletFiles');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_getWalletFiles');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_getWalletFiles', e);
+ debugEnd?.call('ZANO_PlainWallet_getWalletFiles');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_getExportPrivateInfo(const char* target_dir);
+String PlainWallet_getExportPrivateInfo(String target_dir) {
+ debugStart?.call('ZANO_PlainWallet_getExportPrivateInfo');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final target_dir_ = target_dir.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_getExportPrivateInfo(target_dir_.cast());
+ calloc.free(target_dir_);
+ debugEnd?.call('ZANO_PlainWallet_getExportPrivateInfo');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_getExportPrivateInfo');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_getExportPrivateInfo', e);
+ debugEnd?.call('ZANO_PlainWallet_getExportPrivateInfo');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_deleteWallet(const char* file_name);
+String PlainWallet_deleteWallet(String file_name) {
+ debugStart?.call('ZANO_PlainWallet_deleteWallet');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final file_name_ = file_name.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_deleteWallet(file_name_.cast());
+ calloc.free(file_name_);
+ debugEnd?.call('ZANO_PlainWallet_deleteWallet');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_deleteWallet');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_deleteWallet', e);
+ debugEnd?.call('ZANO_PlainWallet_deleteWallet');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_getAddressInfo(const char* addr);
+String PlainWallet_getAddressInfo(String addr) {
+ debugStart?.call('ZANO_PlainWallet_getAddressInfo');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final addr_ = addr.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_getAddressInfo(addr_.cast());
+ calloc.free(addr_);
+ debugEnd?.call('ZANO_PlainWallet_getAddressInfo');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_getAddressInfo');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_getAddressInfo', e);
+ debugEnd?.call('ZANO_PlainWallet_getAddressInfo');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_getAppconfig(const char* encryption_key);
+String PlainWallet_getAppconfig(String encryption_key) {
+ debugStart?.call('ZANO_PlainWallet_getAppconfig');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final encryption_key_ = encryption_key.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_getAppconfig(encryption_key_.cast());
+ calloc.free(encryption_key_);
+ debugEnd?.call('ZANO_PlainWallet_getAppconfig');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_getAppconfig');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_getAppconfig', e);
+ debugEnd?.call('ZANO_PlainWallet_getAppconfig');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_setAppconfig(const char* conf_str, const char* encryption_key);
+String PlainWallet_setAppconfig(String conf_str, String encryption_key) {
+ debugStart?.call('ZANO_PlainWallet_setAppconfig');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final conf_str_ = conf_str.toNativeUtf8();
+ final encryption_key_ = encryption_key.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_setAppconfig(conf_str_.cast(), encryption_key_.cast());
+ calloc.free(conf_str_);
+ calloc.free(encryption_key_);
+ debugEnd?.call('ZANO_PlainWallet_setAppconfig');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_setAppconfig');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_setAppconfig', e);
+ debugEnd?.call('ZANO_PlainWallet_setAppconfig');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_generateRandomKey(uint64_t lenght);
+String PlainWallet_generateRandomKey(int length) {
+ debugStart?.call('ZANO_PlainWallet_generateRandomKey');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_generateRandomKey(length);
+ debugEnd?.call('ZANO_PlainWallet_generateRandomKey');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_generateRandomKey');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_generateRandomKey', e);
+ debugEnd?.call('ZANO_PlainWallet_generateRandomKey');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_getLogsBuffer();
+String PlainWallet_getLogsBuffer() {
+ debugStart?.call('ZANO_PlainWallet_getLogsBuffer');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_getLogsBuffer();
+ debugEnd?.call('ZANO_PlainWallet_getLogsBuffer');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_getLogsBuffer');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_getLogsBuffer', e);
+ debugEnd?.call('ZANO_PlainWallet_getLogsBuffer');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_truncateLog();
+String PlainWallet_truncateLog() {
+ debugStart?.call('ZANO_PlainWallet_truncateLog');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_truncateLog();
+ debugEnd?.call('ZANO_PlainWallet_truncateLog');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_truncateLog');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_truncateLog', e);
+ debugEnd?.call('ZANO_PlainWallet_truncateLog');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_getConnectivityStatus();
+String PlainWallet_getConnectivityStatus() {
+ debugStart?.call('ZANO_PlainWallet_getConnectivityStatus');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_getConnectivityStatus();
+ debugEnd?.call('ZANO_PlainWallet_getConnectivityStatus');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_getConnectivityStatus');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_getConnectivityStatus', e);
+ debugEnd?.call('ZANO_PlainWallet_getConnectivityStatus');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_open(const char* path, const char* password);
+String PlainWallet_open(String path, String password) {
+ debugStart?.call('ZANO_PlainWallet_open');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final path_ = path.toNativeUtf8();
+ final password_ = password.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_open(path_.cast(), password_.cast());
+ calloc.free(path_);
+ calloc.free(password_);
+ debugEnd?.call('ZANO_PlainWallet_open');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_open');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_open', e);
+ debugEnd?.call('ZANO_PlainWallet_open');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_restore(const char* seed, const char* path, const char* password, const char* seed_password);
+String PlainWallet_restore(String seed, String path, String password, String seed_password) {
+ debugStart?.call('ZANO_PlainWallet_restore');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final seed_ = seed.toNativeUtf8();
+ final path_ = path.toNativeUtf8();
+ final password_ = password.toNativeUtf8();
+ final seed_password_ = seed_password.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_restore(seed_.cast(), path_.cast(), password_.cast(), seed_password_.cast());
+ calloc.free(seed_);
+ calloc.free(path_);
+ calloc.free(password_);
+ calloc.free(seed_password_);
+ debugEnd?.call('ZANO_PlainWallet_restore');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_restore');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_restore', e);
+ debugEnd?.call('ZANO_PlainWallet_restore');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_generate(const char* path, const char* password);
+String PlainWallet_generate(String path, String password) {
+ debugStart?.call('ZANO_PlainWallet_generate');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final path_ = path.toNativeUtf8();
+ final password_ = password.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_generate(path_.cast(), password_.cast());
+ calloc.free(path_);
+ calloc.free(password_);
+ debugEnd?.call('ZANO_PlainWallet_generate');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_generate');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_generate', e);
+ debugEnd?.call('ZANO_PlainWallet_generate');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_getOpenWallets();
+String PlainWallet_getOpenWallets() {
+ debugStart?.call('ZANO_PlainWallet_getOpenWallets');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_getOpenWallets();
+ debugEnd?.call('ZANO_PlainWallet_getOpenWallets');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_getOpenWallets');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_getOpenWallets', e);
+ debugEnd?.call('ZANO_PlainWallet_getOpenWallets');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_getWalletStatus(int64_t h);
+String PlainWallet_getWalletStatus(int h) {
+ debugStart?.call('ZANO_PlainWallet_getWalletStatus');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_getWalletStatus(h);
+ debugEnd?.call('ZANO_PlainWallet_getWalletStatus');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_getWalletStatus');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_getWalletStatus', e);
+ debugEnd?.call('ZANO_PlainWallet_getWalletStatus');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_closeWallet(int64_t h);
+String PlainWallet_closeWallet(int h) {
+ debugStart?.call('ZANO_PlainWallet_closeWallet');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_closeWallet(h);
+ debugEnd?.call('ZANO_PlainWallet_closeWallet');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_closeWallet');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_closeWallet', e);
+ debugEnd?.call('ZANO_PlainWallet_closeWallet');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_invoke(int64_t h, const char* params);
+String PlainWallet_invoke(int h, String params) {
+ debugStart?.call('ZANO_PlainWallet_invoke');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final params_ = params.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_invoke(h, params_.cast());
+ calloc.free(params_);
+ debugEnd?.call('ZANO_PlainWallet_invoke');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_invoke');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_invoke', e);
+ debugEnd?.call('ZANO_PlainWallet_invoke');
+ return "";
+ }
+}
+
+// extern ADDAPI const char* ZANO_PlainWallet_asyncCall(const char* method_name, uint64_t instance_id, const char* params);
+String PlainWallet_asyncCall(String method_name, int h, String params) {
+ debugStart?.call('ZANO_PlainWallet_asyncCall');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final params_ = params.toNativeUtf8();
+ final method_name_ = method_name.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_asyncCall(method_name_.cast(), h, params_.cast());
+ calloc.free(params_);
+ calloc.free(method_name_);
+ debugEnd?.call('ZANO_PlainWallet_asyncCall');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_asyncCall');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_asyncCall', e);
+ debugEnd?.call('ZANO_PlainWallet_asyncCall');
+ return "";
+ }
+}
+
+// extern ADDAPI const char* ZANO_PlainWallet_tryPullResult(uint64_t instance_id);
+String PlainWallet_tryPullResult(int instance_id) {
+ debugStart?.call('ZANO_PlainWallet_tryPullResult');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_tryPullResult(instance_id);
+ debugEnd?.call('ZANO_PlainWallet_tryPullResult');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_tryPullResult');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_tryPullResult', e);
+ debugEnd?.call('ZANO_PlainWallet_tryPullResult');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_syncCall(const char* method_name, uint64_t instance_id, const char* params);
+String PlainWallet_syncCall(String method_name, int instance_id, String params) {
+ debugStart?.call('ZANO_PlainWallet_syncCall');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final method_name_ = method_name.toNativeUtf8();
+ final params_ = params.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_syncCall(method_name_.cast(), instance_id, params_.cast());
+ calloc.free(method_name_);
+ calloc.free(params_);
+ debugEnd?.call('ZANO_PlainWallet_syncCall');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_syncCall');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_syncCall', e);
+ debugEnd?.call('ZANO_PlainWallet_syncCall');
+ return "";
+ }
+}
+// extern ADDAPI bool ZANO_PlainWallet_isWalletExist(const char* path);
+bool PlainWallet_isWalletExist(String path) {
+ debugStart?.call('ZANO_PlainWallet_isWalletExist');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final path_ = path.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_isWalletExist(path_.cast());
+ calloc.free(path_);
+ debugEnd?.call('ZANO_PlainWallet_isWalletExist');
+ return txid;
+}
+// extern ADDAPI const char* ZANO_PlainWallet_getWalletInfo(int64_t h);
+String PlainWallet_getWalletInfo(int h) {
+ debugStart?.call('ZANO_PlainWallet_getWalletInfo');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_getWalletInfo(h);
+ debugEnd?.call('ZANO_PlainWallet_getWalletInfo');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_getWalletInfo');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_getWalletInfo', e);
+ debugEnd?.call('ZANO_PlainWallet_getWalletInfo');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_PlainWallet_resetWalletPassword(int64_t h, const char* password);
+String PlainWallet_resetWalletPassword(int h, String password) {
+ debugStart?.call('ZANO_PlainWallet_resetWalletPassword');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final password_ = password.toNativeUtf8();
+ final txid = lib!.ZANO_PlainWallet_resetWalletPassword(h, password_.cast());
+ calloc.free(password_);
+ debugEnd?.call('ZANO_PlainWallet_resetWalletPassword');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_PlainWallet_resetWalletPassword');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_PlainWallet_resetWalletPassword', e);
+ debugEnd?.call('ZANO_PlainWallet_resetWalletPassword');
+ return "";
+ }
+}
+// extern ADDAPI uint64_t ZANO_PlainWallet_getCurrentTxFee(uint64_t priority);
+int PlainWallet_getCurrentTxFee(int priority) {
+ debugStart?.call('ZANO_PlainWallet_getCurrentTxFee');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_PlainWallet_getCurrentTxFee(priority);
+ debugEnd?.call('ZANO_PlainWallet_getCurrentTxFee');
+ return txid;
+}
+
+void ZANO_free(Pointer<Void> wlptr) {
+ debugStart?.call('ZANO_free');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+
+ final s = lib!.ZANO_free(wlptr);
+ debugEnd?.call('ZANO_free');
+ return s;
+}
+
+// extern ADDAPI const char* ZANO_checksum_wallet2_api_c_h();
+String checksum_wallet2_api_c_h() {
+ debugStart?.call('ZANO_checksum_wallet2_api_c_h');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_checksum_wallet2_api_c_h();
+ debugEnd?.call('ZANO_checksum_wallet2_api_c_h');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_checksum_wallet2_api_c_h');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_checksum_wallet2_api_c_h', e);
+ debugEnd?.call('ZANO_checksum_wallet2_api_c_h');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_checksum_wallet2_api_c_cpp();
+String checksum_wallet2_api_c_cpp() {
+ debugStart?.call('ZANO_checksum_wallet2_api_c_cpp');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_checksum_wallet2_api_c_cpp();
+ debugEnd?.call('ZANO_checksum_wallet2_api_c_cpp');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_checksum_wallet2_api_c_cpp');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_checksum_wallet2_api_c_cpp', e);
+ debugEnd?.call('ZANO_checksum_wallet2_api_c_cpp');
+ return "";
+ }
+}
+// extern ADDAPI const char* ZANO_checksum_wallet2_api_c_exp();
+String checksum_wallet2_api_c_exp() {
+ debugStart?.call('ZANO_checksum_wallet2_api_c_exp');
+ lib ??= ZanoC(DynamicLibrary.open(libPath));
+ final txid = lib!.ZANO_checksum_wallet2_api_c_exp();
+ debugEnd?.call('ZANO_checksum_wallet2_api_c_exp');
+ try {
+ final strPtr = txid.cast<Utf8>();
+ final str = strPtr.toDartString();
+ ZANO_free(strPtr.cast());
+ debugEnd?.call('ZANO_checksum_wallet2_api_c_exp');
+ return str;
+ } catch (e) {
+ errorHandler?.call('ZANO_checksum_wallet2_api_c_exp', e);
+ debugEnd?.call('ZANO_checksum_wallet2_api_c_exp');
+ return "";
+ }
+} \ No newline at end of file