diff --git a/.gitignore b/.gitignore index 0bd3604..840c0b1 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ migrate_working_dir/ # Flutter/Dart/Pub related # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. -/pubspec.lock + **/doc/api/ .dart_tool/ .packages @@ -33,7 +33,6 @@ bdk.*/ *.xcframework android/src/main/jniLibs/ rust/target/ -rust/Cargo.lock rust/output.log diff --git a/CHANGELOG.md b/CHANGELOG.md index a0206d6..babe395 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,17 @@ -## [0.29.3] +## [0.30.0] +Updated Rust and Flutter dependencies. macOs support bug resolved +#### APIs added +- Add BIP-86 descriptor template + + ## [0.29.2] Support macOs and unit testing. Updated flutter dependencies. ## [0.29.1] - Updated Rust and Flutter dependencies. Exposed strongly-typed exceptions. diff --git a/README.md b/README.md index 3570972..3439fec 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ To use the `bdk_flutter` package in your project, add it as a dependency in your ```dart dependencies: - bdk_flutter: ^0.29.3 + bdk_flutter: ^0.30.0 ``` ### Examples @@ -176,9 +176,9 @@ final internalAddress = The latest API documentation is available [here](https://pub.dev/documentation/bdk_flutter/latest/bdk_flutter/bdk_flutter-library.html) -### Example Projects +### Example Projects -- **\*BDK Flutter Demo App:** The [BDK Flutter Demo App](https://github.com/LtbLightning/bdk-flutter-quickstart) +- **\*BDK Flutter Demo App:** The [BDK Flutter Demo App](https://github.com/LtbLightning/bdk-flutter-demo-app) is a simple bitcoin app built in flutter to serve as a reference app to demonstrate `bdk-flutter` api usage. ### How to build diff --git a/assets/release.config.txt b/assets/release.config.txt index 8e1eb72..b75e7fd 100644 --- a/assets/release.config.txt +++ b/assets/release.config.txt @@ -1,2 +1,2 @@ -TAG_VERSION=0.29.3 -REPOSITORY_URL=https://github.com/LtbLightning/test-pub/releases/download/ \ No newline at end of file +TAG_VERSION=0.30.0 +REPOSITORY_URL=https://github.com/LtbLightning/bdk-flutter/releases/download/ \ No newline at end of file diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 6fbe421..77b8e00 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -154,7 +154,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a..a6b826d 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ { print(" fee: ${e.fee}"); print(" received: ${e.received}"); print(" send: ${e.sent}"); - print(" output address: ${txOut.last.scriptPubkey.internal}"); + print(" output address: ${txOut.last.scriptPubkey.inner}"); print("==========================="); } } @@ -100,7 +100,7 @@ class _SimpleWalletState extends State { } print(" =============TxOut=============="); for (var e in txOut) { - print(" script: ${e.scriptPubkey.internal}"); + print(" script: ${e.scriptPubkey.inner}"); print(" value: ${e.value}"); } print("========================================"); @@ -129,7 +129,7 @@ class _SimpleWalletState extends State { print( "outPoint: { txid:${e.outpoint.txid}, vout: ${e.outpoint.vout} } "); print( - "txout: { address:${e.txout.scriptPubkey.internal.toString()}, value: ${e.txout.value} }"); + "txout: { address:${e.txout.scriptPubkey.inner.toString()}, value: ${e.txout.value} }"); print("==========================="); } } @@ -168,6 +168,7 @@ class _SimpleWalletState extends State { debugShowCheckedModeBanner: false, home: Scaffold( appBar: AppBar( + backgroundColor: Colors.blue, elevation: 0, centerTitle: false, title: const Text('Bdk Wallet', diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock index 38129ee..93eab81 100644 --- a/example/macos/Podfile.lock +++ b/example/macos/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - bdk_flutter (0.29.3) + - bdk_flutter (0.30.0) - FlutterMacOS (1.0.0) DEPENDENCIES: @@ -13,9 +13,9 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral SPEC CHECKSUMS: - bdk_flutter: 97520dcbbc489086a08ada5d2be08c3020563c78 + bdk_flutter: 0e9b59c086f99106db9ab85bc51495482e4b3653 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367 -COCOAPODS: 1.13.0 +COCOAPODS: 1.14.3 diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/example/macos/Runner.xcodeproj/project.pbxproj index cc47325..a927ec0 100644 --- a/example/macos/Runner.xcodeproj/project.pbxproj +++ b/example/macos/Runner.xcodeproj/project.pbxproj @@ -259,7 +259,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 331C80D4294CF70F00263BE5 = { diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 372af17..36d2e39 100644 --- a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ main() async { }); test('verify scriptPubKey ()', () async { final res = await address.scriptPubKey(); - expect(res.internal, script); + expect(res.inner, script); }); test('verify scriptPubKey type()', () async { final res = await address.scriptPubKey(); - expect(res.internal, isA()); + expect(res.inner, isA()); }); test('verify network()', () async { final res = await address.network(); diff --git a/ios/Classes/bindings.h b/ios/Classes/bindings.h index f6800ef..25d6a0e 100644 --- a/ios/Classes/bindings.h +++ b/ios/Classes/bindings.h @@ -76,7 +76,7 @@ typedef struct wire_BlockchainConfig { } wire_BlockchainConfig; typedef struct wire_Script { - struct wire_uint_8_list *internal; + struct wire_uint_8_list *inner; } wire_Script; typedef struct wire_ScriptAmount { @@ -341,6 +341,17 @@ void wire_new_bip84_public__static_method__Api(int64_t port_, int32_t network, struct wire_uint_8_list *fingerprint); +void wire_new_bip86_descriptor__static_method__Api(int64_t port_, + int32_t key_chain_kind, + struct wire_uint_8_list *secret_key, + int32_t network); + +void wire_new_bip86_public__static_method__Api(int64_t port_, + int32_t key_chain_kind, + struct wire_uint_8_list *public_key, + int32_t network, + struct wire_uint_8_list *fingerprint); + void wire_descriptor_as_string_private__static_method__Api(int64_t port_, struct wire_uint_8_list *descriptor, int32_t network); @@ -559,6 +570,8 @@ static int64_t dummy_method_to_enforce_bundling(void) { dummy_var ^= ((int64_t) (void*) wire_new_bip49_public__static_method__Api); dummy_var ^= ((int64_t) (void*) wire_new_bip84_descriptor__static_method__Api); dummy_var ^= ((int64_t) (void*) wire_new_bip84_public__static_method__Api); + dummy_var ^= ((int64_t) (void*) wire_new_bip86_descriptor__static_method__Api); + dummy_var ^= ((int64_t) (void*) wire_new_bip86_public__static_method__Api); dummy_var ^= ((int64_t) (void*) wire_descriptor_as_string_private__static_method__Api); dummy_var ^= ((int64_t) (void*) wire_descriptor_as_string__static_method__Api); dummy_var ^= ((int64_t) (void*) wire_max_satisfaction_weight__static_method__Api); diff --git a/lib/src/generated/bindings.dart b/lib/src/generated/bindings.dart index 1e5f7bc..9d3d692 100644 --- a/lib/src/generated/bindings.dart +++ b/lib/src/generated/bindings.dart @@ -1,5 +1,5 @@ // AUTO GENERATED FILE, DO NOT EDIT. -// Generated by `flutter_rust_bridge`@ 1.82.1. +// Generated by `flutter_rust_bridge`@ 1.82.6. // ignore_for_file: non_constant_identifier_names, unused_element, duplicate_ignore, directives_ordering, curly_braces_in_flow_control_structures, unnecessary_lambdas, slash_for_doc_comments, prefer_const_literals_to_create_immutables, implicit_dynamic_list_literal, duplicate_import, unused_import, unnecessary_import, prefer_single_quotes, prefer_const_constructors, use_super_parameters, always_use_package_imports, annotate_overrides, invalid_use_of_protected_member, constant_identifier_names, invalid_use_of_internal_member, prefer_is_empty, unnecessary_const import "bridge_definitions.dart"; @@ -837,6 +837,61 @@ class RustBdkFfiImpl implements RustBdkFfi { argNames: ["keyChainKind", "publicKey", "network", "fingerprint"], ); + Future newBip86DescriptorStaticMethodApi( + {required KeychainKind keyChainKind, + required String secretKey, + required Network network, + dynamic hint}) { + var arg0 = api2wire_keychain_kind(keyChainKind); + var arg1 = _platform.api2wire_String(secretKey); + var arg2 = api2wire_network(network); + return _platform.executeNormal(FlutterRustBridgeTask( + callFfi: (port_) => _platform.inner + .wire_new_bip86_descriptor__static_method__Api( + port_, arg0, arg1, arg2), + parseSuccessData: _wire2api_String, + parseErrorData: _wire2api_error, + constMeta: kNewBip86DescriptorStaticMethodApiConstMeta, + argValues: [keyChainKind, secretKey, network], + hint: hint, + )); + } + + FlutterRustBridgeTaskConstMeta + get kNewBip86DescriptorStaticMethodApiConstMeta => + const FlutterRustBridgeTaskConstMeta( + debugName: "new_bip86_descriptor__static_method__Api", + argNames: ["keyChainKind", "secretKey", "network"], + ); + + Future newBip86PublicStaticMethodApi( + {required KeychainKind keyChainKind, + required String publicKey, + required Network network, + required String fingerprint, + dynamic hint}) { + var arg0 = api2wire_keychain_kind(keyChainKind); + var arg1 = _platform.api2wire_String(publicKey); + var arg2 = api2wire_network(network); + var arg3 = _platform.api2wire_String(fingerprint); + return _platform.executeNormal(FlutterRustBridgeTask( + callFfi: (port_) => _platform.inner + .wire_new_bip86_public__static_method__Api( + port_, arg0, arg1, arg2, arg3), + parseSuccessData: _wire2api_String, + parseErrorData: _wire2api_error, + constMeta: kNewBip86PublicStaticMethodApiConstMeta, + argValues: [keyChainKind, publicKey, network, fingerprint], + hint: hint, + )); + } + + FlutterRustBridgeTaskConstMeta get kNewBip86PublicStaticMethodApiConstMeta => + const FlutterRustBridgeTaskConstMeta( + debugName: "new_bip86_public__static_method__Api", + argNames: ["keyChainKind", "publicKey", "network", "fingerprint"], + ); + Future descriptorAsStringPrivateStaticMethodApi( {required String descriptor, required Network network, dynamic hint}) { var arg0 = _platform.api2wire_String(descriptor); @@ -1934,7 +1989,7 @@ class RustBdkFfiImpl implements RustBdkFfi { if (arr.length != 1) throw Exception('unexpected arr length: expect 1 but see ${arr.length}'); return Script( - internal: _wire2api_uint_8_list(arr[0]), + inner: _wire2api_uint_8_list(arr[0]), ); } @@ -2508,49 +2563,6 @@ class RustBdkFfiPlatform extends FlutterRustBridgeBase { wireObj.keychain = api2wire_keychain_kind(apiObj.keychain); } - void _api_fill_to_wire_opt_box_autoadd___record__out_point_String_usize( - (OutPoint, String, int)? apiObj, - ffi.Pointer wireObj) { - if (apiObj != null) - _api_fill_to_wire_box_autoadd___record__out_point_String_usize( - apiObj, wireObj); - } - - void _api_fill_to_wire_opt_box_autoadd_psbt_sig_hash_type( - PsbtSigHashType? apiObj, ffi.Pointer wireObj) { - if (apiObj != null) - _api_fill_to_wire_box_autoadd_psbt_sig_hash_type(apiObj, wireObj); - } - - void _api_fill_to_wire_opt_box_autoadd_rbf_value( - RbfValue? apiObj, ffi.Pointer wireObj) { - if (apiObj != null) - _api_fill_to_wire_box_autoadd_rbf_value(apiObj, wireObj); - } - - void _api_fill_to_wire_opt_box_autoadd_rpc_sync_params( - RpcSyncParams? apiObj, ffi.Pointer wireObj) { - if (apiObj != null) - _api_fill_to_wire_box_autoadd_rpc_sync_params(apiObj, wireObj); - } - - void _api_fill_to_wire_opt_box_autoadd_script( - Script? apiObj, ffi.Pointer wireObj) { - if (apiObj != null) _api_fill_to_wire_box_autoadd_script(apiObj, wireObj); - } - - void _api_fill_to_wire_opt_box_autoadd_sign_options( - SignOptions? apiObj, ffi.Pointer wireObj) { - if (apiObj != null) - _api_fill_to_wire_box_autoadd_sign_options(apiObj, wireObj); - } - - void _api_fill_to_wire_opt_box_autoadd_user_pass( - UserPass? apiObj, ffi.Pointer wireObj) { - if (apiObj != null) - _api_fill_to_wire_box_autoadd_user_pass(apiObj, wireObj); - } - void _api_fill_to_wire_out_point(OutPoint apiObj, wire_OutPoint wireObj) { wireObj.txid = api2wire_String(apiObj.txid); wireObj.vout = api2wire_u32(apiObj.vout); @@ -2595,7 +2607,7 @@ class RustBdkFfiPlatform extends FlutterRustBridgeBase { } void _api_fill_to_wire_script(Script apiObj, wire_Script wireObj) { - wireObj.internal = api2wire_uint_8_list(apiObj.internal); + wireObj.inner = api2wire_uint_8_list(apiObj.inner); } void _api_fill_to_wire_script_amount( @@ -3487,6 +3499,58 @@ class RustBdkFfiWire implements FlutterRustBridgeWireBase { void Function(int, int, ffi.Pointer, int, ffi.Pointer)>(); + void wire_new_bip86_descriptor__static_method__Api( + int port_, + int key_chain_kind, + ffi.Pointer secret_key, + int network, + ) { + return _wire_new_bip86_descriptor__static_method__Api( + port_, + key_chain_kind, + secret_key, + network, + ); + } + + late final _wire_new_bip86_descriptor__static_method__ApiPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Int64, ffi.Int32, ffi.Pointer, + ffi.Int32)>>('wire_new_bip86_descriptor__static_method__Api'); + late final _wire_new_bip86_descriptor__static_method__Api = + _wire_new_bip86_descriptor__static_method__ApiPtr.asFunction< + void Function(int, int, ffi.Pointer, int)>(); + + void wire_new_bip86_public__static_method__Api( + int port_, + int key_chain_kind, + ffi.Pointer public_key, + int network, + ffi.Pointer fingerprint, + ) { + return _wire_new_bip86_public__static_method__Api( + port_, + key_chain_kind, + public_key, + network, + fingerprint, + ); + } + + late final _wire_new_bip86_public__static_method__ApiPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Int32, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>( + 'wire_new_bip86_public__static_method__Api'); + late final _wire_new_bip86_public__static_method__Api = + _wire_new_bip86_public__static_method__ApiPtr.asFunction< + void Function(int, int, ffi.Pointer, int, + ffi.Pointer)>(); + void wire_descriptor_as_string_private__static_method__Api( int port_, ffi.Pointer descriptor, @@ -4673,7 +4737,7 @@ final class wire_BlockchainConfig extends ffi.Struct { } final class wire_Script extends ffi.Struct { - external ffi.Pointer internal; + external ffi.Pointer inner; } final class wire_ScriptAmount extends ffi.Struct { diff --git a/lib/src/generated/bridge_definitions.dart b/lib/src/generated/bridge_definitions.dart index 36cf766..2db4e46 100644 --- a/lib/src/generated/bridge_definitions.dart +++ b/lib/src/generated/bridge_definitions.dart @@ -1,5 +1,5 @@ // AUTO GENERATED FILE, DO NOT EDIT. -// Generated by `flutter_rust_bridge`@ 1.82.1. +// Generated by `flutter_rust_bridge`@ 1.82.6. // ignore_for_file: non_constant_identifier_names, unused_element, duplicate_ignore, directives_ordering, curly_braces_in_flow_control_structures, unnecessary_lambdas, slash_for_doc_comments, prefer_const_literals_to_create_immutables, implicit_dynamic_list_literal, duplicate_import, unused_import, unnecessary_import, prefer_single_quotes, prefer_const_constructors, use_super_parameters, always_use_package_imports, annotate_overrides, invalid_use_of_protected_member, constant_identifier_names, invalid_use_of_internal_member, prefer_is_empty, unnecessary_const import 'dart:convert'; @@ -219,6 +219,24 @@ abstract class RustBdkFfi { FlutterRustBridgeTaskConstMeta get kNewBip84PublicStaticMethodApiConstMeta; + Future newBip86DescriptorStaticMethodApi( + {required KeychainKind keyChainKind, + required String secretKey, + required Network network, + dynamic hint}); + + FlutterRustBridgeTaskConstMeta + get kNewBip86DescriptorStaticMethodApiConstMeta; + + Future newBip86PublicStaticMethodApi( + {required KeychainKind keyChainKind, + required String publicKey, + required Network network, + required String fingerprint, + dynamic hint}); + + FlutterRustBridgeTaskConstMeta get kNewBip86PublicStaticMethodApiConstMeta; + Future descriptorAsStringPrivateStaticMethodApi( {required String descriptor, required Network network, dynamic hint}); @@ -961,10 +979,10 @@ class RpcSyncParams { /// A Bitcoin script. class Script { - final Uint8List internal; + final Uint8List inner; const Script({ - required this.internal, + required this.inner, }); } diff --git a/lib/src/generated/bridge_definitions.freezed.dart b/lib/src/generated/bridge_definitions.freezed.dart index 832be29..411123d 100644 --- a/lib/src/generated/bridge_definitions.freezed.dart +++ b/lib/src/generated/bridge_definitions.freezed.dart @@ -113,7 +113,7 @@ class _$AddressIndex_NewImpl implements AddressIndex_New { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$AddressIndex_NewImpl); } @@ -229,7 +229,7 @@ class _$AddressIndex_LastUnusedImpl implements AddressIndex_LastUnused { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$AddressIndex_LastUnusedImpl); @@ -362,7 +362,7 @@ class _$AddressIndex_PeekImpl implements AddressIndex_Peek { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$AddressIndex_PeekImpl && @@ -509,7 +509,7 @@ class _$AddressIndex_ResetImpl implements AddressIndex_Reset { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$AddressIndex_ResetImpl && @@ -726,7 +726,7 @@ class _$BlockchainConfig_ElectrumImpl implements BlockchainConfig_Electrum { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$BlockchainConfig_ElectrumImpl && @@ -870,7 +870,7 @@ class _$BlockchainConfig_EsploraImpl implements BlockchainConfig_Esplora { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$BlockchainConfig_EsploraImpl && @@ -1012,7 +1012,7 @@ class _$BlockchainConfig_RpcImpl implements BlockchainConfig_Rpc { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$BlockchainConfig_RpcImpl && @@ -1204,7 +1204,7 @@ class _$DatabaseConfig_MemoryImpl implements DatabaseConfig_Memory { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$DatabaseConfig_MemoryImpl); @@ -1332,7 +1332,7 @@ class _$DatabaseConfig_SqliteImpl implements DatabaseConfig_Sqlite { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$DatabaseConfig_SqliteImpl && @@ -1474,7 +1474,7 @@ class _$DatabaseConfig_SledImpl implements DatabaseConfig_Sled { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$DatabaseConfig_SledImpl && @@ -1921,7 +1921,7 @@ class _$Error_InvalidU32BytesImpl implements Error_InvalidU32Bytes { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_InvalidU32BytesImpl && @@ -2303,7 +2303,7 @@ class _$Error_GenericImpl implements Error_Generic { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_GenericImpl && @@ -2667,7 +2667,7 @@ class _$Error_ScriptDoesntHaveAddressFormImpl } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_ScriptDoesntHaveAddressFormImpl); @@ -3017,7 +3017,7 @@ class _$Error_NoRecipientsImpl implements Error_NoRecipients { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_NoRecipientsImpl); } @@ -3366,7 +3366,7 @@ class _$Error_NoUtxosSelectedImpl implements Error_NoUtxosSelected { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_NoUtxosSelectedImpl); @@ -3735,7 +3735,7 @@ class _$Error_OutputBelowDustLimitImpl implements Error_OutputBelowDustLimit { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_OutputBelowDustLimitImpl && @@ -4129,7 +4129,7 @@ class _$Error_InsufficientFundsImpl implements Error_InsufficientFunds { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_InsufficientFundsImpl && @@ -4501,7 +4501,7 @@ class _$Error_BnBTotalTriesExceededImpl implements Error_BnBTotalTriesExceeded { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_BnBTotalTriesExceededImpl); @@ -4852,7 +4852,7 @@ class _$Error_BnBNoExactMatchImpl implements Error_BnBNoExactMatch { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_BnBNoExactMatchImpl); @@ -5201,7 +5201,7 @@ class _$Error_UnknownUtxoImpl implements Error_UnknownUtxo { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_UnknownUtxoImpl); } @@ -5551,7 +5551,7 @@ class _$Error_TransactionNotFoundImpl implements Error_TransactionNotFound { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_TransactionNotFoundImpl); @@ -5902,7 +5902,7 @@ class _$Error_TransactionConfirmedImpl implements Error_TransactionConfirmed { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_TransactionConfirmedImpl); @@ -6254,7 +6254,7 @@ class _$Error_IrreplaceableTransactionImpl } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_IrreplaceableTransactionImpl); @@ -6623,7 +6623,7 @@ class _$Error_FeeRateTooLowImpl implements Error_FeeRateTooLow { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_FeeRateTooLowImpl && @@ -7007,7 +7007,7 @@ class _$Error_FeeTooLowImpl implements Error_FeeTooLow { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_FeeTooLowImpl && @@ -7374,7 +7374,7 @@ class _$Error_FeeRateUnavailableImpl implements Error_FeeRateUnavailable { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_FeeRateUnavailableImpl); @@ -7743,7 +7743,7 @@ class _$Error_MissingKeyOriginImpl implements Error_MissingKeyOrigin { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_MissingKeyOriginImpl && @@ -8124,7 +8124,7 @@ class _$Error_KeyImpl implements Error_Key { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_KeyImpl && @@ -8487,7 +8487,7 @@ class _$Error_ChecksumMismatchImpl implements Error_ChecksumMismatch { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_ChecksumMismatchImpl); @@ -8857,7 +8857,7 @@ class _$Error_SpendingPolicyRequiredImpl } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_SpendingPolicyRequiredImpl && @@ -9243,7 +9243,7 @@ class _$Error_InvalidPolicyPathErrorImpl } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_InvalidPolicyPathErrorImpl && @@ -9626,7 +9626,7 @@ class _$Error_SignerImpl implements Error_Signer { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_SignerImpl && @@ -10016,7 +10016,7 @@ class _$Error_InvalidNetworkImpl implements Error_InvalidNetwork { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_InvalidNetworkImpl && @@ -10406,7 +10406,7 @@ class _$Error_InvalidOutpointImpl implements Error_InvalidOutpoint { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_InvalidOutpointImpl && @@ -10787,7 +10787,7 @@ class _$Error_DescriptorImpl implements Error_Descriptor { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_DescriptorImpl && @@ -11167,7 +11167,7 @@ class _$Error_EncodeImpl implements Error_Encode { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_EncodeImpl && @@ -11546,7 +11546,7 @@ class _$Error_MiniscriptImpl implements Error_Miniscript { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_MiniscriptImpl && @@ -11926,7 +11926,7 @@ class _$Error_MiniscriptPsbtImpl implements Error_MiniscriptPsbt { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_MiniscriptPsbtImpl && @@ -12308,7 +12308,7 @@ class _$Error_Bip32Impl implements Error_Bip32 { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_Bip32Impl && @@ -12687,7 +12687,7 @@ class _$Error_Secp256k1Impl implements Error_Secp256k1 { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_Secp256k1Impl && @@ -13067,7 +13067,7 @@ class _$Error_JsonImpl implements Error_Json { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_JsonImpl && @@ -13446,7 +13446,7 @@ class _$Error_HexImpl implements Error_Hex { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_HexImpl && @@ -13825,7 +13825,7 @@ class _$Error_PsbtImpl implements Error_Psbt { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_PsbtImpl && @@ -14204,7 +14204,7 @@ class _$Error_PsbtParseImpl implements Error_PsbtParse { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_PsbtParseImpl && @@ -14593,7 +14593,7 @@ class _$Error_MissingCachedScriptsImpl implements Error_MissingCachedScripts { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_MissingCachedScriptsImpl && @@ -14976,7 +14976,7 @@ class _$Error_ElectrumImpl implements Error_Electrum { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_ElectrumImpl && @@ -15356,7 +15356,7 @@ class _$Error_EsploraImpl implements Error_Esplora { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_EsploraImpl && @@ -15735,7 +15735,7 @@ class _$Error_SledImpl implements Error_Sled { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_SledImpl && @@ -16114,7 +16114,7 @@ class _$Error_RpcImpl implements Error_Rpc { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_RpcImpl && @@ -16493,7 +16493,7 @@ class _$Error_RusqliteImpl implements Error_Rusqlite { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Error_RusqliteImpl && @@ -16940,7 +16940,7 @@ class _$Payload_PubkeyHashImpl implements Payload_PubkeyHash { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Payload_PubkeyHashImpl && @@ -17085,7 +17085,7 @@ class _$Payload_ScriptHashImpl implements Payload_ScriptHash { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Payload_ScriptHashImpl && @@ -17243,7 +17243,7 @@ class _$Payload_WitnessProgramImpl implements Payload_WitnessProgram { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$Payload_WitnessProgramImpl && @@ -17434,7 +17434,7 @@ class _$RbfValue_RbfDefaultImpl implements RbfValue_RbfDefault { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$RbfValue_RbfDefaultImpl); @@ -17555,7 +17555,7 @@ class _$RbfValue_ValueImpl implements RbfValue_Value { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$RbfValue_ValueImpl && diff --git a/lib/src/root.dart b/lib/src/root.dart index d65dd49..5b42751 100644 --- a/lib/src/root.dart +++ b/lib/src/root.dart @@ -8,7 +8,7 @@ import 'utils/utils.dart'; Future setCurrentDirectory() async { try { - await AppConfig.setBuildDirectory("${Directory.current.path}/build"); + await Dylib.downloadUnitTestDylib(Directory.current.path); } catch (e) { print(e.toString()); } @@ -84,7 +84,6 @@ class Address { /// Blockchain backends module provides the implementation of a few commonly-used backends like Electrum, and Esplora. class Blockchain { - // final BlockchainInstance? _blockchain; final String _blockchain; Blockchain._(this._blockchain); @@ -373,6 +372,46 @@ class Descriptor { } } + ///BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*) + /// + /// Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv/tprv). + static Future newBip86( + {required DescriptorSecretKey secretKey, + required bridge.Network network, + required bridge.KeychainKind keychain}) async { + try { + final res = await bdkFfi.newBip86DescriptorStaticMethodApi( + secretKey: secretKey.asString(), + network: network, + keyChainKind: keychain); + return Descriptor._(res, network); + } on bridge.Error catch (e) { + throw handleBdkException(e); + } + } + + ///BIP86 public template. Expands to tr(key/{0,1}/*) + /// + /// This assumes that the key used has already been derived with m/86'/0'/0' for Mainnet or m/86'/1'/0' for Testnet. + /// + /// This template requires the parent fingerprint to populate correctly the metadata of PSBTs. + static Future newBip86Public( + {required DescriptorPublicKey publicKey, + required String fingerPrint, + required bridge.Network network, + required bridge.KeychainKind keychain}) async { + try { + final res = await bdkFfi.newBip86PublicStaticMethodApi( + keyChainKind: keychain, + publicKey: publicKey.asString(), + network: network, + fingerprint: fingerPrint); + return Descriptor._(res, network); + } on bridge.Error catch (e) { + throw handleBdkException(e); + } + } + ///Return the private version of the output descriptor if available, otherwise return the public version. Future asStringPrivate() async { try { @@ -712,7 +751,7 @@ class PartiallySignedTransaction { /// /// See [Bitcoin Wiki: Script](https://en.bitcoin.it/wiki/Script) for more information. class Script extends bridge.Script { - Script._({required super.internal}); + Script._({required super.inner}); /// [Script] constructor static Future create( @@ -727,7 +766,7 @@ class Script extends bridge.Script { } typed_data.Uint8List toBytes() { - return internal; + return inner; } } diff --git a/lib/src/utils/loader.dart b/lib/src/utils/loader.dart index b978f2d..88c0c92 100644 --- a/lib/src/utils/loader.dart +++ b/lib/src/utils/loader.dart @@ -7,37 +7,11 @@ import 'package:http/http.dart' as http; import '../generated/bindings.dart'; -DynamicLibrary _open() { - if (Platform.environment['FLUTTER_TEST'] == 'true') { - try { - DynamicLibrary.open(getTestBinaryUrl(Directory.current)); - } catch (e) { - throw Exception( - "Unable to open the dylib! Try calling setCurrentDirectory()"); - } - } - if (Platform.isIOS || Platform.isMacOS) { - return DynamicLibrary.executable(); - } else if (Platform.isAndroid) { - return DynamicLibrary.open("librust_bdk_ffi.so"); - } else { - throw Exception("not support platform:${Platform.operatingSystem}"); - } -} - -String getTestBinaryUrl(Directory dir) { - final assetsDir = '${dir.path}/build/unit_test_assets/${AppConfig.libName}'; - if (Platform.isMacOS) { - return "$assetsDir/macos/librust_bdk_ffi.dylib"; - } else { - throw Exception("not support platform:${Platform.operatingSystem}"); - } -} - -final bdkFfi = RustBdkFfiImpl(_open()); - -class AppConfig { +class Dylib { static Map? _config; + static String get libName => "unittest.bdk.${_config!['TAG_VERSION']}"; + static String get remoteUrl => + "${_config!['REPOSITORY_URL']}${_config!['TAG_VERSION']}/$libName.zip"; static Future _loadJsonAsset() async { final String content = await rootBundle .loadString("packages/bdk_flutter/assets/release.config.txt"); @@ -55,9 +29,9 @@ class AppConfig { _config = configMap; } - static Future setBuildDirectory(String dir) async { + static Future downloadUnitTestDylib(String currentDirectory) async { await _loadJsonAsset(); - final assetsDir = '$dir/unit_test_assets'; + final assetsDir = '$currentDirectory/build/unit_test_assets'; if (!(await Directory('$assetsDir/$libName').exists())) { try { final response = await http.get(Uri.parse(remoteUrl)); @@ -82,7 +56,32 @@ class AppConfig { } } - static String get libName => "unittest.bdk.${_config!['TAG_VERSION']}"; - static String get remoteUrl => - "${_config!['REPOSITORY_URL']}${_config!['TAG_VERSION']}/$libName.zip"; + static String _getUniTestDylibDir(Directory currentDirectory) { + final assetsDir = '${currentDirectory.path}/build/unit_test_assets'; + + if (Platform.isMacOS) { + return "$assetsDir/$libName/macos/librust_bdk_ffi.dylib"; + } else { + throw Exception("not support platform:${Platform.operatingSystem}"); + } + } + + static DynamicLibrary getDylib() { + if (Platform.environment['FLUTTER_TEST'] == 'true') { + try { + DynamicLibrary.open(_getUniTestDylibDir(Directory.current)); + } catch (e) { + throw Exception("Unable to open the unit test dylib!"); + } + } + if (Platform.isIOS || Platform.isMacOS) { + return DynamicLibrary.executable(); + } else if (Platform.isAndroid) { + return DynamicLibrary.open("librust_bdk_ffi.so"); + } else { + throw Exception("not support platform:${Platform.operatingSystem}"); + } + } } + +final bdkFfi = RustBdkFfiImpl(Dylib.getDylib()); diff --git a/macos/Classes/bindings.h b/macos/Classes/bindings.h index f6800ef..25d6a0e 100644 --- a/macos/Classes/bindings.h +++ b/macos/Classes/bindings.h @@ -76,7 +76,7 @@ typedef struct wire_BlockchainConfig { } wire_BlockchainConfig; typedef struct wire_Script { - struct wire_uint_8_list *internal; + struct wire_uint_8_list *inner; } wire_Script; typedef struct wire_ScriptAmount { @@ -341,6 +341,17 @@ void wire_new_bip84_public__static_method__Api(int64_t port_, int32_t network, struct wire_uint_8_list *fingerprint); +void wire_new_bip86_descriptor__static_method__Api(int64_t port_, + int32_t key_chain_kind, + struct wire_uint_8_list *secret_key, + int32_t network); + +void wire_new_bip86_public__static_method__Api(int64_t port_, + int32_t key_chain_kind, + struct wire_uint_8_list *public_key, + int32_t network, + struct wire_uint_8_list *fingerprint); + void wire_descriptor_as_string_private__static_method__Api(int64_t port_, struct wire_uint_8_list *descriptor, int32_t network); @@ -559,6 +570,8 @@ static int64_t dummy_method_to_enforce_bundling(void) { dummy_var ^= ((int64_t) (void*) wire_new_bip49_public__static_method__Api); dummy_var ^= ((int64_t) (void*) wire_new_bip84_descriptor__static_method__Api); dummy_var ^= ((int64_t) (void*) wire_new_bip84_public__static_method__Api); + dummy_var ^= ((int64_t) (void*) wire_new_bip86_descriptor__static_method__Api); + dummy_var ^= ((int64_t) (void*) wire_new_bip86_public__static_method__Api); dummy_var ^= ((int64_t) (void*) wire_descriptor_as_string_private__static_method__Api); dummy_var ^= ((int64_t) (void*) wire_descriptor_as_string__static_method__Api); dummy_var ^= ((int64_t) (void*) wire_max_satisfaction_weight__static_method__Api); diff --git a/macos/bdk_flutter.podspec b/macos/bdk_flutter.podspec index 92fd1a1..554e088 100644 --- a/macos/bdk_flutter.podspec +++ b/macos/bdk_flutter.podspec @@ -1,23 +1,3 @@ -release_tag = '0.29.3' -framework = 'rust_bdk_ffi.xcframework' -binary = "bdk_flutter_#{release_tag}" -url = "https://github.com/LtbLightning/bdk-flutter/releases/download/#{release_tag}/#{binary}.zip" -frameworks_dir = "frameworks/#{release_tag}" - -` -cd ../ -if [ ! -d #{binary} ]; then - curl -L #{url} -o #{binary}.zip - unzip #{binary}.zip - rm -rf __MACOSX - rm #{binary}.zip -fi - -if [ ! -d #{frameworks_dir} ]; then - mkdir -p #{frameworks_dir} - mv #{binary}/#{framework} #{frameworks_dir} -fi -` read_key_value_pairs = lambda do |file_path| pairs = {} @@ -55,7 +35,7 @@ fi Pod::Spec.new do |s| s.name = 'bdk_flutter' -s.version = '0.29.3' +s.version = "#{config['TAG_VERSION']}" s.summary = 'A Flutter library for the Bitcoin Development Kit (https://bitcoindevkit.org/)' s.description = <<-DESC A new Flutter project. diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..afca898 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,653 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + url: "https://pub.dev" + source: hosted + version: "64.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + url: "https://pub.dev" + source: hosted + version: "6.2.0" + archive: + dependency: "direct main" + description: + name: archive + sha256: "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d" + url: "https://pub.dev" + source: hosted + version: "3.4.10" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + build: + dependency: transitive + description: + name: build + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + build_cli_annotations: + dependency: transitive + description: + name: build_cli_annotations + sha256: b59d2769769efd6c9ff6d4c4cede0be115a566afc591705c2040b707534b1172 + url: "https://pub.dev" + source: hosted + version: "2.1.0" + build_config: + dependency: transitive + description: + name: build_config + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + url: "https://pub.dev" + source: hosted + version: "1.1.1" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" + url: "https://pub.dev" + source: hosted + version: "4.0.1" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + url: "https://pub.dev" + source: hosted + version: "2.4.2" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21" + url: "https://pub.dev" + source: hosted + version: "2.4.8" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185 + url: "https://pub.dev" + source: hosted + version: "7.2.11" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: c9aabae0718ec394e5bc3c7272e6bb0dc0b32201a08fe185ec1d8401d3e39309 + url: "https://pub.dev" + source: hosted + version: "8.8.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" + source: hosted + version: "2.0.3" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 + url: "https://pub.dev" + source: hosted + version: "0.4.1" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 + url: "https://pub.dev" + source: hosted + version: "4.10.0" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368" + url: "https://pub.dev" + source: hosted + version: "2.3.4" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + ffi: + dependency: "direct main" + description: + name: ffi + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + ffigen: + dependency: "direct dev" + description: + name: ffigen + sha256: "3a80687577e7e51ba915114742f389a128e8aa241c52ce69a0f70aecb8e14365" + url: "https://pub.dev" + source: hosted + version: "9.0.1" + file: + dependency: transitive + description: + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_rust_bridge: + dependency: "direct main" + description: + name: flutter_rust_bridge + sha256: "02720226035257ad0b571c1256f43df3e1556a499f6bcb004849a0faaa0e87f0" + url: "https://pub.dev" + source: hosted + version: "1.82.6" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + freezed: + dependency: "direct main" + description: + name: freezed + sha256: "6c5031daae12c7072b3a87eff98983076434b4889ef2a44384d0cae3f82372ba" + url: "https://pub.dev" + source: hosted + version: "2.4.6" + freezed_annotation: + dependency: "direct main" + description: + name: freezed_annotation + sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d + url: "https://pub.dev" + source: hosted + version: "2.4.1" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + url: "https://pub.dev" + source: hosted + version: "3.2.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + graphs: + dependency: transitive + description: + name: graphs + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + url: "https://pub.dev" + source: hosted + version: "2.3.1" + http: + dependency: "direct main" + description: + name: http + sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 + url: "https://pub.dev" + source: hosted + version: "1.1.2" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + io: + dependency: transitive + description: + name: io + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + url: "https://pub.dev" + source: hosted + version: "4.8.1" + lints: + dependency: "direct dev" + description: + name: lints + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + url: "https://pub.dev" + source: hosted + version: "3.0.0" + logging: + dependency: transitive + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" + source: hosted + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" + source: hosted + version: "0.5.0" + meta: + dependency: "direct main" + description: + name: meta + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + url: "https://pub.dev" + source: hosted + version: "1.10.0" + mime: + dependency: transitive + description: + name: mime + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + url: "https://pub.dev" + source: hosted + version: "1.0.4" + mockito: + dependency: "direct main" + description: + name: mockito + sha256: "6841eed20a7befac0ce07df8116c8b8233ed1f4486a7647c7fc5a02ae6163917" + url: "https://pub.dev" + source: hosted + version: "5.4.4" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + path: + dependency: transitive + description: + name: path + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" + source: hosted + version: "1.8.3" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + url: "https://pub.dev" + source: hosted + version: "6.0.2" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + url: "https://pub.dev" + source: hosted + version: "3.7.3" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + puppeteer: + dependency: transitive + description: + name: puppeteer + sha256: eedeaae6ec5d2e54f9ae22ab4d6b3dda2e8791c356cc783046d06c287ffe11d8 + url: "https://pub.dev" + source: hosted + version: "3.6.0" + quiver: + dependency: transitive + description: + name: quiver + sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + url: "https://pub.dev" + source: hosted + version: "3.2.1" + shelf: + dependency: transitive + description: + name: shelf + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" + source: hosted + version: "1.4.1" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e + url: "https://pub.dev" + source: hosted + version: "1.1.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" + source: hosted + version: "0.6.1" + timing: + dependency: transitive + description: + name: timing + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + tuple: + dependency: transitive + description: + name: tuple + sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 + url: "https://pub.dev" + source: hosted + version: "2.0.2" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + uuid: + dependency: "direct main" + description: + name: uuid + sha256: cd210a09f7c18cbe5a02511718e0334de6559871052c90a90c0cca46a4aa81c8 + url: "https://pub.dev" + source: hosted + version: "4.3.3" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + url: "https://pub.dev" + source: hosted + version: "2.4.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" + yaml_edit: + dependency: transitive + description: + name: yaml_edit + sha256: "1579d4a0340a83cf9e4d580ea51a16329c916973bffd5bd4b45e911b25d46bfd" + url: "https://pub.dev" + source: hosted + version: "2.1.1" +sdks: + dart: ">=3.2.0 <4.0.0" + flutter: ">=3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 82cf74c..39acf13 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,30 +1,29 @@ name: bdk_flutter description: A Flutter library for the Bitcoin Development Kit(bdk) (https://bitcoindevkit.org/) -version: 0.29.3 +version: 0.30.0 homepage: https://github.com/LtbLightning/bdk-flutter environment: - sdk: ">=3.0.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.1.5 <4.0.0" + flutter: ">=3.0.0" dependencies: flutter: sdk: flutter - flutter_rust_bridge: ">1.82.3 <= 1.82.4" - plugin_platform_interface: ^2.0.2 + flutter_rust_bridge: ">1.82.3 <= 1.82.6" ffi: ^2.0.1 freezed: ^2.3.5 freezed_annotation: ^2.2.0 mockito: ^5.4.0 - meta: ^1.8.0 - uuid: ^4.2.1 + meta: ^1.10.0 + uuid: ^4.2.2 http: ^1.1.0 - archive: ^3.4.6 + archive: ^3.4.10 dev_dependencies: flutter_test: sdk: flutter - ffigen: ^9.0.0 + ffigen: ^9.0.1 build_runner: ^2.4.4 lints: ^3.0.0 @@ -39,4 +38,4 @@ flutter: ios: ffiPlugin: true macos: - ffiPlugin: true + ffiPlugin: true \ No newline at end of file diff --git a/rust/Cargo.lock b/rust/Cargo.lock new file mode 100644 index 0000000..a3c2b0a --- /dev/null +++ b/rust/Cargo.lock @@ -0,0 +1,1973 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "allo-isolate" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f56b7997817c178b853573e8bdfb6c3afe02810b43f17d766d6703560074b0c3" +dependencies = [ + "anyhow", + "atomic", + "backtrace", + "chrono", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" + +[[package]] +name = "anstyle-parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +dependencies = [ + "anstyle", + "windows-sys", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +dependencies = [ + "backtrace", +] + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-trait" +version = "0.1.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "atomic" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + +[[package]] +name = "base64-compat" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a8d4d2746f89841e49230dd26917df1876050f95abafafbe34f47cb534b88d7" +dependencies = [ + "byteorder", +] + +[[package]] +name = "bdk" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15adb2017ab6437b6704a779ab8bbefe857612f5af9d84b677a1767f965e099" +dependencies = [ + "ahash 0.7.7", + "async-trait", + "bdk-macros", + "bip39", + "bitcoin", + "bitcoincore-rpc", + "electrum-client", + "esplora-client", + "getrandom", + "js-sys", + "log", + "miniscript", + "rand", + "rusqlite", + "serde", + "serde_json", + "sled", + "tokio", +] + +[[package]] +name = "bdk-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81c1980e50ae23bb6efa9283ae8679d6ea2c6fa6a99fe62533f65f4a25a1a56c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bip39" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +dependencies = [ + "bitcoin_hashes", + "serde", + "unicode-normalization", +] + +[[package]] +name = "bitcoin" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0694ea59225b0c5f3cb405ff3f670e4828358ed26aec49dc352f730f0cb1a8a3" +dependencies = [ + "base64 0.13.1", + "bech32", + "bitcoin_hashes", + "secp256k1", + "serde", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +dependencies = [ + "serde", +] + +[[package]] +name = "bitcoincore-rpc" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0261b2bb7617e0c91b452a837bbd1291fd34ad6990cb8e3ffc28239cc045b5ca" +dependencies = [ + "bitcoincore-rpc-json", + "jsonrpc", + "log", + "serde", + "serde_json", +] + +[[package]] +name = "bitcoincore-rpc-json" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c231bea28e314879c5aef240f6052e8a72a369e3c9f9b20d9bfbb33ad18029b2" +dependencies = [ + "bitcoin", + "serde", + "serde_json", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + +[[package]] +name = "build-target" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "832133bbabbbaa9fbdba793456a2827627a7d2b8fb96032fa1e7666d7895832b" + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "bytemuck" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", +] + +[[package]] +name = "cbindgen" +version = "0.24.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b922faaf31122819ec80c4047cc684c6979a087366c069611e33649bf98e18d" +dependencies = [ + "clap 3.2.25", + "heck", + "indexmap", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 1.0.109", + "tempfile", + "toml", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_lex 0.2.4", + "indexmap", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap" +version = "4.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46ca43acc1b21c6cc2d1d3129c19e323a613935b5bc28fb3b33b5b2e5fb00030" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63361bae7eef3771745f02d8d892bec2fee5f6e34af316ba556e7f97a7069ff1" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.6.0", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "clap_lex" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "colored" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f741c91823341bebf717d4c71bda820630ce065443b58bd1b7451af008355" +dependencies = [ + "is-terminal", + "lazy_static", + "winapi", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "convert_case" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "dart-sys" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d8b5680b5c2cc52f50acb2457d9b3a3b58adcca785db13a0e3655626f601de6" +dependencies = [ + "cc", +] + +[[package]] +name = "delegate-attr" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51aac4c99b2e6775164b412ea33ae8441b2fde2dbf05a20bc0052a63d08c475b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "electrum-client" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8e1e1e452aef3ee772d19cc6272ef642f22ce0f4a9fb715ffe98010934e2ae1" +dependencies = [ + "bitcoin", + "byteorder", + "libc", + "log", + "rustls 0.20.9", + "serde", + "serde_json", + "webpki", + "webpki-roots 0.22.6", + "winapi", +] + +[[package]] +name = "enum-iterator" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7add3873b5dd076766ee79c8e406ad1a472c385476b9e38849f8eec24f1be689" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "enum_dispatch" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "errno" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "esplora-client" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "847e59bd6ee1c3f2bdf217118ee3640b97a1b1d8becb55771e67e533b87da66f" +dependencies = [ + "bitcoin", + "log", + "serde", + "ureq", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "fern" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee" +dependencies = [ + "chrono", + "colored", + "log", +] + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "flutter_rust_bridge" +version = "1.82.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23a5a7a1cd030cd63f53eafe2496eb4e40f520800e6e9b78cae6f3f3ba7f3c2b" +dependencies = [ + "allo-isolate", + "anyhow", + "backtrace", + "build-target", + "bytemuck", + "cc", + "chrono", + "console_error_panic_hook", + "dart-sys", + "flutter_rust_bridge_macros", + "js-sys", + "lazy_static", + "libc", + "log", + "parking_lot 0.12.1", + "threadpool", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "flutter_rust_bridge_codegen" +version = "1.82.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5cefe80a6230c66eff7172db1d3979071ad0091b657ad6b683e692dee7875c8" +dependencies = [ + "anyhow", + "atty", + "cargo_metadata", + "cbindgen", + "chrono", + "clap 4.4.9", + "convert_case", + "delegate-attr", + "enum-iterator", + "enum_dispatch", + "fern", + "itertools", + "lazy_static", + "log", + "pathdiff", + "quote", + "regex", + "serde", + "serde_yaml", + "strum_macros", + "syn 2.0.39", + "tempfile", + "thiserror", + "toml", + "topological-sort", +] + +[[package]] +name = "flutter_rust_bridge_macros" +version = "1.82.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c2fe4c18349a2b17b980a1214e19a4cb7888a86f70ce5a9a0fccb5611f77bdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "getrandom" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash 0.8.6", + "allocator-api2", +] + +[[package]] +name = "hashlink" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +dependencies = [ + "hashbrown 0.14.3", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" + +[[package]] +name = "iana-time-zone" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi 0.3.3", + "rustix", + "windows-sys", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonrpc" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f8423b78fc94d12ef1a4a9d13c348c9a78766dda0cc18817adf0faf77e670c8" +dependencies = [ + "base64-compat", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" + +[[package]] +name = "libsqlite3-sys" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniscript" +version = "9.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5b106477a0709e2da253e5559ba4ab20a272f8577f1eefff72f3a905b5d35f5" +dependencies = [ + "bitcoin", + "serde", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.3", + "libc", +] + +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets", +] + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro2" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" +dependencies = [ + "cc", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys", +] + +[[package]] +name = "rusqlite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a" +dependencies = [ + "bitflags 1.3.2", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rust_bdk_ffi" +version = "0.30.0" +dependencies = [ + "anyhow", + "assert_matches", + "bdk", + "flutter_rust_bridge", + "flutter_rust_bridge_codegen", + "lazy_static", + "rand", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustix" +version = "0.38.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" +dependencies = [ + "bitflags 2.4.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustls" +version = "0.20.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" +dependencies = [ + "log", + "ring 0.16.20", + "sct", + "webpki", +] + +[[package]] +name = "rustls" +version = "0.21.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" +dependencies = [ + "log", + "ring 0.17.5", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.5", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.5", + "untrusted 0.9.0", +] + +[[package]] +name = "secp256k1" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" +dependencies = [ + "bitcoin_hashes", + "rand", + "secp256k1-sys", + "serde", +] + +[[package]] +name = "secp256k1-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" +dependencies = [ + "cc", +] + +[[package]] +name = "semver" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "serde_json" +version = "1.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_yaml" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +dependencies = [ + "indexmap", + "ryu", + "serde", + "yaml-rust", +] + +[[package]] +name = "sled" +version = "0.34.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f96b4737c2ce5987354855aed3797279def4ebf734436c6aa4552cf8e169935" +dependencies = [ + "crc32fast", + "crossbeam-epoch", + "crossbeam-utils", + "fs2", + "fxhash", + "libc", + "log", + "parking_lot 0.11.2", +] + +[[package]] +name = "smallvec" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" + +[[package]] +name = "socks" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b" +dependencies = [ + "byteorder", + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +dependencies = [ + "cfg-if", + "fastrand", + "redox_syscall 0.4.1", + "rustix", + "windows-sys", +] + +[[package]] +name = "termcolor" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" + +[[package]] +name = "thiserror" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +dependencies = [ + "backtrace", + "pin-project-lite", + "tokio-macros", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "topological-sort" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d" + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" +dependencies = [ + "base64 0.21.5", + "flate2", + "log", + "once_cell", + "rustls 0.21.9", + "rustls-webpki", + "serde", + "serde_json", + "socks", + "url", + "webpki-roots 0.25.3", +] + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.39", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" + +[[package]] +name = "web-sys" +version = "0.3.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" +dependencies = [ + "ring 0.17.5", + "untrusted 0.9.0", +] + +[[package]] +name = "webpki-roots" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +dependencies = [ + "webpki", +] + +[[package]] +name = "webpki-roots" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "zerocopy" +version = "0.7.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index e5a9812..7ea8f88 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rust_bdk_ffi" -version = "0.29.3" +version = "0.30.0" edition = "2021" [lib] @@ -9,11 +9,11 @@ crate-type = ["staticlib", "cdylib"] assert_matches = "1.5" [build-dependencies] -flutter_rust_bridge_codegen = { version = "= 1.82.1" } +flutter_rust_bridge_codegen = { version = "= 1.82.6" } [dependencies] rand = "0.8" -bdk = { version = "0.28.0", features = ["all-keys", "use-esplora-ureq", "sqlite-bundled", "rpc"] } -flutter_rust_bridge = { version = "= 1.82.1" } +bdk = { version = "0.28.2", features = ["all-keys", "use-esplora-ureq", "sqlite-bundled", "rpc"] } +flutter_rust_bridge = { version = "= 1.82.6" } serde = "1.0.89" serde_json = "1.0.96" anyhow = "1.0.68" diff --git a/rust/android.sh b/rust/android.sh index 64403d1..49e131a 100644 --- a/rust/android.sh +++ b/rust/android.sh @@ -1,7 +1,7 @@ #!/bin/bash # Setup -BUILD_DIR=bdk.0.29.3 +BUILD_DIR=bdk.0.30.0 mkdir -p $BUILD_DIR cd $BUILD_DIR diff --git a/rust/compress.sh b/rust/compress.sh index 3b9e11e..5e4e33f 100644 --- a/rust/compress.sh +++ b/rust/compress.sh @@ -1,9 +1,11 @@ #!/bin/bash for TARGET in \ - bdk.0.29.3 unittest.bdk.0.29.3 + bdk.0.30.0 unittest.bdk.0.30.0 do zip -r $TARGET.zip $TARGET + rm -rf $TARGET done -rm unittest.bdk.0.29.3 + + diff --git a/rust/copy.sh b/rust/copy.sh index 64583bf..409af56 100644 --- a/rust/copy.sh +++ b/rust/copy.sh @@ -3,7 +3,7 @@ if [ -d "../ios/rust_bdk_ffi.xcframework" ]; then rm -r ../ios/rust_bdk_ffi.xcframework fi if [ -d "../macos/rust_bdk_ffi.xcframework" ]; then rm -r ../macos/rust_bdk_ffi.xcframework - fi + fi mkdir -p ../android/src/main/jniLibs/arm64-v8a mkdir -p ../android/src/main/jniLibs/armeabi-v7a @@ -14,8 +14,8 @@ cp target/armv7-linux-androideabi/release/librust_bdk_ffi.so ../android/src/main/jniLibs/armeabi-v7a cp target/i686-linux-android/release/librust_bdk_ffi.so ../android/src/main/jniLibs/x86 cp target/x86_64-linux-android/release/librust_bdk_ffi.so ../android/src/main/jniLibs/x86_86 - cp -r bdk.0.29.3/rust_bdk_ffi.xcframework ../macos/ - cp -r bdk.0.29.3/rust_bdk_ffi.xcframework ../macos/ + cp -r bdk.0.30.0/rust_bdk_ffi.xcframework ../macos/ + cp -r bdk.0.30.0/rust_bdk_ffi.xcframework ../ios/ diff --git a/rust/darwin.sh b/rust/darwin.sh index 836cff3..fef6535 100644 --- a/rust/darwin.sh +++ b/rust/darwin.sh @@ -1,7 +1,7 @@ #!/bin/bash # Setup -BUILD_DIR=bdk.0.29.3 +BUILD_DIR=bdk.0.30.0 mkdir -p $BUILD_DIR cd $BUILD_DIR diff --git a/rust/makefile b/rust/makefile index 7acaa9f..bc0cb0c 100755 --- a/rust/makefile +++ b/rust/makefile @@ -1,6 +1,5 @@ .DEFAULT_GOAL := help PROJECTNAME=$(shell basename "$(PWD)") -SOURCES=$(sort $(wildcard ./src/*.rs ./src/**/*.rs)) # ############################################################################## # # GENERAL # ############################################################################## @@ -21,39 +20,38 @@ init: ## : ## all: Compile iOS, Android and bindings targets -all: init android xcframework unittest copy +all: init build-jnilib build-xcframework build-unittest copy-build compress-build -unittest: unittest/bindings -unittest/bindings: $(SOURCES) - @echo "[Creating unittest ...] $@" - sh unittest.sh - @echo "[Done ✅]" - - -android: android/jniLibs -android/jniLibs: $(SOURCES) +build-jnilib: @echo "[Creating android jniLibs ...] $@" sh android.sh @echo "[Done ✅]" -xcframework: darwin/xcframework -darwin/xcframework: $(SOURCES) +build-xcframework: @echo "[Creating rust_bdk_ffi.xcframework ...] $@" sh darwin.sh @echo "[Done ✅]" -compress: compress/bindings -compress/bindings: $(SOURCES) - @echo "[COMPRESSING BINARIES TO FLUTTER PACKAGE ...] $@" +build-unittest: + @echo "[Creating unittest ...] $@" + sh unittest.sh + @echo "[Done ✅]" + +compress-build: + @echo "[COMPRESSING BINARIES TO FLUTTER PACKAGE ...] $@" sh compress.sh @echo "[Done ✅]" -copy: copy/bindings -copy/bindings: $(SOURCES) +copy-build: @echo "[COPYING BINARIES TO FLUTTER PACKAGE ...] $@" sh copy.sh @echo "[Done ✅]" + + + + + diff --git a/rust/src/blockchain.rs b/rust/src/blockchain.rs index 5fb1b7c..f5a295a 100644 --- a/rust/src/blockchain.rs +++ b/rust/src/blockchain.rs @@ -23,7 +23,7 @@ fn persist_blockchain(id: String, blockchain: Blockchain) { return; } pub struct Blockchain { - pub blockchain_mutex: Mutex, + pub inner_mutex: Mutex, } impl Blockchain { @@ -76,7 +76,7 @@ impl Blockchain { persist_blockchain( id.clone(), Blockchain { - blockchain_mutex: Mutex::new(blockchain), + inner_mutex: Mutex::new(blockchain), }, ); Ok(id) @@ -86,14 +86,14 @@ impl Blockchain { blockchain_lock.get(id.as_str()).unwrap().clone() } pub fn get_blockchain(&self) -> MutexGuard { - self.blockchain_mutex.lock().expect("blockchain") + self.inner_mutex.lock().expect("blockchain") } pub(crate) fn broadcast(&self, tx: Transaction) -> Result { self.get_blockchain() - .broadcast(&tx.internal.clone()) + .broadcast(&tx.inner.clone()) .expect("Broadcast Error"); - return Ok(tx.internal.txid().to_string()); + return Ok(tx.inner.txid().to_string()); } pub fn get_height(&self) -> Result { diff --git a/rust/src/bridge_generated.rs b/rust/src/bridge_generated.rs index a801776..78d10c1 100644 --- a/rust/src/bridge_generated.rs +++ b/rust/src/bridge_generated.rs @@ -9,7 +9,7 @@ clippy::too_many_arguments )] // AUTO GENERATED FILE, DO NOT EDIT. -// Generated by `flutter_rust_bridge`@ 1.82.1. +// Generated by `flutter_rust_bridge`@ 1.82.6. use crate::r_api::*; use core::panic::UnwindSafe; @@ -714,6 +714,57 @@ fn wire_new_bip84_public__static_method__Api_impl( }, ) } +fn wire_new_bip86_descriptor__static_method__Api_impl( + port_: MessagePort, + key_chain_kind: impl Wire2Api + UnwindSafe, + secret_key: impl Wire2Api + UnwindSafe, + network: impl Wire2Api + UnwindSafe, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, String, _>( + WrapInfo { + debug_name: "new_bip86_descriptor__static_method__Api", + port: Some(port_), + mode: FfiCallMode::Normal, + }, + move || { + let api_key_chain_kind = key_chain_kind.wire2api(); + let api_secret_key = secret_key.wire2api(); + let api_network = network.wire2api(); + move |task_callback| { + Api::new_bip86_descriptor(api_key_chain_kind, api_secret_key, api_network) + } + }, + ) +} +fn wire_new_bip86_public__static_method__Api_impl( + port_: MessagePort, + key_chain_kind: impl Wire2Api + UnwindSafe, + public_key: impl Wire2Api + UnwindSafe, + network: impl Wire2Api + UnwindSafe, + fingerprint: impl Wire2Api + UnwindSafe, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, String, _>( + WrapInfo { + debug_name: "new_bip86_public__static_method__Api", + port: Some(port_), + mode: FfiCallMode::Normal, + }, + move || { + let api_key_chain_kind = key_chain_kind.wire2api(); + let api_public_key = public_key.wire2api(); + let api_network = network.wire2api(); + let api_fingerprint = fingerprint.wire2api(); + move |task_callback| { + Api::new_bip86_public( + api_key_chain_kind, + api_public_key, + api_network, + api_fingerprint, + ) + } + }, + ) +} fn wire_descriptor_as_string_private__static_method__Api_impl( port_: MessagePort, descriptor: impl Wire2Api + UnwindSafe, @@ -1666,7 +1717,7 @@ impl rust2dart::IntoIntoDart for Payload { impl support::IntoDart for Script { fn into_dart(self) -> support::DartAbi { - vec![self.internal.into_into_dart().into_dart()].into_dart() + vec![self.inner.into_into_dart().into_dart()].into_dart() } } impl support::IntoDartExceptPrimitive for Script {} @@ -2107,6 +2158,38 @@ mod io { ) } + #[no_mangle] + pub extern "C" fn wire_new_bip86_descriptor__static_method__Api( + port_: i64, + key_chain_kind: i32, + secret_key: *mut wire_uint_8_list, + network: i32, + ) { + wire_new_bip86_descriptor__static_method__Api_impl( + port_, + key_chain_kind, + secret_key, + network, + ) + } + + #[no_mangle] + pub extern "C" fn wire_new_bip86_public__static_method__Api( + port_: i64, + key_chain_kind: i32, + public_key: *mut wire_uint_8_list, + network: i32, + fingerprint: *mut wire_uint_8_list, + ) { + wire_new_bip86_public__static_method__Api_impl( + port_, + key_chain_kind, + public_key, + network, + fingerprint, + ) + } + #[no_mangle] pub extern "C" fn wire_descriptor_as_string_private__static_method__Api( port_: i64, @@ -2859,7 +2942,7 @@ mod io { impl Wire2Api