content: // This file is automatically generated, so please do not edit it.
  // @generated by `flutter_rust_bridge`@ 2.9.0.
  
  // ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
  
  // Static analysis wrongly picks the IO variant, thus ignore this
  // ignore_for_file: argument_type_not_assignable
  
  import 'api/blockchain.dart';
  import 'api/descriptor.dart';
  import 'api/error.dart';
  import 'api/transaction.dart';
  import 'api/types.dart';
  import 'api/wallet.dart';
  import 'dart:async';
  import 'dart:convert';
  import 'frb_generated.dart';
  import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart';
  
  abstract class LwkCoreApiImplPlatform extends BaseApiImpl<LwkCoreWire> {
    LwkCoreApiImplPlatform({
      required super.handler,
      required super.wire,
      required super.generalizedFrbRustBinding,
      required super.portManager,
    });
  
    CrossPlatformFinalizerArg
        get rust_arc_decrement_strong_count_MutexWolletPtr =>
            wire.rust_arc_decrement_strong_count_RustOpaque_Mutexlwk_wolletWollet;
  
    @protected
    MutexWollet dco_decode_RustOpaque_Mutexlwk_wolletWollet(dynamic raw);
  
    @protected
    String dco_decode_String(dynamic raw);
  
    @protected
    Address dco_decode_address(dynamic raw);
  
    @protected
    Balance dco_decode_balance(dynamic raw);
  
    @protected
    Blockchain dco_decode_blockchain(dynamic raw);
  
    @protected
    bool dco_decode_bool(dynamic raw);
  
    @protected
    Blockchain dco_decode_box_autoadd_blockchain(dynamic raw);
  
    @protected
    Descriptor dco_decode_box_autoadd_descriptor(dynamic raw);
  
    @protected
    int dco_decode_box_autoadd_u_32(dynamic raw);
  
    @protected
    Wallet dco_decode_box_autoadd_wallet(dynamic raw);
  
    @protected
    Descriptor dco_decode_descriptor(dynamic raw);
  
    @protected
    double dco_decode_f_32(dynamic raw);
  
    @protected
    int dco_decode_i_32(dynamic raw);
  
    @protected
    PlatformInt64 dco_decode_i_64(dynamic raw);
  
    @protected
    List<Balance> dco_decode_list_balance(dynamic raw);
  
    @protected
    List<int> dco_decode_list_prim_u_8_loose(dynamic raw);
  
    @protected
    Uint8List dco_decode_list_prim_u_8_strict(dynamic raw);
  
    @protected
    List<Tx> dco_decode_list_tx(dynamic raw);
  
    @protected
    List<TxOut> dco_decode_list_tx_out(dynamic raw);
  
    @protected
    LwkError dco_decode_lwk_error(dynamic raw);
  
    @protected
    Network dco_decode_network(dynamic raw);
  
    @protected
    String? dco_decode_opt_String(dynamic raw);
  
    @protected
    int? dco_decode_opt_box_autoadd_u_32(dynamic raw);
  
    @protected
    OutPoint dco_decode_out_point(dynamic raw);
  
    @protected
    PayjoinTx dco_decode_payjoin_tx(dynamic raw);
  
    @protected
    PsetAmounts dco_decode_pset_amounts(dynamic raw);
  
    @protected
    SizeAndFees dco_decode_size_and_fees(dynamic raw);
  
    @protected
    Tx dco_decode_tx(dynamic raw);
  
    @protected
    TxOut dco_decode_tx_out(dynamic raw);
  
    @protected
    TxOutSecrets dco_decode_tx_out_secrets(dynamic raw);
  
    @protected
    int dco_decode_u_32(dynamic raw);
  
    @protected
    BigInt dco_decode_u_64(dynamic raw);
  
    @protected
    int dco_decode_u_8(dynamic raw);
  
    @protected
    void dco_decode_unit(dynamic raw);
  
    @protected
    BigInt dco_decode_usize(dynamic raw);
  
    @protected
    Wallet dco_decode_wallet(dynamic raw);
  
    @protected
    MutexWollet sse_decode_RustOpaque_Mutexlwk_wolletWollet(
        SseDeserializer deserializer);
  
    @protected
    String sse_decode_String(SseDeserializer deserializer);
  
    @protected
    Address sse_decode_address(SseDeserializer deserializer);
  
    @protected
    Balance sse_decode_balance(SseDeserializer deserializer);
  
    @protected
    Blockchain sse_decode_blockchain(SseDeserializer deserializer);
  
    @protected
    bool sse_decode_bool(SseDeserializer deserializer);
  
    @protected
    Blockchain sse_decode_box_autoadd_blockchain(SseDeserializer deserializer);
  
    @protected
    Descriptor sse_decode_box_autoadd_descriptor(SseDeserializer deserializer);
  
    @protected
    int sse_decode_box_autoadd_u_32(SseDeserializer deserializer);
  
    @protected
    Wallet sse_decode_box_autoadd_wallet(SseDeserializer deserializer);
  
    @protected
    Descriptor sse_decode_descriptor(SseDeserializer deserializer);
  
    @protected
    double sse_decode_f_32(SseDeserializer deserializer);
  
    @protected
    int sse_decode_i_32(SseDeserializer deserializer);
  
    @protected
    PlatformInt64 sse_decode_i_64(SseDeserializer deserializer);
  
    @protected
    List<Balance> sse_decode_list_balance(SseDeserializer deserializer);
  
    @protected
    List<int> sse_decode_list_prim_u_8_loose(SseDeserializer deserializer);
  
    @protected
    Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer);
  
    @protected
    List<Tx> sse_decode_list_tx(SseDeserializer deserializer);
  
    @protected
    List<TxOut> sse_decode_list_tx_out(SseDeserializer deserializer);
  
    @protected
    LwkError sse_decode_lwk_error(SseDeserializer deserializer);
  
    @protected
    Network sse_decode_network(SseDeserializer deserializer);
  
    @protected
    String? sse_decode_opt_String(SseDeserializer deserializer);
  
    @protected
    int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer);
  
    @protected
    OutPoint sse_decode_out_point(SseDeserializer deserializer);
  
    @protected
    PayjoinTx sse_decode_payjoin_tx(SseDeserializer deserializer);
  
    @protected
    PsetAmounts sse_decode_pset_amounts(SseDeserializer deserializer);
  
    @protected
    SizeAndFees sse_decode_size_and_fees(SseDeserializer deserializer);
  
    @protected
    Tx sse_decode_tx(SseDeserializer deserializer);
  
    @protected
    TxOut sse_decode_tx_out(SseDeserializer deserializer);
  
    @protected
    TxOutSecrets sse_decode_tx_out_secrets(SseDeserializer deserializer);
  
    @protected
    int sse_decode_u_32(SseDeserializer deserializer);
  
    @protected
    BigInt sse_decode_u_64(SseDeserializer deserializer);
  
    @protected
    int sse_decode_u_8(SseDeserializer deserializer);
  
    @protected
    void sse_decode_unit(SseDeserializer deserializer);
  
    @protected
    BigInt sse_decode_usize(SseDeserializer deserializer);
  
    @protected
    Wallet sse_decode_wallet(SseDeserializer deserializer);
  
    @protected
    String cst_encode_String(String raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return raw;
    }
  
    @protected
    JSAny cst_encode_address(Address raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [
        cst_encode_String(raw.standard),
        cst_encode_String(raw.confidential),
        cst_encode_opt_box_autoadd_u_32(raw.index),
        cst_encode_opt_String(raw.blindingKey)
      ].jsify()!;
    }
  
    @protected
    JSAny cst_encode_balance(Balance raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [cst_encode_String(raw.assetId), cst_encode_i_64(raw.value)]
          .jsify()!;
    }
  
    @protected
    JSAny cst_encode_blockchain(Blockchain raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [].jsify()!;
    }
  
    @protected
    JSAny cst_encode_box_autoadd_blockchain(Blockchain raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return cst_encode_blockchain(raw);
    }
  
    @protected
    JSAny cst_encode_box_autoadd_descriptor(Descriptor raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return cst_encode_descriptor(raw);
    }
  
    @protected
    int cst_encode_box_autoadd_u_32(int raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return cst_encode_u_32(raw);
    }
  
    @protected
    JSAny cst_encode_box_autoadd_wallet(Wallet raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return cst_encode_wallet(raw);
    }
  
    @protected
    JSAny cst_encode_descriptor(Descriptor raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [cst_encode_String(raw.ctDescriptor)].jsify()!;
    }
  
    @protected
    JSAny cst_encode_i_64(PlatformInt64 raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return castNativeBigInt(raw);
    }
  
    @protected
    JSAny cst_encode_list_balance(List<Balance> raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return raw.map(cst_encode_balance).toList().jsify()!;
    }
  
    @protected
    JSAny cst_encode_list_prim_u_8_loose(List<int> raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return raw.jsify()!;
    }
  
    @protected
    JSAny cst_encode_list_prim_u_8_strict(Uint8List raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return raw.jsify()!;
    }
  
    @protected
    JSAny cst_encode_list_tx(List<Tx> raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return raw.map(cst_encode_tx).toList().jsify()!;
    }
  
    @protected
    JSAny cst_encode_list_tx_out(List<TxOut> raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return raw.map(cst_encode_tx_out).toList().jsify()!;
    }
  
    @protected
    JSAny cst_encode_lwk_error(LwkError raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [cst_encode_String(raw.msg)].jsify()!;
    }
  
    @protected
    String? cst_encode_opt_String(String? raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return raw == null ? null : cst_encode_String(raw);
    }
  
    @protected
    int? cst_encode_opt_box_autoadd_u_32(int? raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return raw == null ? null : cst_encode_box_autoadd_u_32(raw);
    }
  
    @protected
    JSAny cst_encode_out_point(OutPoint raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [cst_encode_String(raw.txid), cst_encode_u_32(raw.vout)].jsify()!;
    }
  
    @protected
    JSAny cst_encode_payjoin_tx(PayjoinTx raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [
        cst_encode_String(raw.pset),
        cst_encode_u_64(raw.networkFee),
        cst_encode_u_64(raw.assetFee)
      ].jsify()!;
    }
  
    @protected
    JSAny cst_encode_pset_amounts(PsetAmounts raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [
        cst_encode_u_64(raw.absoluteFees),
        cst_encode_list_balance(raw.balances)
      ].jsify()!;
    }
  
    @protected
    JSAny cst_encode_size_and_fees(SizeAndFees raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [
        cst_encode_usize(raw.discountedVsize),
        cst_encode_usize(raw.discountedWeight),
        cst_encode_list_balance(raw.absoluteFees)
      ].jsify()!;
    }
  
    @protected
    JSAny cst_encode_tx(Tx raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [
        cst_encode_opt_box_autoadd_u_32(raw.timestamp),
        cst_encode_String(raw.kind),
        cst_encode_list_balance(raw.balances),
        cst_encode_String(raw.txid),
        cst_encode_list_tx_out(raw.outputs),
        cst_encode_list_tx_out(raw.inputs),
        cst_encode_u_64(raw.fee),
        cst_encode_opt_box_autoadd_u_32(raw.height),
        cst_encode_String(raw.unblindedUrl),
        cst_encode_usize(raw.vsize)
      ].jsify()!;
    }
  
    @protected
    JSAny cst_encode_tx_out(TxOut raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [
        cst_encode_String(raw.scriptPubkey),
        cst_encode_out_point(raw.outpoint),
        cst_encode_opt_box_autoadd_u_32(raw.height),
        cst_encode_tx_out_secrets(raw.unblinded),
        cst_encode_bool(raw.isSpent),
        cst_encode_address(raw.address)
      ].jsify()!;
    }
  
    @protected
    JSAny cst_encode_tx_out_secrets(TxOutSecrets raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [
        cst_encode_u_64(raw.value),
        cst_encode_String(raw.valueBf),
        cst_encode_String(raw.asset),
        cst_encode_String(raw.assetBf)
      ].jsify()!;
    }
  
    @protected
    JSAny cst_encode_u_64(BigInt raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return castNativeBigInt(raw);
    }
  
    @protected
    JSAny cst_encode_usize(BigInt raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return castNativeBigInt(raw);
    }
  
    @protected
    JSAny cst_encode_wallet(Wallet raw) {
      // Codec=Cst (C-struct based), see doc to use other codecs
      return [cst_encode_RustOpaque_Mutexlwk_wolletWollet(raw.inner)].jsify()!;
    }
  
    @protected
    int cst_encode_RustOpaque_Mutexlwk_wolletWollet(MutexWollet raw);
  
    @protected
    bool cst_encode_bool(bool raw);
  
    @protected
    double cst_encode_f_32(double raw);
  
    @protected
    int cst_encode_i_32(int raw);
  
    @protected
    int cst_encode_network(Network raw);
  
    @protected
    int cst_encode_u_32(int raw);
  
    @protected
    int cst_encode_u_8(int raw);
  
    @protected
    void cst_encode_unit(void raw);
  
    @protected
    void sse_encode_RustOpaque_Mutexlwk_wolletWollet(
        MutexWollet self, SseSerializer serializer);
  
    @protected
    void sse_encode_String(String self, SseSerializer serializer);
  
    @protected
    void sse_encode_address(Address self, SseSerializer serializer);
  
    @protected
    void sse_encode_balance(Balance self, SseSerializer serializer);
  
    @protected
    void sse_encode_blockchain(Blockchain self, SseSerializer serializer);
  
    @protected
    void sse_encode_bool(bool self, SseSerializer serializer);
  
    @protected
    void sse_encode_box_autoadd_blockchain(
        Blockchain self, SseSerializer serializer);
  
    @protected
    void sse_encode_box_autoadd_descriptor(
        Descriptor self, SseSerializer serializer);
  
    @protected
    void sse_encode_box_autoadd_u_32(int self, SseSerializer serializer);
  
    @protected
    void sse_encode_box_autoadd_wallet(Wallet self, SseSerializer serializer);
  
    @protected
    void sse_encode_descriptor(Descriptor self, SseSerializer serializer);
  
    @protected
    void sse_encode_f_32(double self, SseSerializer serializer);
  
    @protected
    void sse_encode_i_32(int self, SseSerializer serializer);
  
    @protected
    void sse_encode_i_64(PlatformInt64 self, SseSerializer serializer);
  
    @protected
    void sse_encode_list_balance(List<Balance> self, SseSerializer serializer);
  
    @protected
    void sse_encode_list_prim_u_8_loose(List<int> self, SseSerializer serializer);
  
    @protected
    void sse_encode_list_prim_u_8_strict(
        Uint8List self, SseSerializer serializer);
  
    @protected
    void sse_encode_list_tx(List<Tx> self, SseSerializer serializer);
  
    @protected
    void sse_encode_list_tx_out(List<TxOut> self, SseSerializer serializer);
  
    @protected
    void sse_encode_lwk_error(LwkError self, SseSerializer serializer);
  
    @protected
    void sse_encode_network(Network self, SseSerializer serializer);
  
    @protected
    void sse_encode_opt_String(String? self, SseSerializer serializer);
  
    @protected
    void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer);
  
    @protected
    void sse_encode_out_point(OutPoint self, SseSerializer serializer);
  
    @protected
    void sse_encode_payjoin_tx(PayjoinTx self, SseSerializer serializer);
  
    @protected
    void sse_encode_pset_amounts(PsetAmounts self, SseSerializer serializer);
  
    @protected
    void sse_encode_size_and_fees(SizeAndFees self, SseSerializer serializer);
  
    @protected
    void sse_encode_tx(Tx self, SseSerializer serializer);
  
    @protected
    void sse_encode_tx_out(TxOut self, SseSerializer serializer);
  
    @protected
    void sse_encode_tx_out_secrets(TxOutSecrets self, SseSerializer serializer);
  
    @protected
    void sse_encode_u_32(int self, SseSerializer serializer);
  
    @protected
    void sse_encode_u_64(BigInt self, SseSerializer serializer);
  
    @protected
    void sse_encode_u_8(int self, SseSerializer serializer);
  
    @protected
    void sse_encode_unit(void self, SseSerializer serializer);
  
    @protected
    void sse_encode_usize(BigInt self, SseSerializer serializer);
  
    @protected
    void sse_encode_wallet(Wallet self, SseSerializer serializer);
  }
  
  // Section: wire_class
  
  class LwkCoreWire implements BaseWire {
    LwkCoreWire.fromExternalLibrary(ExternalLibrary lib);
  
    void wire__crate__api__types__address_address_from_script(
            NativePortType port_,
            int network,
            String script,
            String? blinding_key) =>
        wasmModule.wire__crate__api__types__address_address_from_script(
            port_, network, script, blinding_key);
  
    void wire__crate__api__types__address_validate(
            NativePortType port_, String address_string) =>
        wasmModule.wire__crate__api__types__address_validate(
            port_, address_string);
  
    void wire__crate__api__blockchain__blockchain_broadcast_signed_pset(
            NativePortType port_, String electrum_url, String signed_pset) =>
        wasmModule.wire__crate__api__blockchain__blockchain_broadcast_signed_pset(
            port_, electrum_url, signed_pset);
  
    void wire__crate__api__blockchain__blockchain_broadcast_tx_bytes(
            NativePortType port_, String electrum_url, JSAny tx_bytes) =>
        wasmModule.wire__crate__api__blockchain__blockchain_broadcast_tx_bytes(
            port_, electrum_url, tx_bytes);
  
    void wire__crate__api__blockchain__blockchain_test(
            NativePortType port_, JSAny that, String electrum_url) =>
        wasmModule.wire__crate__api__blockchain__blockchain_test(
            port_, that, electrum_url);
  
    void wire__crate__api__descriptor__descriptor_new_confidential(
            NativePortType port_, int network, String mnemonic) =>
        wasmModule.wire__crate__api__descriptor__descriptor_new_confidential(
            port_, network, mnemonic);
  
    void wire__crate__api__transaction__extract_tx_bytes(
            NativePortType port_, String pset) =>
        wasmModule.wire__crate__api__transaction__extract_tx_bytes(port_, pset);
  
    void wire__crate__api__transaction__get_size_and_absolute_fees(
            NativePortType port_, String pset) =>
        wasmModule.wire__crate__api__transaction__get_size_and_absolute_fees(
            port_, pset);
  
    void wire__crate__api__wallet__wallet_address(
            NativePortType port_, JSAny that, int index) =>
        wasmModule.wire__crate__api__wallet__wallet_address(port_, that, index);
  
    void wire__crate__api__wallet__wallet_address_last_unused(
            NativePortType port_, JSAny that) =>
        wasmModule.wire__crate__api__wallet__wallet_address_last_unused(
            port_, that);
  
    void wire__crate__api__wallet__wallet_balances(
            NativePortType port_, JSAny that) =>
        wasmModule.wire__crate__api__wallet__wallet_balances(port_, that);
  
    void wire__crate__api__wallet__wallet_blinding_key(
            NativePortType port_, JSAny that) =>
        wasmModule.wire__crate__api__wallet__wallet_blinding_key(port_, that);
  
    void wire__crate__api__wallet__wallet_build_asset_tx(
            NativePortType port_,
            JSAny that,
            JSAny sats,
            String out_address,
            double fee_rate,
            String asset) =>
        wasmModule.wire__crate__api__wallet__wallet_build_asset_tx(
            port_, that, sats, out_address, fee_rate, asset);
  
    void wire__crate__api__wallet__wallet_build_lbtc_tx(
            NativePortType port_,
            JSAny that,
            JSAny sats,
            String out_address,
            double fee_rate,
            bool drain) =>
        wasmModule.wire__crate__api__wallet__wallet_build_lbtc_tx(
            port_, that, sats, out_address, fee_rate, drain);
  
    void wire__crate__api__wallet__wallet_build_payjoin_tx(
            NativePortType port_,
            JSAny that,
            JSAny sats,
            String out_address,
            String asset,
            int network) =>
        wasmModule.wire__crate__api__wallet__wallet_build_payjoin_tx(
            port_, that, sats, out_address, asset, network);
  
    void wire__crate__api__wallet__wallet_decode_tx(
            NativePortType port_, JSAny that, String pset) =>
        wasmModule.wire__crate__api__wallet__wallet_decode_tx(port_, that, pset);
  
    void wire__crate__api__wallet__wallet_descriptor(
            NativePortType port_, JSAny that) =>
        wasmModule.wire__crate__api__wallet__wallet_descriptor(port_, that);
  
    void wire__crate__api__wallet__wallet_init(
            NativePortType port_, int network, String dbpath, JSAny descriptor) =>
        wasmModule.wire__crate__api__wallet__wallet_init(
            port_, network, dbpath, descriptor);
  
    void wire__crate__api__wallet__wallet_sign_tx(NativePortType port_,
            JSAny that, int network, String pset, String mnemonic) =>
        wasmModule.wire__crate__api__wallet__wallet_sign_tx(
            port_, that, network, pset, mnemonic);
  
    void wire__crate__api__wallet__wallet_signed_pset_with_extra_details(
            NativePortType port_,
            JSAny that,
            int network,
            String pset,
            String mnemonic) =>
        wasmModule
            .wire__crate__api__wallet__wallet_signed_pset_with_extra_details(
                port_, that, network, pset, mnemonic);
  
    void wire__crate__api__wallet__wallet_sync(NativePortType port_, JSAny that,
            String electrum_url, bool validate_domain) =>
        wasmModule.wire__crate__api__wallet__wallet_sync(
            port_, that, electrum_url, validate_domain);
  
    void wire__crate__api__wallet__wallet_txs(NativePortType port_, JSAny that) =>
        wasmModule.wire__crate__api__wallet__wallet_txs(port_, that);
  
    void wire__crate__api__wallet__wallet_utxos(
            NativePortType port_, JSAny that) =>
        wasmModule.wire__crate__api__wallet__wallet_utxos(port_, that);
  
    void rust_arc_increment_strong_count_RustOpaque_Mutexlwk_wolletWollet(
            int ptr) =>
        wasmModule
            .rust_arc_increment_strong_count_RustOpaque_Mutexlwk_wolletWollet(
                ptr);
  
    void rust_arc_decrement_strong_count_RustOpaque_Mutexlwk_wolletWollet(
            int ptr) =>
        wasmModule
            .rust_arc_decrement_strong_count_RustOpaque_Mutexlwk_wolletWollet(
                ptr);
  }
  
  @JS('wasm_bindgen')
  external LwkCoreWasmModule get wasmModule;
  
  @JS()
  @anonymous
  extension type LwkCoreWasmModule._(JSObject _) implements JSObject {
    external void wire__crate__api__types__address_address_from_script(
        NativePortType port_, int network, String script, String? blinding_key);
  
    external void wire__crate__api__types__address_validate(
        NativePortType port_, String address_string);
  
    external void wire__crate__api__blockchain__blockchain_broadcast_signed_pset(
        NativePortType port_, String electrum_url, String signed_pset);
  
    external void wire__crate__api__blockchain__blockchain_broadcast_tx_bytes(
        NativePortType port_, String electrum_url, JSAny tx_bytes);
  
    external void wire__crate__api__blockchain__blockchain_test(
        NativePortType port_, JSAny that, String electrum_url);
  
    external void wire__crate__api__descriptor__descriptor_new_confidential(
        NativePortType port_, int network, String mnemonic);
  
    external void wire__crate__api__transaction__extract_tx_bytes(
        NativePortType port_, String pset);
  
    external void wire__crate__api__transaction__get_size_and_absolute_fees(
        NativePortType port_, String pset);
  
    external void wire__crate__api__wallet__wallet_address(
        NativePortType port_, JSAny that, int index);
  
    external void wire__crate__api__wallet__wallet_address_last_unused(
        NativePortType port_, JSAny that);
  
    external void wire__crate__api__wallet__wallet_balances(
        NativePortType port_, JSAny that);
  
    external void wire__crate__api__wallet__wallet_blinding_key(
        NativePortType port_, JSAny that);
  
    external void wire__crate__api__wallet__wallet_build_asset_tx(
        NativePortType port_,
        JSAny that,
        JSAny sats,
        String out_address,
        double fee_rate,
        String asset);
  
    external void wire__crate__api__wallet__wallet_build_lbtc_tx(
        NativePortType port_,
        JSAny that,
        JSAny sats,
        String out_address,
        double fee_rate,
        bool drain);
  
    external void wire__crate__api__wallet__wallet_build_payjoin_tx(
        NativePortType port_,
        JSAny that,
        JSAny sats,
        String out_address,
        String asset,
        int network);
  
    external void wire__crate__api__wallet__wallet_decode_tx(
        NativePortType port_, JSAny that, String pset);
  
    external void wire__crate__api__wallet__wallet_descriptor(
        NativePortType port_, JSAny that);
  
    external void wire__crate__api__wallet__wallet_init(
        NativePortType port_, int network, String dbpath, JSAny descriptor);
  
    external void wire__crate__api__wallet__wallet_sign_tx(NativePortType port_,
        JSAny that, int network, String pset, String mnemonic);
  
    external void wire__crate__api__wallet__wallet_signed_pset_with_extra_details(
        NativePortType port_,
        JSAny that,
        int network,
        String pset,
        String mnemonic);
  
    external void wire__crate__api__wallet__wallet_sync(NativePortType port_,
        JSAny that, String electrum_url, bool validate_domain);
  
    external void wire__crate__api__wallet__wallet_txs(
        NativePortType port_, JSAny that);
  
    external void wire__crate__api__wallet__wallet_utxos(
        NativePortType port_, JSAny that);
  
    external void
        rust_arc_increment_strong_count_RustOpaque_Mutexlwk_wolletWollet(int ptr);
  
    external void
        rust_arc_decrement_strong_count_RustOpaque_Mutexlwk_wolletWollet(int ptr);
  }
  