Page MenuHomePhabricator

[chronik, chronik-client, ecash-agora, ecash-lib, cashtab, ecash-herald, token-server, faucet, mock-chronik-client] Improve names of keys and params that expect satoshis and atoms (aka base tokens)
Needs ReviewPublic

Authored by bytesofman on Fri, Feb 7, 22:31.

Details

Reviewers
tobias_ruck
PiRK
Group Reviewers
Restricted Project
Summary

1. Change the "value" key (which stores satoshis as a number) to "sats", which stores satoshis as bigint

The "value" does not really make sense; this is always "satoshis". It's extra confusing as satoshis can look quite close to XEC from a visual check, but in reality a factor of 100 is quite a difference indeed. Although the type "number" is ok, since the supply of satoshis is below JS max safe number, it is nice to use bigint since we then know it should always be an int.

2. Change the "amount" key (which stores base tokens as a string) to "atoms", which stores base tokens as bigint

"amount" is also an ambiguous key. Is it the decimalized amount of a token? or base tokens? what are base tokens anyway? We introduce the term "atoms" to describe the smallest unit of a token. Store as a bigint as this is always an int and also can be larger than JS safest integer. Decimalized amounts are usually a string, so keeping this bigint further distinguishes it from decimalized amounts.

We also update tokenBurnAmount -> tokenBurnAtoms, intentionalBurn -> intentionalBurnAtoms and change their type from string to bigint. We update error msgs to replace "base tokens" with "atoms"

The ecash-agora library uses the term "Token" in many places when instead what is meant is "atoms." We correct this.

We combine the changes here since

  1. These changes are related
  2. Any part of the changes here would itself be a breaking change
  3. CI allows us to confirm a proper implementation

It is not possible to do this incrementally as we need CI to confirm a correct implementation, and breaking changes to the libs must be implemented in the same diff. The diff history here loosely follows "one place at a time" implementation.

Goal here is to improve speed of development going forward. This ambiguity is something I have tripped over often in building apps, esp implementing ecash-agora in Cashtab (token vs base tokens, satoshis, nanosatoshis per token actually is nanosatoshis per atom, etc).

Looking to get this in before getting a strongly typed wallet library into the monorepo, which will be implemented in Cashtab to get rid of...a lot of spaghetti supporting tx building and wallet mgmt / migrations.

Note: not implemented in the Rust analogue to chronik-client. It should be implemented there as well. I'm not sure what our progress is like on getting that lib into the monorepo.

Test Plan

judgment call on the new names and definitions, CI

Cashtab migration can be tested in prod-like env at https://cashtab-local-dev.netlify.app/

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[247/589] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[248/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[250/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[251/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[252/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[253/589] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[254/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[255/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[256/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[257/589] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[258/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[259/589] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[260/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[261/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[262/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[263/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[264/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[265/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[266/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[267/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[268/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[269/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[270/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[271/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[272/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[273/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[274/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[275/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[276/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[277/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[278/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[279/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[280/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[281/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[282/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[283/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[284/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[285/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[286/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[287/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[288/589] Linking C static library src/secp256k1/libsecp256k1.a
[289/589] Linking C executable src/secp256k1/internal-bench
[290/589] Linking C executable src/secp256k1/ecmult-bench
[291/589] Linking C executable src/secp256k1/recover-bench
[292/589] Linking C executable src/secp256k1/verify-bench
[293/589] Linking C executable src/secp256k1/sign-bench
[294/589] Linking CXX static library src/libbitcoinconsensus.a
[295/589] Linking CXX static library src/libscript.a
[296/589] Linking CXX static library src/libcommon.a
[297/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[298/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/589] Linking CXX executable src/iguana/iguana
[300/589] Linking CXX executable src/bitcoin-cli
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-agora-integration-tests failed with exit code 1

chronik updates from name changes in mint data

Tail of the build log:

   Compiling parking_lot v0.12.3
   Compiling cc v1.2.3
   Compiling signal-hook-registry v1.4.2
   Compiling socket2 v0.5.8
   Compiling mio v1.0.3
   Compiling versions v6.3.2
   Compiling cexpr v0.6.0
   Compiling clang-sys v1.8.1
   Compiling tempfile v3.14.0
   Compiling cmake v0.1.52
   Compiling which v4.4.2
   Compiling getrandom v0.2.15
   Compiling bytes v1.9.0
   Compiling serde_json v1.0.133
   Compiling icu_locid v1.5.0
   Compiling cxx-build v1.0.133
   Compiling rand_core v0.6.4
   Compiling ppv-lite86 v0.2.20
   Compiling hash32 v0.2.1
   Compiling spin v0.9.8
   Compiling http v1.2.0
   Compiling tokio v1.42.0
   Compiling icu_locid_transform_data v1.5.0
   Compiling icu_provider v1.5.0
   Compiling rand_chacha v0.3.1
   Compiling heapless v0.7.17
   Compiling prost v0.11.9
   Compiling bitcoinsuite-core v0.1.0 (/work/chronik/bitcoinsuite-core)
   Compiling backtrace v0.3.71
   Compiling link-cplusplus v1.0.9
   Compiling aws-lc-sys v0.23.1
   Compiling prost-types v0.11.9
   Compiling cxx v1.0.133
   Compiling bitcoinsuite-slp v0.1.0 (/work/chronik/bitcoinsuite-slp)
error[E0425]: cannot find value `atoms_vec` in this scope
   --> chronik/bitcoinsuite-slp/src/slp/genesis.rs:107:17
    |
107 |                 atoms_vec,
    |                 ^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `atoms_vec` in this scope
  --> chronik/bitcoinsuite-slp/src/slp/mint.rs:68:13
   |
68 |             atoms_vec,
   |             ^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `atoms_vec` in this scope
  --> chronik/bitcoinsuite-slp/src/slp/mint_vault.rs:78:13
   |
78 |             atoms_vec,
   |             ^^^^^^^^^ not found in this scope

   Compiling bindgen v0.65.1
   Compiling icu_locid_transform v1.5.0
   Compiling crossbeam-utils v0.8.20
For more information about this error, try `rustc --explain E0425`.
error: could not compile `bitcoinsuite-slp` (lib) due to 3 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[247/589] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[248/589] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[250/589] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[251/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[252/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[253/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[254/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[255/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[256/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[257/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[258/589] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[259/589] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[260/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[261/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[262/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[263/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[264/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[265/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[266/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[267/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[268/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[269/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[270/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[271/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[272/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[273/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[274/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[275/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[276/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[277/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[278/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[279/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[280/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[281/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[282/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[283/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[284/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[285/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[286/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[287/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[288/589] Linking C static library src/secp256k1/libsecp256k1.a
[289/589] Linking C executable src/secp256k1/recover-bench
[290/589] Linking C executable src/secp256k1/verify-bench
[291/589] Linking C executable src/secp256k1/internal-bench
[292/589] Linking C executable src/secp256k1/ecmult-bench
[293/589] Linking C executable src/secp256k1/sign-bench
[294/589] Linking CXX static library src/libbitcoinconsensus.a
[295/589] Linking CXX static library src/libscript.a
[296/589] Linking CXX static library src/libcommon.a
[297/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[298/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/589] Linking CXX executable src/iguana/iguana
[300/589] Linking CXX executable src/bitcoin-cli
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-agora-integration-tests failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/chainparams.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/common/bloom.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[247/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[248/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[250/589] Building CXX object src/CMakeFiles/common.dir/cashaddrenc.cpp.o
[251/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[252/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[253/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[254/589] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[255/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[256/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[257/589] Building CXX object src/CMakeFiles/common.dir/kernel/chainparams.cpp.o
[258/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[259/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[260/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[261/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[262/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[263/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[264/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[265/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[266/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[267/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[268/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[269/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[270/589] Linking C static library src/secp256k1/libsecp256k1.a
[271/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[272/589] Linking C executable src/secp256k1/recover-bench
[273/589] Linking C executable src/secp256k1/verify-bench
[274/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[275/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[276/589] Linking C executable src/secp256k1/ecmult-bench
[277/589] Linking C executable src/secp256k1/sign-bench
[278/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[279/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[280/589] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[281/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[282/589] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[283/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[284/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[285/589] Linking CXX static library src/libbitcoinconsensus.a
[286/589] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[287/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[288/589] Linking C executable src/secp256k1/internal-bench
[289/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[290/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[291/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[292/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[293/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[294/589] Linking CXX static library src/libscript.a
[295/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[296/589] Linking CXX static library src/libcommon.a
[297/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[298/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/589] Linking CXX executable src/iguana/iguana
[300/589] Linking CXX executable src/bitcoin-cli
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build chronik-client-integration-tests failed with exit code 1

Tail of the build log:

    Checking utf16_iter v1.0.5
    Checking rustls-pki-types v1.10.0
   Compiling aws-lc-sys v0.23.1
   Compiling backtrace v0.3.71
   Compiling link-cplusplus v1.0.9
   Compiling prost v0.11.9
   Compiling bindgen v0.65.1
    Checking utf8_iter v1.0.4
    Checking untrusted v0.9.0
    Checking percent-encoding v2.3.1
    Checking write16 v1.0.0
    Checking parking v2.2.1
    Checking icu_normalizer_data v1.5.0
   Compiling prost-types v0.11.9
    Checking event-listener v5.3.1
   Compiling petgraph v0.6.5
    Checking form_urlencoded v1.2.1
   Compiling cxx v1.0.133
    Checking stable-eyre v0.2.2
   Compiling which v4.4.2
   Compiling tempfile v3.14.0
    Checking icu_normalizer v1.5.0
    Checking bitcoinsuite-slp v0.1.0 (/work/chronik/bitcoinsuite-slp)
    Checking httparse v1.9.5
error[E0425]: cannot find value `atoms_vec` in this scope
   --> chronik/bitcoinsuite-slp/src/slp/genesis.rs:107:17
    |
107 |                 atoms_vec,
    |                 ^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `atoms_vec` in this scope
  --> chronik/bitcoinsuite-slp/src/slp/mint.rs:68:13
   |
68 |             atoms_vec,
   |             ^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `atoms_vec` in this scope
  --> chronik/bitcoinsuite-slp/src/slp/mint_vault.rs:78:13
   |
78 |             atoms_vec,
   |             ^^^^^^^^^ not found in this scope

    Checking versions v6.3.2
    Checking bimap v0.6.3
    Checking tower-service v0.3.3
    Checking option-ext v0.2.0
    Checking subtle v2.6.1
    Checking idna_adapter v1.2.0
    Checking dirs-sys v0.4.1
   Compiling cxx-build v1.0.133
    Checking num-traits v0.2.19
    Checking abc-rust-error v0.1.0 (/work/chronik/abc-rust-error)
    Checking event-listener-strategy v0.5.3
   Compiling pyo3-macros-backend v0.23.3
   Compiling pyo3-ffi v0.23.3
For more information about this error, try `rustc --explain E0425`.
error: could not compile `bitcoinsuite-slp` (lib) due to 3 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[247/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[248/589] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[250/589] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[251/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[252/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[253/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[254/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[255/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[256/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[257/589] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[258/589] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[259/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[260/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[261/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[262/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[263/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[264/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[265/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[266/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[267/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[268/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[269/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[270/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[271/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[272/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[273/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[274/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[275/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[276/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[277/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[278/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[279/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[280/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[281/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[282/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[283/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[284/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[285/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[286/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[287/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[288/589] Linking C static library src/secp256k1/libsecp256k1.a
[289/589] Linking C executable src/secp256k1/internal-bench
[290/589] Linking C executable src/secp256k1/recover-bench
[291/589] Linking C executable src/secp256k1/sign-bench
[292/589] Linking C executable src/secp256k1/ecmult-bench
[293/589] Linking C executable src/secp256k1/verify-bench
[294/589] Linking CXX static library src/libbitcoinconsensus.a
[295/589] Linking CXX static library src/libscript.a
[296/589] Linking CXX static library src/libcommon.a
[297/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[298/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/589] Linking CXX executable src/iguana/iguana
[300/589] Linking CXX executable src/bitcoin-cli
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-lib-integration-tests failed with exit code 1

more script patches, update other amounts params

Tail of the build log:

   Compiling dirs v5.0.1
   Compiling http-body-util v0.1.2
   Compiling toml_datetime v0.6.8
   Compiling serde_spanned v0.6.8
   Compiling pyo3 v0.23.3
   Compiling sha1 v0.10.6
   Compiling httpdate v1.0.3
   Compiling utf-8 v0.7.6
   Compiling winnow v0.6.20
   Compiling data-encoding v2.6.0
   Compiling hyper v1.5.1
   Compiling memoffset v0.9.1
   Compiling url v2.5.4
   Compiling tungstenite v0.24.0
   Compiling sync_wrapper v0.1.2
   Compiling karyon_core v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
   Compiling unicode-segmentation v1.12.0
   Compiling unindent v0.2.3
   Compiling sync_wrapper v1.0.2
   Compiling mime v0.3.17
   Compiling convert_case v0.6.0
   Compiling tokio-tungstenite v0.24.0
   Compiling axum-core v0.4.5
   Compiling hyper-util v0.1.10
   Compiling tower v0.5.1
   Compiling serde_urlencoded v0.7.1
   Compiling karyon_jsonrpc_macro v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
   Compiling futures-executor v0.3.31
   Compiling toml_edit v0.22.22
   Compiling serde_path_to_error v0.1.16
   Compiling base64 v0.22.1
   Compiling matchit v0.7.3
   Compiling futures v0.3.31
   Compiling tower-http v0.5.2
   Compiling librocksdb-sys v0.11.0+8.1.1
   Compiling pyo3-macros v0.23.3
   Compiling toml v0.8.19
   Compiling axum v0.7.9
   Compiling chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/chronik-plugin-impl/tests/test_tx_to_py.rs:358:29
    |
358 | ...                   amounts: vec![0, 0, 10, 0, 0],
    |                       ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/chronik-plugin-impl/tests/test_tx_to_py.rs:366:29
    |
366 | ...                   amounts: vec![1000, 0, 0],
    |                       ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

For more information about this error, try `rustc --explain E0560`.
error: could not compile `chronik-plugin-impl` (test "test_tx_to_py") due to 2 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

   Compiling chronik-proto v0.1.0 (/work/chronik/chronik-proto)
   Compiling chrono v0.4.38
   Compiling dirs v5.0.1
   Compiling bincode v2.0.0-rc.3
   Compiling http-body-util v0.1.2
   Compiling serde_spanned v0.6.8
   Compiling toml_datetime v0.6.8
   Compiling sha1 v0.10.6
   Compiling utf-8 v0.7.6
   Compiling data-encoding v2.6.0
   Compiling httpdate v1.0.3
   Compiling toml_edit v0.22.22
   Compiling hyper v1.5.1
   Compiling tungstenite v0.24.0
   Compiling url v2.5.4
   Compiling karyon_core v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
   Compiling pyo3-ffi v0.23.3
   Compiling mime v0.3.17
   Compiling sync_wrapper v1.0.2
   Compiling sync_wrapper v0.1.2
   Compiling hyper-util v0.1.10
   Compiling tower v0.5.1
   Compiling toml v0.8.19
   Compiling axum-core v0.4.5
   Compiling tokio-tungstenite v0.24.0
   Compiling serde_urlencoded v0.7.1
   Compiling karyon_jsonrpc_macro v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
   Compiling futures-executor v0.3.31
   Compiling serde_path_to_error v0.1.16
   Compiling matchit v0.7.3
   Compiling base64 v0.22.1
   Compiling futures v0.3.31
   Compiling tower-http v0.5.2
   Compiling chronik-util v0.1.0 (/work/chronik/chronik-util)
   Compiling librocksdb-sys v0.11.0+8.1.1
   Compiling pyo3-macros v0.23.3
   Compiling axum v0.7.9
   Compiling pyo3 v0.23.3
   Compiling chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/chronik-plugin-impl/tests/test_tx_to_py.rs:358:29
    |
358 | ...                   amounts: vec![0, 0, 10, 0, 0],
    |                       ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/chronik-plugin-impl/tests/test_tx_to_py.rs:366:29
    |
366 | ...                   amounts: vec![1000, 0, 0],
    |                       ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

For more information about this error, try `rustc --explain E0560`.
error: could not compile `chronik-plugin-impl` (test "test_tx_to_py") due to 2 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

   Compiling itoa v1.0.14
    Checking utf-8 v0.7.6
    Checking data-encoding v2.6.0
   Compiling ryu v1.0.18
    Checking foldhash v0.1.3
    Checking httpdate v1.0.3
    Checking cobs v0.2.3
    Checking postcard v1.1.1
    Checking tungstenite v0.24.0
    Checking hyper v1.5.1
    Checking karyon_core v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking chronik-plugin v0.1.0 (/work/chronik/chronik-plugin)
   Compiling chronik-proto v0.1.0 (/work/chronik/chronik-proto)
    Checking url v2.5.4
    Checking toml_datetime v0.6.8
    Checking serde_spanned v0.6.8
   Compiling pyo3 v0.23.3
    Checking seahash v4.1.0
    Checking sync_wrapper v1.0.2
    Checking winnow v0.6.20
    Checking topo_sort v0.4.0
    Checking sync_wrapper v0.1.2
    Checking mime v0.3.17
    Checking tower v0.5.1
    Checking hyper-util v0.1.10
    Checking axum-core v0.4.5
    Checking memoffset v0.9.1
    Checking tokio-tungstenite v0.24.0
    Checking serde_urlencoded v0.7.1
    Checking futures-executor v0.3.31
    Checking serde_path_to_error v0.1.16
    Checking unicode-segmentation v1.12.0
    Checking unindent v0.2.3
    Checking matchit v0.7.3
    Checking base64 v0.22.1
    Checking convert_case v0.6.0
    Checking tower-http v0.5.2
   Compiling karyon_jsonrpc_macro v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking futures v0.3.31
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
    Checking toml_edit v0.22.22
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking axum v0.7.9
   Compiling pyo3-macros v0.23.3
    Checking toml v0.8.19
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.11.1
   Compiling rustls v0.23.19
    Checking rustls-webpki v0.102.8
    Checking tokio-rustls v0.26.1
    Checking karyon_async_rustls v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_net v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_jsonrpc v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
    Finished dev [unoptimized + debuginfo] target(s) in 4m 55s
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

   Compiling ryu v1.0.18
   Compiling itoa v1.0.14
    Checking httpdate v1.0.3
    Checking utf-8 v0.7.6
    Checking foldhash v0.1.3
    Checking cobs v0.2.3
    Checking data-encoding v2.6.0
    Checking hyper v1.5.1
    Checking postcard v1.1.1
    Checking karyon_core v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking tungstenite v0.24.0
    Checking chronik-plugin v0.1.0 (/work/chronik/chronik-plugin)
    Checking url v2.5.4
   Compiling chronik-proto v0.1.0 (/work/chronik/chronik-proto)
    Checking serde_spanned v0.6.8
    Checking toml_datetime v0.6.8
   Compiling pyo3 v0.23.3
    Checking mime v0.3.17
    Checking winnow v0.6.20
    Checking topo_sort v0.4.0
    Checking sync_wrapper v1.0.2
    Checking seahash v4.1.0
    Checking sync_wrapper v0.1.2
    Checking axum-core v0.4.5
    Checking tower v0.5.1
    Checking tokio-tungstenite v0.24.0
    Checking hyper-util v0.1.10
    Checking memoffset v0.9.1
    Checking serde_urlencoded v0.7.1
    Checking futures-executor v0.3.31
    Checking serde_path_to_error v0.1.16
   Compiling karyon_jsonrpc_macro v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking unicode-segmentation v1.12.0
    Checking base64 v0.22.1
    Checking unindent v0.2.3
    Checking matchit v0.7.3
    Checking tower-http v0.5.2
    Checking futures v0.3.31
    Checking convert_case v0.6.0
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
    Checking toml_edit v0.22.22
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking axum v0.7.9
    Checking toml v0.8.19
   Compiling pyo3-macros v0.23.3
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.11.1
   Compiling rustls v0.23.19
    Checking rustls-webpki v0.102.8
    Checking tokio-rustls v0.26.1
    Checking karyon_async_rustls v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_net v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_jsonrpc v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
    Finished dev [unoptimized + debuginfo] target(s) in 7m 18s
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

   Doc-tests chronik-bridge

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-db

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-http

running 1 test
test chronik/chronik-http/src/protobuf.rs - protobuf::Protobuf (line 29) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s

   Doc-tests chronik-indexer

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-impl

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-proto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-util

running 2 tests
test chronik/chronik-util/src/log.rs - log::log (line 65) ... ignored
test chronik/chronik-util/src/log.rs - log::log_chronik (line 87) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

   Doc-tests chronik-bridge

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-db

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-http

running 1 test
test chronik/chronik-http/src/protobuf.rs - protobuf::Protobuf (line 29) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s

   Doc-tests chronik-indexer

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-impl

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-proto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-util

running 2 tests
test chronik/chronik-util/src/log.rs - log::log (line 65) ... ignored
test chronik/chronik-util/src/log.rs - log::log_chronik (line 87) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

apologies for the phab noise here ... not sure how to find all these locally. ninja check-functional is passing

Tail of the build log:

    Checking cobs v0.2.3
    Checking utf-8 v0.7.6
    Checking foldhash v0.1.3
   Compiling ryu v1.0.18
   Compiling itoa v1.0.14
    Checking data-encoding v2.6.0
    Checking httpdate v1.0.3
    Checking postcard v1.1.1
    Checking hyper v1.5.1
    Checking tungstenite v0.24.0
    Checking karyon_core v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking chronik-plugin v0.1.0 (/work/chronik/chronik-plugin)
    Checking url v2.5.4
   Compiling chronik-proto v0.1.0 (/work/chronik/chronik-proto)
    Checking serde_spanned v0.6.8
    Checking toml_datetime v0.6.8
   Compiling pyo3 v0.23.3
    Checking sync_wrapper v0.1.2
    Checking sync_wrapper v1.0.2
    Checking winnow v0.6.20
    Checking seahash v4.1.0
    Checking topo_sort v0.4.0
    Checking mime v0.3.17
    Checking tower v0.5.1
    Checking hyper-util v0.1.10
    Checking tokio-tungstenite v0.24.0
    Checking axum-core v0.4.5
    Checking memoffset v0.9.1
    Checking serde_urlencoded v0.7.1
    Checking futures-executor v0.3.31
    Checking serde_path_to_error v0.1.16
    Checking base64 v0.22.1
    Checking matchit v0.7.3
   Compiling karyon_jsonrpc_macro v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking unicode-segmentation v1.12.0
    Checking unindent v0.2.3
    Checking tower-http v0.5.2
    Checking futures v0.3.31
    Checking convert_case v0.6.0
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
    Checking toml_edit v0.22.22
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking axum v0.7.9
    Checking toml v0.8.19
   Compiling pyo3-macros v0.23.3
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.11.1
   Compiling rustls v0.23.19
    Checking rustls-webpki v0.102.8
    Checking tokio-rustls v0.26.1
    Checking karyon_async_rustls v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_net v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_jsonrpc v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
    Finished dev [unoptimized + debuginfo] target(s) in 5m 28s
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

   Doc-tests chronik-bridge

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-db

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-http

running 1 test
test chronik/chronik-http/src/protobuf.rs - protobuf::Protobuf (line 29) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s

   Doc-tests chronik-indexer

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-impl

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-proto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-util

running 2 tests
test chronik/chronik-util/src/log.rs - log::log (line 65) ... ignored
test chronik/chronik-util/src/log.rs - log::log_chronik (line 87) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

      data: "abc"
    }
  }
}
time_first_seen: 1740146305
size: 178
])
2025-02-21T13:58:26.092000Z TestFramework (INFO): Stopping nodes
2025-02-21T13:58:26.394000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/chronik-client-integration-tests/test/tmp/test_runner_₿₵_🏃_20250221_135824/setup_scripts/chronik-client_plugins_0
2025-02-21T13:58:26.394000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/chronik-client-integration-tests/test/tmp/test_runner_₿₵_🏃_20250221_135824/setup_scripts/chronik-client_plugins_0/test_framework.log
2025-02-21T13:58:26.394000Z TestFramework (ERROR): 
2025-02-21T13:58:26.394000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/chronik-client-integration-tests/test/tmp/test_runner_₿₵_🏃_20250221_135824/setup_scripts/chronik-client_plugins_0' to consolidate all logs
2025-02-21T13:58:26.395000Z TestFramework (ERROR): 
2025-02-21T13:58:26.395000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-02-21T13:58:26.395000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-02-21T13:58:26.395000Z TestFramework (ERROR): 
Running Unit Tests for Test Framework Modules
setup_scripts/chronik-client_plugins.py started
setup_scripts/chronik-client_plugins.py failed, Duration: 2 s

stdout:

stderr:


TEST                                    | STATUS    | DURATION

setup_scripts/chronik-client_plugins.py | ✖ Failed  | 2 s

ALL                                     | ✖ Failed  | 2 s (accumulated) 
Runtime: 2 s

Test runner for chronik-client_plugins completed with code 1
----------------------|---------|----------|---------|---------|------------------------------------
File                  | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                  
----------------------|---------|----------|---------|---------|------------------------------------
All files             |   31.54 |    12.38 |   28.39 |   31.51 |                                    
 chronik-client       |     100 |      100 |     100 |     100 |                                    
  index.ts            |     100 |      100 |     100 |     100 |                                    
 chronik-client/proto |   23.88 |     9.25 |   17.05 |    24.1 |                                    
  chronik.ts          |   23.88 |     9.25 |   17.05 |    24.1 | ...3,6399-6402,6408-6450,6485-6494 
 chronik-client/src   |   67.21 |    49.38 |   65.41 |   66.48 |                                    
  ChronikClient.ts    |   60.38 |    48.69 |   63.63 |   60.38 | ...6,1357-1365,1373-1438,1446-1451 
  failoverProxy.ts    |   79.43 |    56.66 |   69.23 |   78.84 | ...282-285,288,297,304,308,313,317 
  hex.ts              |   89.47 |       50 |      75 |   87.87 | 58,66-68                           
  validation.ts       |    75.6 |       40 |      75 |   72.97 | 17,21,33,38-49,62-63               
----------------------|---------|----------|---------|---------|------------------------------------

##teamcity[blockOpened name='Code Coverage Summary']
##teamcity[buildStatisticValue key='CodeCoverageAbsBCovered' value='988']
##teamcity[buildStatisticValue key='CodeCoverageAbsBTotal' value='3132']
##teamcity[buildStatisticValue key='CodeCoverageAbsRCovered' value='257']
##teamcity[buildStatisticValue key='CodeCoverageAbsRTotal' value='2075']
##teamcity[buildStatisticValue key='CodeCoverageAbsMCovered' value='161']
##teamcity[buildStatisticValue key='CodeCoverageAbsMTotal' value='567']
##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='976']
##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='3097']
##teamcity[blockClosed name='Code Coverage Summary']
mv: cannot stat 'test_results/chronik-client-integration-tests-junit.xml': No such file or directory
Build chronik-client-integration-tests failed with exit code 1

Tail of the build log:

  ecash_lib_wasm_bg_browser.js |       0 |      100 |     100 |       0 | 1                         
  ecash_lib_wasm_browser.js    |       0 |        0 |       0 |       0 | 3-631                     
  ecash_lib_wasm_nodejs.js     |       0 |        0 |       0 |       0 | 1-561                     
 ecash-lib/src                 |   30.44 |    25.63 |   28.76 |   51.52 |                           
  consts.ts                    |       0 |      100 |     100 |       0 | 6-8                       
  ecc.ts                       |    18.6 |    83.33 |   11.42 |   36.36 | 38-66,84,97-115           
  hash.ts                      |   41.46 |    83.33 |   26.66 |   80.95 | 26,35,38,41               
  hdwallet.ts                  |       0 |        0 |       0 |       0 | 12-175                    
  hmac.ts                      |       0 |        0 |       0 |       0 | 16-73                     
  index.ts                     |       0 |        0 |       0 |       0 |                           
  indexBrowser.ts              |       0 |        0 |       0 |       0 |                           
  indexNodeJs.ts               |       0 |        0 |       0 |       0 |                           
  initBrowser.ts               |       0 |      100 |       0 |       0 | 11-17                     
  initNodeJs.ts                |   54.54 |      100 |     100 |      80 | 10                        
  mnemonic.ts                  |       0 |        0 |       0 |       0 | 9-144                     
  op.ts                        |   20.13 |    23.33 |   36.36 |   39.47 | ...07,109,117-122,133-161 
  opcode.ts                    |    50.2 |    83.33 |     100 |     100 | 1                         
  pbkdf2.ts                    |       0 |      100 |       0 |       0 | 17-51                     
  script.ts                    |   28.44 |    20.58 |   29.03 |   50.87 | ...33-144,150,160,182-193 
  sigHashType.ts               |      40 |       25 |   46.15 |   78.94 | 26-38                     
  tx.ts                        |   47.25 |    45.23 |   47.61 |   87.23 | 110,114,123-125,144       
  txBuilder.ts                 |   40.74 |    33.92 |   54.54 |   80.43 | ...62,181-186,191,261-265 
  unsignedTx.ts                |   25.27 |       16 |   30.76 |   46.15 | ...12,320,326-329,345,357 
 ecash-lib/src/address         |   11.35 |    15.15 |    5.12 |   22.41 |                           
  address.ts                   |   10.95 |    11.36 |    3.22 |   21.05 | ...39-240,255-256,266-344 
  legacyaddr.ts                |   12.04 |    22.72 |    12.5 |      25 | ...9,23-38,70-111,124-128 
 ecash-lib/src/ffi             |   15.68 |    13.97 |    8.57 |   15.89 |                           
  ecash_lib_wasm_bg_browser.js |       0 |      100 |     100 |       0 | 1                         
  ecash_lib_wasm_browser.js    |       0 |        0 |       0 |       0 | 3-631                     
  ecash_lib_wasm_nodejs.js     |   32.76 |    40.62 |   18.36 |   32.98 | ...69,476-541,547-548,552 
 ecash-lib/src/io              |   30.79 |    41.17 |   39.06 |   59.55 |                           
  bytes.ts                     |    8.19 |       60 |   11.76 |   16.12 | 12,23-74                  
  hex.ts                       |   41.55 |       50 |   44.44 |   82.35 | 41-45,50,58               
  int.ts                       |       0 |        0 |       0 |       0 |                           
  str.ts                       |   46.15 |    83.33 |      40 |   85.71 | 15                        
  varsize.ts                   |   16.32 |    21.05 |      40 |      32 | 14-24,40-47               
  writer.ts                    |       0 |        0 |       0 |       0 |                           
  writerbytes.ts               |   42.62 |    40.62 |   53.33 |   83.87 | 34,44,54,64,80            
  writerlength.ts              |   53.33 |    83.33 |   53.84 |     100 | 1                         
 ecash-lib/src/test            |   44.73 |    36.23 |   47.05 |    86.3 |                           
  testRunner.ts                |   44.73 |    36.23 |   47.05 |    86.3 | ...,80-82,105,114,157,197 
 ecash-lib/src/token           |   31.48 |    28.44 |   28.57 |   60.11 |                           
  alp.ts                       |    42.5 |    53.12 |   43.47 |   82.92 | 110-123,142               
  common.ts                    |   54.54 |    83.33 |     100 |     100 | 1                         
  empp.ts                      |   52.17 |       60 |   57.14 |   91.66 | 12                        
  slp.ts                       |   14.76 |     7.35 |       4 |    28.2 | ...74-178,185-197,201-211 
-------------------------------|---------|----------|---------|---------|---------------------------

##teamcity[blockOpened name='Code Coverage Summary']
##teamcity[buildStatisticValue key='CodeCoverageAbsBCovered' value='815']
##teamcity[buildStatisticValue key='CodeCoverageAbsBTotal' value='3643']
##teamcity[buildStatisticValue key='CodeCoverageAbsRCovered' value='244']
##teamcity[buildStatisticValue key='CodeCoverageAbsRTotal' value='1011']
##teamcity[buildStatisticValue key='CodeCoverageAbsMCovered' value='131']
##teamcity[buildStatisticValue key='CodeCoverageAbsMTotal' value='622']
##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='794']
##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='2528']
##teamcity[blockClosed name='Code Coverage Summary']
mv: cannot stat 'test_results/ecash-lib-integration-tests-junit.xml': No such file or directory
Build ecash-lib-integration-tests failed with exit code 1

Failed tests logs:

====== Bitcoin ABC functional tests: rpc_psbt.py ======

------- Stdout: -------
2025-02-21T14:09:17.594000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250221_140915/rpc_psbt_11
2025-02-21T14:09:20.971000Z TestFramework (INFO): Test walletcreatefundedpsbt feeRate of 100,000 XEC/kB produces a total fee at or slightly below -maxtxfee
2025-02-21T14:09:21.001000Z TestFramework (INFO): Test walletcreatefundedpsbt feeRate of 10,000,000 XEC/kB  produces a total fee well above -maxtxfee and raises RPC error
2025-02-21T14:09:21.024000Z TestFramework (INFO): Test various PSBT operations
2025-02-21T14:10:27.033000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 149, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 139, in _run_test_internal
    self.run_test()
  File "/work/test/functional/rpc_psbt.py", line 275, in run_test
    self.sync_mempools()
  File "/work/test/functional/test_framework/test_framework.py", line 834, in sync_mempools
    raise AssertionError(f"Mempool sync timed out after {timeout}s:{pool_str}")
AssertionError: Mempool sync timed out after 60s:
  {'80e59786452c1b29ae0fa542281494e2ff02668a705eda83b0a1b6ce5fd1e1d5'}
  {'80e59786452c1b29ae0fa542281494e2ff02668a705eda83b0a1b6ce5fd1e1d5'}
  set()
2025-02-21T14:10:27.085000Z TestFramework (INFO): Stopping nodes
2025-02-21T14:10:27.338000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250221_140915/rpc_psbt_11
2025-02-21T14:10:27.338000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250221_140915/rpc_psbt_11/test_framework.log
2025-02-21T14:10:27.338000Z TestFramework (ERROR): 
2025-02-21T14:10:27.338000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250221_140915/rpc_psbt_11' to consolidate all logs
2025-02-21T14:10:27.338000Z TestFramework (ERROR): 
2025-02-21T14:10:27.338000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-02-21T14:10:27.338000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-02-21T14:10:27.338000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: rpc_psbt.py

Still lgtm

cashtab/src/components/Agora/OrderBook/index.tsx
389 ↗(On Diff #52708)

?

Failed tests logs:

====== Bitcoin ABC functional tests: abc_mining_stakingrewards.py ======

------- Stdout: -------
2025-02-21T14:33:00.987000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_🏃_20250221_142936/abc_mining_stakingrewards_70
2025-02-21T14:33:04.136000Z TestFramework (INFO): Staking rewards not ready yet, check getblocktemplate lacks the staking rewards data
2025-02-21T14:33:04.139000Z TestFramework (INFO): Staking rewards not ready yet, check the miner doesn't produce the staking rewards output
2025-02-21T14:33:04.213000Z TestFramework (INFO): Staking rewards are computed, check the block template returns the staking rewards data
2025-02-21T14:33:09.265000Z TestFramework (INFO): Staking rewards are computed, check the miner produces the staking rewards output
2025-02-21T14:33:09.297000Z TestFramework (INFO): Override the staking reward via RPC
2025-02-21T14:33:09.299000Z TestFramework (INFO): 5f0cb342f8508435c81ddbf76b888d82efad5dff8537390553bc0c115b09548d
2025-02-21T14:33:09.324000Z TestFramework (INFO): Recompute the staking reward
2025-02-21T14:33:09.326000Z TestFramework (INFO): Check it works with longpoll
2025-02-21T14:33:10.786000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 149, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 139, in _run_test_internal
    self.run_test()
  File "/work/test/functional/abc_mining_stakingrewards.py", line 417, in run_test
    assert node.setflakyproof(last_proofid, True)
AssertionError
2025-02-21T14:33:10.837000Z TestFramework (INFO): Stopping nodes
2025-02-21T14:33:10.940000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_🏃_20250221_142936/abc_mining_stakingrewards_70
2025-02-21T14:33:10.940000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_🏃_20250221_142936/abc_mining_stakingrewards_70/test_framework.log
2025-02-21T14:33:10.940000Z TestFramework (ERROR): 
2025-02-21T14:33:10.940000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_🏃_20250221_142936/abc_mining_stakingrewards_70' to consolidate all logs
2025-02-21T14:33:10.940000Z TestFramework (ERROR): 
2025-02-21T14:33:10.940000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-02-21T14:33:10.940000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-02-21T14:33:10.940000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: abc_mining_stakingrewards.py

tobias_ruck added inline comments.
apps/ecash-herald/src/chronik.ts
102–110 ↗(On Diff #52715)

this should work too and be much cleaner

apps/ecash-herald/src/parse.ts
158–160 ↗(On Diff #52715)

consider this, with STAKING_REWARDS_PERCENT: bigint

(feel free to ignore)

164 ↗(On Diff #52715)

same here

1156 ↗(On Diff #52715)
apps/faucet/index.ts
25–29 ↗(On Diff #52715)
cashtab/src/chronik/index.ts
847 ↗(On Diff #52715)

in a future diff, you should probably switch this out with bigint math

cashtab/src/components/Send/SendXec.tsx
744 ↗(On Diff #52715)

in a future diff, you should switch this out to parse satoshis to bigint directly (without going through floats)

cashtab/src/token-protocols/alp/index.ts
36 ↗(On Diff #52715)
cashtab/src/token-protocols/slpv1/index.ts
32–33 ↗(On Diff #52715)
cashtab/src/transactions/index.js
75–79 ↗(On Diff #52715)

why this change? you can reduce bigint

221–223 ↗(On Diff #52715)
modules/ecash-agora/src/partial.ts
395 ↗(On Diff #52715)
510 ↗(On Diff #52715)
This revision now requires changes to proceed.Wed, Feb 26, 09:52
bytesofman added inline comments.
apps/ecash-herald/src/parse.ts
158–160 ↗(On Diff #52715)

might as well implement here. in general should get used to the practice / benefits of bigint math

cashtab/src/chronik/index.ts
847 ↗(On Diff #52715)

agreed ... i'm ok leaving it for now, it is only used for rendering in tx history.

cashtab/src/components/Send/SendXec.tsx
744 ↗(On Diff #52715)

also true. in this case, I don't mind so much leaving it, as Cashtab needs much bigger reformatting with wallet and tx methods -- should all be done with some kind of XecWallet class in a library, getting rid of all of these ad hoc Cashtab-specific wallet functions and approaches.

bytesofman marked 3 inline comments as done.

rebase, bigint in reduce, bigint math for token rewards in herald, camelCase patches in ecash-agora, var name patches in cashtab constants, hex instead of decimal for hex-defined constants

Failed tests logs:

====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 1 sat/byte to p2pkh address ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 1 sat/byte to p2pkh address if all utxos are mature coinbase utxos ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 1 sat/byte to p2pkh address with an OP_RETURN output ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 1 sat/byte to p2pkh address with an OP_RETURN output at index 0 ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 1 sat/byte to p2sh address ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 10 sat/byte ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1 satoshi per byte tx with no change outputs ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1 satoshi per byte tx with no change outputs from a wallet with utxos at many addresses ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1 satoshi per byte tx broadcast actually broadcast with this function ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: No precision error using JS Number on utxo with highest theoretically possible value ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 15000 satoshis with 1 change output at 1 sat/byte to 5 p2pkh addresses ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 15000 satoshis with 1 change output at 1 sat/byte to 5 p2sh outputs ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:50:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: Sending below dust threshold ======
Error: expect(received).rejects.toThrow(expected)

Expected substring: "Transaction output amount must be at least the dust threshold of 546 satoshis"
Received message:   "Cannot mix BigInt and other types, use explicit conversions"

      74 |     // Get the total amount of satoshis being sent in this tx
      75 |     const satoshisToSend = outputs.reduce(
    > 76 |         (prevSatoshis, output) => prevSatoshis + Number(output.sats),
         |                                               ^
      77 |         0n,
      78 |     );
      79 |     if (satoshisToSend < BigInt(appConfig.dustSats)) {

      at src/transactions/index.js:76:47
          at Array.reduce (<anonymous>)
      at reduce (src/transactions/index.js:75:36)
      at Object.<anonymous> (src/transactions/__tests__/index.test.js:77:28)
    at Object.toThrow (/work/cashtab/node_modules/expect/build/index.js:218:22)
    at Object.toThrow (/work/cashtab/src/transactions/__tests__/index.test.js:78:27)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: Sending above wallet balance ======
Error: expect(received).rejects.toThrow(expected)

Expected substring: "Insufficient funds"
Received message:   "Cannot mix BigInt and other types, use explicit conversions"

      74 |     // Get the total amount of satoshis being sent in this tx
      75 |     const satoshisToSend = outputs.reduce(
    > 76 |         (prevSatoshis, output) => prevSatoshis + Number(output.sats),
         |                                               ^
      77 |         0n,
      78 |     );
      79 |     if (satoshisToSend < BigInt(appConfig.dustSats)) {

      at src/transactions/index.js:76:47
          at Array.reduce (<anonymous>)
      at reduce (src/transactions/index.js:75:36)
      at Object.<anonymous> (src/transactions/__tests__/index.test.js:77:28)
    at Object.toThrow (/work/cashtab/node_modules/expect/build/index.js:218:22)
    at Object.toThrow (/work/cashtab/src/transactions/__tests__/index.test.js:78:27)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: Sending within wallet balance but insufficient to cover fee ======
Error: expect(received).rejects.toThrow(expected)

Expected substring: "Insufficient funds"
Received message:   "Cannot mix BigInt and other types, use explicit conversions"

      74 |     // Get the total amount of satoshis being sent in this tx
      75 |     const satoshisToSend = outputs.reduce(
    > 76 |         (prevSatoshis, output) => prevSatoshis + Number(output.sats),
         |                                               ^
      77 |         0n,
      78 |     );
      79 |     if (satoshisToSend < BigInt(appConfig.dustSats)) {

      at src/transactions/index.js:76:47
          at Array.reduce (<anonymous>)
      at reduce (src/transactions/index.js:75:36)
      at Object.<anonymous> (src/transactions/__tests__/index.test.js:77:28)
    at Object.toThrow (/work/cashtab/node_modules/expect/build/index.js:218:22)
    at Object.toThrow (/work/cashtab/src/transactions/__tests__/index.test.js:78:27)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: throws broadcast error from the node ======
Error: expect(received).rejects.toThrow(expected)

Expected substring: "txn-mempool-conflict (code 18)"
Received message:   "Cannot mix BigInt and other types, use explicit conversions"

      74 |     // Get the total amount of satoshis being sent in this tx
      75 |     const satoshisToSend = outputs.reduce(
    > 76 |         (prevSatoshis, output) => prevSatoshis + Number(output.sats),
         |                                               ^
      77 |         0n,
      78 |     );
      79 |     if (satoshisToSend < BigInt(appConfig.dustSats)) {

      at src/transactions/index.js:76:47
          at Array.reduce (<anonymous>)
      at reduce (src/transactions/index.js:75:36)
      at Object.<anonymous> (src/transactions/__tests__/index.test.js:77:28)
    at Object.toThrow (/work/cashtab/node_modules/expect/build/index.js:218:22)
    at Object.toThrow (/work/cashtab/src/transactions/__tests__/index.test.js:78:27)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: Insufficient balance due to immature coinbase utxos ======
Error: expect(received).rejects.toThrow(expected)

Expected substring: "Insufficient funds"
Received message:   "Cannot mix BigInt and other types, use explicit conversions"

      74 |     // Get the total amount of satoshis being sent in this tx
      75 |     const satoshisToSend = outputs.reduce(
    > 76 |         (prevSatoshis, output) => prevSatoshis + Number(output.sats),
         |                                               ^
      77 |         0n,
      78 |     );
      79 |     if (satoshisToSend < BigInt(appConfig.dustSats)) {

      at src/transactions/index.js:76:47
          at Array.reduce (<anonymous>)
      at reduce (src/transactions/index.js:75:36)
      at Object.<anonymous> (src/transactions/__tests__/index.test.js:77:28)
    at Object.toThrow (/work/cashtab/node_modules/expect/build/index.js:218:22)
    at Object.toThrow (/work/cashtab/src/transactions/__tests__/index.test.js:78:27)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can build a tx to get the exact fee, then add another utxo if necessary ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:139:26)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We will throw expected insufficient funds error if we have enough utxos to cover target send amount but not enough to cover the fee ======
Error: expect(received).rejects.toThrow(expected)

Expected substring: "Insufficient funds"
Received message:   "Cannot mix BigInt and other types, use explicit conversions"

      74 |     // Get the total amount of satoshis being sent in this tx
      75 |     const satoshisToSend = outputs.reduce(
    > 76 |         (prevSatoshis, output) => prevSatoshis + Number(output.sats),
         |                                               ^
      77 |         0n,
      78 |     );
      79 |     if (satoshisToSend < BigInt(appConfig.dustSats)) {

      at src/transactions/index.js:76:47
          at Array.reduce (<anonymous>)
      at reduce (src/transactions/index.js:75:36)
      at Object.<anonymous> (src/transactions/__tests__/index.test.js:200:20)
    at Object.toThrow (/work/cashtab/node_modules/expect/build/index.js:218:22)
    at Object.toThrow (/work/cashtab/src/transactions/__tests__/index.test.js:216:19)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can create and broadcast SLP v1 SEND and BURN txs from utxos of nng or in-node chronik shape Build and broadcast an SLP V1 SEND and BURN tx from in-node chronik-client utxos: SLP send and burn with token change ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:311:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can create and broadcast SLP v1 SEND and BURN txs from utxos of nng or in-node chronik shape Build and broadcast an SLP V1 SEND and BURN tx from in-node chronik-client utxos: SLP send and BURN with no token change ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:311:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can create and broadcast SLP v1 SEND and BURN txs from utxos of nng or in-node chronik shape Build and broadcast an SLP V1 SEND and BURN tx from in-node chronik-client utxos: SLP max send tx using all available input utxos ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:311:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can build and broadcast NFT1 parent fan-out txs sendXec: Gets 19 fan outputs for an NFT1 parent fan tx for max outputs and no change ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:359:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can build and broadcast NFT1 parent fan-out txs sendXec: Gets 18 fan outputs for an NFT1 parent fan tx for max outputs if we have change ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:359:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can build and broadcast NFT1 parent fan-out txs sendXec: Gets token amount fan outputs for an NFT1 parent fan tx if user has less than 19 of this token left ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:76:47
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:75:36)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:359:34)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can get the max amount of XEC that a wallet can send We determine the max-send amount as the total value of all nonSlpUtxos less the required fee in satoshis ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:219:29
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:218:41)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:386:41)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can get the max amount of XEC that a wallet can send We can also determine the max send amount if the user includes a Cashtab Msg ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:219:29
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:218:41)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:397:41)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can get the max amount of XEC that a wallet can send The max send amount is lower if the fee is higher ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:219:29
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:218:41)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:417:41)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can get the max amount of XEC that a wallet can send We must adjust for a higher fee if we have more utxos ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:219:29
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:218:41)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:436:41)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can get the max amount of XEC that a wallet can send An immature Coinbase utxo will be ignored in the onMax calculation ======
TypeError: Cannot mix BigInt and other types, use explicit conversions
    at /work/cashtab/src/transactions/index.js:219:29
    at Array.reduce (<anonymous>)
    at reduce (/work/cashtab/src/transactions/index.js:218:41)
    at Object.<anonymous> (/work/cashtab/src/transactions/__tests__/index.test.js:465:41)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <CreateTokenForm /> User can create an SLP1 token with no mint baton ======
Error: Unable to find an element with the text: Token created!. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="1"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
 ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/CreateTokenForm.test.js:133:29)
====== CashTab Unit Tests: <CreateTokenForm /> User can create an SLP1 token with a mint baton ======
Error: Unable to find an element with the text: Token created!. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="2"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
 ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/CreateTokenForm.test.js:248:29)
====== CashTab Unit Tests: <CreateTokenForm /> User can create an NFT collection ======
Error: Unable to find an element with the text: NFT Collection created!. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="3"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
 ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/CreateTokenForm.test.js:337:26)
====== CashTab Unit Tests: <CreateTokenForm /> User can create an ALP token ======
Error: Unable to find an element with the text: Token created!. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="4"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
 ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/CreateTokenForm.test.js:460:29)
====== CashTab Unit Tests: <Configure /> Setting "Send Confirmations" settings will show send confirmations ======
Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="1"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
            ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Configure/__tests__/Configure.test.js:145:52)
====== CashTab Unit Tests: <Configure /> "ABSOLUTE MINIMUM fees" setting is available and effective if wallet holds exactly required balance of Cachet ======
Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="2"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
            ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Configure/__tests__/Configure.test.js:327:52)
====== CashTab Unit Tests: <Configure /> Setting "ABSOLUTE MINIMUM fees" settings will reduce fees to absolute min ======
Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="3"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
            ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Configure/__tests__/Configure.test.js:427:52)
====== CashTab Unit Tests: <Token /> Renders the send token notification upon successful broadcast ======
Error: Unable to find an element with the text: eToken sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="1"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
 ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/Token.test.js:410:59)
====== CashTab Unit Tests: <Token /> Renders the burn token success notification upon successful burn tx broadcast ======
Error: Unable to find an element with the text: 🔥 Burn successful. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="2"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
 ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/Token.test.js:489:59)
====== CashTab Unit Tests: <Token /> We can mint an slpv1 token if we have a mint baton ======
Error: Unable to find an element with the text: ⚗️ Minted 100.33 CACHET. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="3"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
 ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/Token.test.js:631:59)
====== CashTab Unit Tests: <Token /> We can mint an slpv1 token if we have a mint baton and confirm modals enabled ======
Error: Unable to find an element with the text: ⚗️ Minted 100.33 CACHET. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="4"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
 ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/Token.test.js:782:59)
====== CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 fungible token ======
Error: Unable to find an element with the text: Successful ad setup tx to offer 110.998061056 Vespene Gas for 1.6600 XEC per token. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="1"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Error creating SLP Partial listing ad: TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                 ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:416:26)
====== CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with no NFT Mint inputs, then create some NFT Mint inputs ======
Error: Unable to find an element with the text: NFT Mint inputs created. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="2"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
                ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:515:26)
====== CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with NFT Mint inputs, then mint an NFT ======
Error: Unable to find an element with the text: NFT Minted!. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="3"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
                ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:687:29)
====== CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 NFT ======
Error: Unable to find an element with the text: Created NFT ad. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="4"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Error creating NFT listing ad: TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:988:29)
====== CashTab Unit Tests: <Token /> available actions rendered We can send an SLP1 NFT ======
Error: Unable to find an element with the text: NFT sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="5"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
                ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:1065:29)
====== CashTab Unit Tests: <Token /> available actions rendered We can send an ALP token ======
Error: Unable to find an element with the text: eToken sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="6"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
                ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:1424:59)
====== CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token with change ======
Error: Unable to find an element with the text: 🔥 Burn successful. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="7"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
                ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:1503:59)
====== CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token without change ======
Error: Unable to find an element with the text: 🔥 Burn successful. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="8"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
                ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:1591:59)
====== CashTab Unit Tests: <Token /> available actions rendered We can mint max one-output ALP token qty ======
Error: Unable to find an element with the text: ⚗️ Minted 28147497671.0655 tCRD. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="9"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
                ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:1717:50)
====== CashTab Unit Tests: <Token /> available actions rendered We can list an ALP fungible token ======
Error: Unable to find an element with the text: 99.9936 Test CRD listed for 16.67 XEC per token. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="10"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Error listing ALP Partial: TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:1928:26)
====== CashTab Unit Tests: <Token /> available actions rendered We can redeem XECX for XEC 1:1 using a workflow unique to XECX ======
Error: Unable to find an element with the text: 10,000.00 Staked XEC listed for 1 XEC per token. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="11"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Error listing ALP Partial: TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:2066:26)
====== CashTab Unit Tests: <SendXec /> Clicking "Send" will send a valid tx with op_return_raw after entry of a valid address and bip21 query string with valid amount and op_return_raw params to Send To field ======
Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="1"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
            ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:774:52)
====== CashTab Unit Tests: <SendXec /> We can calculate max send amount with and without a cashtab msg, and send a max sat tx with a cashtab msg ======
Error: expect(element).toHaveValue(9509.4)

Expected the element to have value:
  9509.4
Received:
  0
    at Object.toHaveValue (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:852:31)
====== CashTab Unit Tests: <SendXec /> If the user has minFeeSends set to true but no longer has the right token amount, the feature is disabled ======
Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="2"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
            ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1011:52)
====== CashTab Unit Tests: <SendXec /> We can send a tx with amount denominated in fiat currency ======
Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="3"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
            ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1105:52)
====== CashTab Unit Tests: <SendXec /> We can send an XEC tx to multiple users ======
Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="4"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
            ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1165:52)
====== CashTab Unit Tests: <SendXec /> If we type a Cashtab msg, then disable the switch, we send a tx without our typed Cashtab message ======
Error: expect(element).toHaveValue(9509.4)

Expected the element to have value:
  9509.4
Received:
  0
    at Object.toHaveValue (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1212:31)
====== CashTab Unit Tests: <SendXec /> Entering a valid bip21 query string with multiple outputs and op_return_raw will correctly populate UI fields, and the tx can be sent ======
Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="5"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
            ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1385:52)
====== CashTab Unit Tests: <SendXec /> SLP1 Fungible: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent ======
Error: Unable to find an element with the text: eToken sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="6"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn jJpOzS"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Transaction Fixtures"
                >
                  Transaction Fixtures
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
 ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1614:52)
====== CashTab Unit Tests: <SendXec /> ALP Fungible: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent ======
Error: Unable to find an element with the text: eToken sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="7"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
                ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1724:52)
====== CashTab Unit Tests: <SendXec /> SLP1 NFT Child: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent ======
Error: Unable to find an element with the text: NFT sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

Ignored nodes: comments, script, style
<body>
  <div>
    <div
      class="sc-keFjpB fuvsSf"
    >
      <section
        aria-atomic="false"
        aria-label="Notifications Alt+T"
        aria-live="polite"
        aria-relevant="additions text"
        class="Toastify"
      >
        <div
          class="Toastify__toast-container Toastify__toast-container--top-right"
          tabindex="-1"
        >
          <div
            class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right"
            data-in="true"
            id="8"
            role="alert"
            tabindex="0"
          >
            <div
              class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter"
            >
              <svg
                fill="var(--toastify-icon-color-error)"
                height="100%"
                viewBox="0 0 24 24"
                width="100%"
              >
                <path
                  d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"
                />
              </svg>
            </div>
            TypeError: Cannot mix BigInt and other types, use explicit conversions
            <button
              aria-label="close"
              class="Toastify__close-button Toastify__close-button--dark"
              type="button"
            >
              <svg
                aria-hidden="true"
                viewBox="0 0 14 16"
              >
                <path
                  d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"
                  fill-rule="evenodd"
                />
              </svg>
            </button>
            <div
              class="Toastify__progress-bar--wrp"
              data-hidden="false"
            >
              <div
                class="Toastify__progress-bar--bg Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
              />
              <div
                aria-hidden="false"
                aria-label="notification timer"
                class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--dark Toastify__progress-bar--error"
                role="progressbar"
                style="animation-duration: 2000ms; animation-play-state: paused;"
              />
            </div>
          </div>
        </div>
      </section>
      <div
        class="sc-jWojfa gOMhPW"
      >
        <div
          class="sc-kVrTmx dSIcDd"
        >
          <div
            class="sc-ivVeuv hQBWoJ"
          >
            <img
              alt="cashtab"
              class="sc-cCbXAZ jOUSPN"
              src="test-file-stub"
            />
          </div>
          <div
            class="sc-cmIlrE ckvYmi"
          >
            <div
              class="sc-jkCMRl gxKbjs"
            >
              <select
                class="sc-crNyjn bXFivV"
                data-testid="wallet-select"
                id="wallets"
                name="wallets"
              >
                <option
                  class="sc-cpHetk jodErs"
                  value="Token Test"
                >
                  Token Test
                </option>
              </select>
              <div
                class="sc-bqjOQT kauMuv"
              >
                <button
                  aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue"
                  class="sc-cJSrbW kZNvLw"
                >
                  <svg
                    title="copy-paste"
                  />
                </button>
                <div
                  class="sc-eerKOB cvXwwv"
                >
                  <div
                    class="sc-emmjRN bSWkUh"
                  >
                    <input
                      checked=""
                      class="sc-gFaPwZ iPJMNd"
                      id="show-hide-balance"
                      name="show-hide-balance"
                      title="show-hide-balance"
                      type="checkbox"
                    />
                    <label
                      class="sc-cpmLhU iUeRKn"
                      for="show-hide-balance"
                    >
                      <span
                        class="sc-dymIpo hGwQkt"
                        data-off=""
                        data-on=""
                      />
                      <span
                        class="sc-bnXvFD cpOMDW"
                      />
                    </label>
                  </div>
                ...
    at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27)
    at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33
    at Object.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1838:52)

Each failure log is accessible here:
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 1 sat/byte to p2pkh address
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 1 sat/byte to p2pkh address if all utxos are mature coinbase utxos
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 1 sat/byte to p2pkh address with an OP_RETURN output
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 1 sat/byte to p2pkh address with an OP_RETURN output at index 0
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 1 sat/byte to p2sh address
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1000 satoshis with 1 change output at 10 sat/byte
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1 satoshi per byte tx with no change outputs
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1 satoshi per byte tx with no change outputs from a wallet with utxos at many addresses
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 1 satoshi per byte tx broadcast actually broadcast with this function
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: No precision error using JS Number on utxo with highest theoretically possible value
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 15000 satoshis with 1 change output at 1 sat/byte to 5 p2pkh addresses
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: 15000 satoshis with 1 change output at 1 sat/byte to 5 p2sh outputs
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: Sending below dust threshold
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: Sending above wallet balance
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: Sending within wallet balance but insufficient to cover fee
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: throws broadcast error from the node
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can broadcast XEC transactions sendXec: Insufficient balance due to immature coinbase utxos
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can build a tx to get the exact fee, then add another utxo if necessary
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We will throw expected insufficient funds error if we have enough utxos to cover target send amount but not enough to cover the fee
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can create and broadcast SLP v1 SEND and BURN txs from utxos of nng or in-node chronik shape Build and broadcast an SLP V1 SEND and BURN tx from in-node chronik-client utxos: SLP send and burn with token change
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can create and broadcast SLP v1 SEND and BURN txs from utxos of nng or in-node chronik shape Build and broadcast an SLP V1 SEND and BURN tx from in-node chronik-client utxos: SLP send and BURN with no token change
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can create and broadcast SLP v1 SEND and BURN txs from utxos of nng or in-node chronik shape Build and broadcast an SLP V1 SEND and BURN tx from in-node chronik-client utxos: SLP max send tx using all available input utxos
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can build and broadcast NFT1 parent fan-out txs sendXec: Gets 19 fan outputs for an NFT1 parent fan tx for max outputs and no change
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can build and broadcast NFT1 parent fan-out txs sendXec: Gets 18 fan outputs for an NFT1 parent fan tx for max outputs if we have change
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can build and broadcast NFT1 parent fan-out txs sendXec: Gets token amount fan outputs for an NFT1 parent fan tx if user has less than 19 of this token left
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can get the max amount of XEC that a wallet can send We determine the max-send amount as the total value of all nonSlpUtxos less the required fee in satoshis
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can get the max amount of XEC that a wallet can send We can also determine the max send amount if the user includes a Cashtab Msg
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can get the max amount of XEC that a wallet can send The max send amount is lower if the fee is higher
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can get the max amount of XEC that a wallet can send We must adjust for a higher fee if we have more utxos
CashTab Unit Tests: Cashtab functions that build and broadcast rawtxs We can get the max amount of XEC that a wallet can send An immature Coinbase utxo will be ignored in the onMax calculation
CashTab Unit Tests: <CreateTokenForm /> User can create an SLP1 token with no mint baton
CashTab Unit Tests: <CreateTokenForm /> User can create an SLP1 token with a mint baton
CashTab Unit Tests: <CreateTokenForm /> User can create an NFT collection
CashTab Unit Tests: <CreateTokenForm /> User can create an ALP token
CashTab Unit Tests: <Configure /> Setting "Send Confirmations" settings will show send confirmations
CashTab Unit Tests: <Configure /> "ABSOLUTE MINIMUM fees" setting is available and effective if wallet holds exactly required balance of Cachet
CashTab Unit Tests: <Configure /> Setting "ABSOLUTE MINIMUM fees" settings will reduce fees to absolute min
CashTab Unit Tests: <Token /> Renders the send token notification upon successful broadcast
CashTab Unit Tests: <Token /> Renders the burn token success notification upon successful burn tx broadcast
CashTab Unit Tests: <Token /> We can mint an slpv1 token if we have a mint baton
CashTab Unit Tests: <Token /> We can mint an slpv1 token if we have a mint baton and confirm modals enabled
CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 fungible token
CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with no NFT Mint inputs, then create some NFT Mint inputs
CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with NFT Mint inputs, then mint an NFT
CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 NFT
CashTab Unit Tests: <Token /> available actions rendered We can send an SLP1 NFT
CashTab Unit Tests: <Token /> available actions rendered We can send an ALP token
CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token with change
CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token without change
CashTab Unit Tests: <Token /> available actions rendered We can mint max one-output ALP token qty
CashTab Unit Tests: <Token /> available actions rendered We can list an ALP fungible token
CashTab Unit Tests: <Token /> available actions rendered We can redeem XECX for XEC 1:1 using a workflow unique to XECX
CashTab Unit Tests: <SendXec /> Clicking "Send" will send a valid tx with op_return_raw after entry of a valid address and bip21 query string with valid amount and op_return_raw params to Send To field
CashTab Unit Tests: <SendXec /> We can calculate max send amount with and without a cashtab msg, and send a max sat tx with a cashtab msg
CashTab Unit Tests: <SendXec /> If the user has minFeeSends set to true but no longer has the right token amount, the feature is disabled
CashTab Unit Tests: <SendXec /> We can send a tx with amount denominated in fiat currency
CashTab Unit Tests: <SendXec /> We can send an XEC tx to multiple users
CashTab Unit Tests: <SendXec /> If we type a Cashtab msg, then disable the switch, we send a tx without our typed Cashtab message
CashTab Unit Tests: <SendXec /> Entering a valid bip21 query string with multiple outputs and op_return_raw will correctly populate UI fields, and the tx can be sent
CashTab Unit Tests: <SendXec /> SLP1 Fungible: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent
CashTab Unit Tests: <SendXec /> ALP Fungible: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent
CashTab Unit Tests: <SendXec /> SLP1 NFT Child: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent

patch implementation of reduce in cashtab transactions (do not mix bigint and number)

tobias_ruck added inline comments.
chronik/chronik-plugin-impl/src/etoken.py
35
89
chronik/chronik-plugin-impl/src/tx.py
32
modules/chronik-client/package.json
10
modules/chronik-client/src/ChronikClient.ts
1093

with the package.json "build-proto" change this isn't needed, and with (probably?) all BigInt uses in this file

modules/ecash-agora/README.md
58
59
82
99
108
111
112
modules/ecash-lib/README.md
55
64
70
This revision now requires changes to proceed.Wed, Feb 26, 20:57

update proto script, patch lingering "value:" keys in READMEs, downstream impacts of proto script update (other bigints, type handling)