* 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>
688 lines
25 KiB
Dart
688 lines
25 KiB
Dart
|
|
// 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 "";
|
|
}
|
|
} |