From 37a417808203d45e3bb4f3783b86dc11bde804db Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 12 May 2022 18:39:17 +0000 Subject: [PATCH] Publish autogenerated nightly docs --- .../docs-rs/bdk/nightly/latest/bdk/all.html | 2 +- .../compact_filters/struct.Peer.html | 6 +- .../latest/bdk/descriptor/derived/index.html | 2 +- .../derived/struct.DerivedDescriptorKey.html | 18 +- .../descriptor/derived/trait.AsDerived.html | 8 +- .../bdk/descriptor/enum.Descriptor.html | 83 +++++- .../descriptor/enum.DescriptorPublicKey.html | 13 +- .../latest/bdk/descriptor/enum.Legacy.html | 38 ++- .../latest/bdk/descriptor/enum.Segwitv0.html | 38 ++- .../nightly/latest/bdk/descriptor/index.html | 2 +- .../policy/enum.BuildSatisfaction.html | 8 +- .../descriptor/policy/enum.PolicyError.html | 14 +- .../descriptor/policy/enum.Satisfaction.html | 12 +- .../policy/enum.SatisfiableItem.html | 24 +- .../latest/bdk/descriptor/policy/index.html | 2 +- .../descriptor/policy/struct.Condition.html | 24 +- .../bdk/descriptor/policy/struct.PkOrF.html | 10 +- .../bdk/descriptor/policy/struct.Policy.html | 14 +- .../descriptor/policy/type.ConditionMap.html | 2 +- .../policy/type.FoldedConditionMap.html | 2 +- .../bdk/descriptor/struct.DescriptorXKey.html | 8 +- .../bdk/descriptor/struct.Miniscript.html | 34 ++- .../template/type.DescriptorTemplateOut.html | 2 +- .../bdk/descriptor/trait.ExtractPolicy.html | 6 +- .../trait.IntoWalletDescriptor.html | 6 +- .../bdk/descriptor/trait.ScriptContext.html | 65 +++-- .../descriptor/type.DerivedDescriptor.html | 2 +- .../descriptor/type.ExtendedDescriptor.html | 4 +- .../bdk/descriptor/type.HdKeyPaths.html | 2 +- .../bdk/keys/bip39/struct.Mnemonic.html | 2 +- .../latest/bdk/keys/enum.DescriptorKey.html | 4 +- .../bdk/keys/enum.DescriptorPublicKey.html | 13 +- .../bdk/keys/enum.DescriptorSecretKey.html | 2 +- .../latest/bdk/keys/enum.ExtendedKey.html | 18 +- .../latest/bdk/keys/enum.KeyError.html | 12 +- .../bdk/keys/enum.ScriptContextEnum.html | 11 +- .../latest/bdk/keys/enum.SinglePubKey.html | 53 ++++ .../bdk/nightly/latest/bdk/keys/index.html | 3 +- .../nightly/latest/bdk/keys/sidebar-items.js | 2 +- .../bdk/keys/struct.DescriptorSinglePub.html | 4 +- .../latest/bdk/keys/struct.GeneratedKey.html | 16 +- .../struct.PrivateKeyGenerateOptions.html | 10 +- .../latest/bdk/keys/trait.DerivableKey.html | 12 +- .../bdk/keys/trait.ExtScriptContext.html | 14 +- .../keys/trait.GeneratableDefaultOptions.html | 8 +- .../latest/bdk/keys/trait.GeneratableKey.html | 14 +- .../bdk/keys/trait.IntoDescriptorKey.html | 14 +- .../latest/bdk/keys/trait.ScriptContext.html | 65 +++-- .../latest/bdk/wallet/enum.AddressIndex.html | 4 +- .../bdk/wallet/fn.get_funded_wallet.html | 2 +- .../fn.wallet_name_from_descriptor.html | 2 +- .../bdk/nightly/latest/bdk/wallet/index.html | 2 +- .../bdk/wallet/signer/enum.SignerError.html | 27 +- .../bdk/wallet/signer/enum.SignerId.html | 22 +- .../latest/bdk/wallet/signer/index.html | 2 +- .../bdk/wallet/signer/struct.SignOptions.html | 8 +- .../wallet/signer/struct.SignerOrdering.html | 18 +- .../signer/struct.SignersContainer.html | 24 +- .../bdk/wallet/signer/trait.Signer.html | 12 +- .../latest/bdk/wallet/struct.AddressInfo.html | 57 ++-- .../latest/bdk/wallet/struct.SyncOptions.html | 6 +- .../latest/bdk/wallet/struct.Wallet.html | 60 ++-- .../tx_builder/enum.ChangeSpendPolicy.html | 18 +- .../wallet/tx_builder/enum.TxOrdering.html | 20 +- .../latest/bdk/wallet/tx_builder/index.html | 2 +- .../wallet/tx_builder/struct.TxBuilder.html | 69 +++-- .../implementors/core/convert/trait.From.js | 2 +- .../bdk/nightly/latest/search-index.js | 2 +- .../blockchain/compact_filters/peer.rs.html | 10 +- .../src/bdk/blockchain/esplora/api.rs.html | 4 +- .../latest/src/bdk/descriptor/derived.rs.html | 66 ++++- .../latest/src/bdk/descriptor/dsl.rs.html | 6 +- .../latest/src/bdk/descriptor/mod.rs.html | 44 ++- .../latest/src/bdk/descriptor/policy.rs.html | 232 +++++++++++++-- .../nightly/latest/src/bdk/keys/mod.rs.html | 72 +++-- .../nightly/latest/src/bdk/psbt/mod.rs.html | 10 +- .../latest/src/bdk/testutils/mod.rs.html | 84 +----- .../nightly/latest/src/bdk/wallet/mod.rs.html | 264 ++++++++---------- .../latest/src/bdk/wallet/signer.rs.html | 106 +++++-- .../latest/src/bdk/wallet/tx_builder.rs.html | 14 +- 80 files changed, 1198 insertions(+), 801 deletions(-) create mode 100644 docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.SinglePubKey.html diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/all.html index 6915168d48..03b607d76b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/all.html @@ -5,5 +5,5 @@

List of all items

Structs

Enums

Traits

Macros

Functions

Typedefs

+ logo

List of all items

Structs

Enums

Traits

Macros

Functions

Typedefs

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Peer.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Peer.html index dd1b763b15..9fc61061df 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Peer.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Peer.html @@ -7,7 +7,7 @@

Peer

logo
pub struct Peer { /* private fields */ }
This is supported on crate feature compact_filters only.
Expand description

A Bitcoin peer

-

Implementations

Connect to a peer over a plaintext TCP connection

+

Implementations

Connect to a peer over a plaintext TCP connection

This function internally spawns a new thread that will monitor incoming messages from the peer, and optionally reply to some of them transparently, like pings

Connect to a peer through a SOCKS5 proxy, optionally by using some credentials, specified @@ -18,8 +18,8 @@ peer, and optionally reply to some of them transparently, like

Return the Bitcoin [Network] in use

Return the mempool used by this peer

Return whether or not the peer is still connected

-

Send a raw Bitcoin message to the peer

-

Waits for a specific incoming Bitcoin message, optionally with a timeout

+

Send a raw Bitcoin message to the peer

+

Waits for a specific incoming Bitcoin message, optionally with a timeout

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/index.html index 09cca95376..b15eb0cac9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/index.html @@ -6,7 +6,7 @@ logo

Module derived

logo
Expand description

Derived descriptor keys

+

Module bdk::descriptor::derived

source · []
Expand description

Derived descriptor keys

The DerivedDescriptorKey type is a wrapper over the standard DescriptorPublicKey which guarantees that all the extended keys have a fixed derivation path, i.e. all the wildcards have been replaced by actual derivation indexes.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/struct.DerivedDescriptorKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/struct.DerivedDescriptorKey.html index c0d5748a16..5215afd6bb 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/struct.DerivedDescriptorKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/struct.DerivedDescriptorKey.html @@ -10,13 +10,16 @@

Derived keys are guaranteed to never contain wildcards of any kind

Implementations

Construct a new derived key

Panics if the key is wildcard

-

Methods from Deref<Target = DescriptorPublicKey>

The fingerprint of the master key associated with this key

+

Methods from Deref<Target = DescriptorPublicKey>

The fingerprint of the master key associated with this key, 0x00000000 if none.

Full path, from the master key

For wildcard keys this will return the path up to the wildcard, so you can get full paths by appending one additional derivation step, according to the wildcard type (hardened or normal)

Whether or not the key has a wildcards

-

Computes the public key corresponding to this descriptor key

+

Computes the public key corresponding to this descriptor key. +When deriving from an XOnlyPublicKey, it adds the default 0x02 y-coordinate +and returns the obtained full [bitcoin::PublicKey]. All BIP32 derivations +always return a compressed key

Will return an error if the descriptor key has any hardened derivation steps in its path, or if the key has any wildcards.

To ensure there are no wildcards, call .derive(0) or similar; @@ -31,12 +34,12 @@ some function which has access to secret key data.

Formats the value using the given formatter. Read more

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

-

The associated Hash type with the publicKey

+

The associated Hash type with the publicKey

Converts an object to PublicHash

Check if the publicKey is uncompressed. The default implementation returns false Read more

-

Computes the size of a public key when serialized in a script, -including the length bytes Read more

+

Check if the publicKey is x-only. The default +implementation returns false Read more

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

@@ -51,8 +54,9 @@ operator.

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Converts an object to a public key

-

Converts a hashed version of the public key to a hash160 hash. Read more

+

Converts an object to a public key

+

Convert an object to x-only pubkey

+

Converts a hashed version of the public key to a hash160 hash. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/trait.AsDerived.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/trait.AsDerived.html index 35ae544935..b57a1f6748 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/trait.AsDerived.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/trait.AsDerived.html @@ -6,13 +6,13 @@ logo

AsDerived

logo
pub trait AsDerived {
+    

Trait bdk::descriptor::derived::AsDerived

source · []
pub trait AsDerived {
     fn as_derived<'s>(
        &self,
        index: u32,
        secp: &'s Secp256k1<All>
    ) -> Descriptor<DerivedDescriptorKey<'s>>;
fn as_derived_fixed<'s>(
        &self,
        secp: &'s Secp256k1<All>
    ) -> Descriptor<DerivedDescriptorKey<'s>>; }
Expand description

Utilities to derive descriptors

Check out the module level documentation for more.

-

Required methods

Derive a descriptor and transform all of its keys to DerivedDescriptorKey

-

Transform the keys into DerivedDescriptorKey.

+

Required methods

Derive a descriptor and transform all of its keys to DerivedDescriptorKey

+

Transform the keys into DerivedDescriptorKey.

Panics if the descriptor is not “fixed”, i.e. if it’s derivable

-

Implementors

+

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Descriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Descriptor.html index cb5d068dac..3877aae5ee 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Descriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Descriptor.html @@ -4,7 +4,7 @@
+

Descriptor

logo
pub enum Descriptor<Pk> where
    Pk: MiniscriptKey, 
{ Bare(Bare<Pk>), @@ -12,12 +12,14 @@ Wpkh(Wpkh<Pk>), Sh(Sh<Pk>), Wsh(Wsh<Pk>), + Tr(Tr<Pk>), }
Expand description

Script descriptor

Variants

Bare(Bare<Pk>)

A raw scriptpubkey (including pay-to-pubkey) under Legacy context

Pkh(Pkh<Pk>)

Pay-to-PubKey-Hash

Wpkh(Wpkh<Pk>)

Pay-to-Witness-PubKey-Hash

Sh(Sh<Pk>)

Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)

Wsh(Wsh<Pk>)

Pay-to-Witness-ScriptHash with Segwitv0 context

+

Tr(Tr<Pk>)

Pay-to-Taproot

Implementations

Create a new pk descriptor

Create a new PkH descriptor

Create a new Wpkh descriptor @@ -36,6 +38,8 @@ or does not type check at the top level

Create a new bare descriptor from witness script Errors when miniscript exceeds resource limits under bare context or does not type check at the top level

+

Create a new sh wrapper for the given wpkh descriptor

+

Create a new sh wrapper for the given wsh descriptor

Create a new sh sortedmulti descriptor with threshold k and Vec of pks. Errors when miniscript exceeds resource limits under p2sh context

@@ -44,16 +48,59 @@ Errors when miniscript exceeds resource limits under p2sh context

Errors when miniscript exceeds resource limits under segwit context

Create a new wsh sorted multi descriptor Errors when miniscript exceeds resource limits under p2sh context

+

Create new tr descriptor +Errors when miniscript exceeds resource limits under Tap context

Get the [DescriptorType] of Descriptor

+

. +Convert a Descriptor into [pretaproot::PreTaprootDescriptor]

+
Examples
+
use std::str::FromStr;
+use miniscript::descriptor::Descriptor;
+use miniscript::{PreTaprootDescriptor, PreTaprootDescriptorTrait};
+use miniscript::bitcoin;
+
+// A descriptor with a string generic
+let desc = Descriptor::<bitcoin::PublicKey>::from_str("wpkh(02e18f242c8b0b589bfffeac30e1baa80a60933a649c7fb0f1103e78fbf58aa0ed)")
+    .expect("Valid segwitv0 descriptor");
+let pre_tap_desc = desc.into_pre_taproot_desc().expect("Wsh is pre taproot");
+
+// Now the script code and explicit script no longer fail on longer fail
+// on PreTaprootDescriptor using PreTaprootDescriptorTrait
+let script_code = pre_tap_desc.script_code();
+assert_eq!(script_code.to_string(),
+    "Script(OP_DUP OP_HASH160 OP_PUSHBYTES_20 62107d047e8818b594303fe0657388cc4fc8771f OP_EQUALVERIFY OP_CHECKSIG)"
+);
+
Errors
+

This function will return an error if descriptor is not a pre taproot descriptor.

Whether or not the descriptor has any wildcards

Derives all wildcard keys in the descriptor using the supplied index

Panics if given an index ≥ 2^31

+

In most cases, you would want to use Self::derived_descriptor directly to obtain +a Descriptor<bitcoin::PublicKey>

+

Derive a Descriptor with a concrete [bitcoin::PublicKey] at a given index +Removes all extended pubkeys and wildcards from the descriptor and only leaves +concrete [bitcoin::PublicKey]. All [crate::XOnlyKey]s are converted to [bitcoin::PublicKey] +by adding a default(0x02) y-coordinate. For [crate::descriptor::Tr] descriptor, +spend info is also cached.

+
Examples
+
use miniscript::descriptor::{Descriptor, DescriptorPublicKey};
+use miniscript::bitcoin::secp256k1;
+use std::str::FromStr;
+
+// test from bip 86
+let secp = secp256k1::Secp256k1::verification_only();
+let descriptor = Descriptor::<DescriptorPublicKey>::from_str("tr(xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ/0/*)")
+    .expect("Valid ranged descriptor");
+let result = descriptor.derived_descriptor(&secp, 0).expect("Non-hardened derivation");
+assert_eq!(result.to_string(), "tr(03cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115)#6qm9h8ym");
+
Errors
+

This function will return an error if hardened derivation is attempted.

Parse a descriptor that may contain secret keys

Internally turns every secret key found into the corresponding public key and then returns a a descriptor that only contains public keys and a map to lookup the secret key given a public key.

Serialize a descriptor to string with its secret keys

-

Trait Implementations

Derive a descriptor and transform all of its keys to DerivedDescriptorKey

-

Transform the keys into DerivedDescriptorKey. Read more

+

Trait Implementations

Derive a descriptor and transform all of its keys to DerivedDescriptorKey

+

Transform the keys into DerivedDescriptorKey. Read more

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

@@ -74,30 +121,44 @@ returns the empty script.

This is used in Segwit transactions to produce an unsigned transaction whose txid will not change during signing (since only the witness data will change).

-

Computes the “witness script” of the descriptor, i.e. the underlying +

Computes the “witness script” of the descriptor, i.e. the underlying script before any hashing is done. For Bare, Pkh and Wpkh this is the scriptPubkey; for ShWpkh and Sh this is the redeemScript; -for the others it is the witness script.

-

Returns satisfying witness and scriptSig to spend an +for the others it is the witness script. +Errors:

+
    +
  • When the descriptor is Tr
  • +
+

Returns satisfying non-malleable witness and scriptSig to spend an +output controlled by the given descriptor if it possible to +construct one using the satisfier S.

+

Returns a possilbly mallable satisfying non-malleable witness and scriptSig to spend an output controlled by the given descriptor if it possible to construct one using the satisfier S.

Computes an upper bound on the weight of a satisfying witness to the transaction. Assumes all signatures are 73 bytes, including push opcode and sighash suffix. Includes the weight of the VarInts encoding the scriptSig and witness stack length.

-

Get the scriptCode of a transaction output.

+

Get the scriptCode of a transaction output.

The scriptCode is the Script of the previous transaction output being serialized in the -sighash when evaluating a CHECKSIG & co. OP code.

-

Attempts to produce a satisfying witness and scriptSig to spend an +sighash when evaluating a CHECKSIG & co. OP code. +Returns Error for Tr descriptors

+

Attempts to produce a non-malleable satisfying witness and scriptSig to spend an output controlled by the given descriptor; add the data to a given TxIn output. Read more

Deserialize this value from the given Serde deserializer. Read more

Formats the value using the given formatter. Read more

-

Extract the spending policy

+

Extract the spending policy

Run a predicate on every key in the descriptor, returning whether the predicate returned true for every key Read more

Run a predicate on every key in the descriptor, returning whether the predicate returned true for any key Read more

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

The associated error which can be returned from parsing.

Parses a string s to return a value of this type. Read more

Parse an expression tree into a descriptor

@@ -128,7 +189,7 @@ translatefpk returns an error in this case instead.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

-

Performs the conversion.

+

Performs the conversion.

Performs the conversion.

The alignment of pointer.

The type for initializers.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.DescriptorPublicKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.DescriptorPublicKey.html index 5b2ceb1020..efd1db0add 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.DescriptorPublicKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.DescriptorPublicKey.html @@ -13,7 +13,7 @@ either be Single public key or a Xpub

Variants

SinglePub(DescriptorSinglePub)

Single Public Key

XPub(DescriptorXKey<ExtendedPubKey>)

Xpub

-

Implementations

The fingerprint of the master key associated with this key

+

Implementations

The fingerprint of the master key associated with this key, 0x00000000 if none.

Full path, from the master key

For wildcard keys this will return the path up to the wildcard, so you can get full paths by appending one additional derivation step, according @@ -21,7 +21,10 @@ to the wildcard type (hardened or normal)

Whether or not the key has a wildcards

If this public key has a wildcard, replace it by the given index

Panics if given an index ≥ 2^31

-

Computes the public key corresponding to this descriptor key

+

Computes the public key corresponding to this descriptor key. +When deriving from an XOnlyPublicKey, it adds the default 0x02 y-coordinate +and returns the obtained full [bitcoin::PublicKey]. All BIP32 derivations +always return a compressed key

Will return an error if the descriptor key has any hardened derivation steps in its path, or if the key has any wildcards.

To ensure there are no wildcards, call .derive(0) or similar; @@ -36,13 +39,13 @@ some function which has access to secret key data.

Parses a string s to return a value of this type. Read more

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

-

Turn the key into a DescriptorKey within the requested ScriptContext

+

Turn the key into a DescriptorKey within the requested ScriptContext

The associated Hash type with the publicKey

Check if the publicKey is uncompressed. The default implementation returns false Read more

+

Check if the publicKey is x-only. The default +implementation returns false Read more

Converts an object to PublicHash

-

Computes the size of a public key when serialized in a script, -including the length bytes Read more

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Legacy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Legacy.html index 34f7c52c14..8c820c6538 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Legacy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Legacy.html @@ -29,7 +29,8 @@ operator.

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Depending on ScriptContext, fragments can be malleable. For Example, +

The consensus key associated with the type. Must be a parseable key

+

Depending on ScriptContext, fragments can be malleable. For Example, under Legacy context, PkH is malleable because it is possible to estimate the cost of satisfaction because of compressed keys This is currently only used in compiler code for removing malleable @@ -37,10 +38,10 @@ compilations. This does NOT recursively check if the children of the fragment are valid or not. Since the compilation proceeds in a leaf to root fashion, a recursive check is unnecessary. Read more

-

Check whether the given satisfaction is valid under the ScriptContext +

Check whether the given satisfaction is valid under the ScriptContext For example, segwit satisfactions may fail if the witness len is more 3600 or number of stack elements are more than 100. Read more

-

Depending on script Context, some of the Terminals might not +

Depending on script Context, some of the Terminals might not be valid under the current consensus rules. Or some of the script resource limits may have been exceeded. These miniscripts would never be accepted by the Bitcoin network and hence @@ -50,17 +51,23 @@ uncompressed public keys are non-standard and thus invalid. In LegacyP2SH context, scripts above 520 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments. Read more

-

Consensus rules at the Miniscript satisfaction time. +

Consensus rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes. Read more

-

Policy rules at the Miniscript satisfaction time. +

Policy rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path in Legacy context scriptSig more than 1650 bytes Read more

-

Depending on script context, the size of a satifaction witness may slightly differ.

-

Depending on script Context, some of the script resource limits +

Depending on script context, the size of a satifaction witness may slightly differ.

+

Get the len of public key when serialized based on context +Note that this includes the serialization prefix. Returns +34/66 for Bare/Legacy based on key compressedness +34 for Segwitv0, 33 for Tap Read more

+

Local helper function to display error messages with context

+

The type of signature required for satisfaction

+

Depending on script Context, some of the script resource limits may have been exceeded under the current bitcoin core policy rules These miniscripts would never be accepted by the Bitcoin network and hence it is safe to discard them. (unless explicitly disabled by non-standard flag) @@ -68,19 +75,20 @@ For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey scripts over 3600 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments. Read more

-

Check the consensus + policy(if not disabled) rules that are not based +

Check the consensus + policy(if not disabled) rules that are not based satisfaction Read more

-

Check the consensus + policy(if not disabled) rules including the +

Check the consensus + policy(if not disabled) rules including the ones for satisfaction Read more

-

Check whether the top-level is type B

-

Other top level checks that are context specific

-

Check top level consensus rules.

+

Check whether the top-level is type B

+

Other top level checks that are context specific

+

Check top level consensus rules.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

-

Returns the ScriptContext as a ScriptContextEnum

-

Returns whether the script context is Legacy

-

Returns whether the script context is Segwitv0

+

Returns the ScriptContext as a ScriptContextEnum

+

Returns whether the script context is Legacy

+

Returns whether the script context is Segwitv0

+

Returns whether the script context is Tap, aka Taproot or Segwit V1

Performs the conversion.

Performs the conversion.

The alignment of pointer.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Segwitv0.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Segwitv0.html index ae4646e556..1f89cb1c1b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Segwitv0.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.Segwitv0.html @@ -26,7 +26,8 @@ operator.

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Depending on ScriptContext, fragments can be malleable. For Example, +

The consensus key associated with the type. Must be a parseable key

+

Depending on ScriptContext, fragments can be malleable. For Example, under Legacy context, PkH is malleable because it is possible to estimate the cost of satisfaction because of compressed keys This is currently only used in compiler code for removing malleable @@ -34,10 +35,10 @@ compilations. This does NOT recursively check if the children of the fragment are valid or not. Since the compilation proceeds in a leaf to root fashion, a recursive check is unnecessary. Read more

-

Check whether the given satisfaction is valid under the ScriptContext +

Check whether the given satisfaction is valid under the ScriptContext For example, segwit satisfactions may fail if the witness len is more 3600 or number of stack elements are more than 100. Read more

-

Depending on script Context, some of the Terminals might not +

Depending on script Context, some of the Terminals might not be valid under the current consensus rules. Or some of the script resource limits may have been exceeded. These miniscripts would never be accepted by the Bitcoin network and hence @@ -47,11 +48,11 @@ uncompressed public keys are non-standard and thus invalid. In LegacyP2SH context, scripts above 520 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments. Read more

-

Consensus rules at the Miniscript satisfaction time. +

Consensus rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes. Read more

-

Depending on script Context, some of the script resource limits +

Depending on script Context, some of the script resource limits may have been exceeded under the current bitcoin core policy rules These miniscripts would never be accepted by the Bitcoin network and hence it is safe to discard them. (unless explicitly disabled by non-standard flag) @@ -59,25 +60,32 @@ For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey scripts over 3600 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments. Read more

-

Policy rules at the Miniscript satisfaction time. +

Policy rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path in Legacy context scriptSig more than 1650 bytes Read more

-

Depending on script context, the size of a satifaction witness may slightly differ.

-

Check the consensus + policy(if not disabled) rules that are not based +

Depending on script context, the size of a satifaction witness may slightly differ.

+

Get the len of public key when serialized based on context +Note that this includes the serialization prefix. Returns +34/66 for Bare/Legacy based on key compressedness +34 for Segwitv0, 33 for Tap Read more

+

Local helper function to display error messages with context

+

The type of signature required for satisfaction

+

Check the consensus + policy(if not disabled) rules that are not based satisfaction Read more

-

Check the consensus + policy(if not disabled) rules including the +

Check the consensus + policy(if not disabled) rules including the ones for satisfaction Read more

-

Check whether the top-level is type B

-

Other top level checks that are context specific

-

Check top level consensus rules.

+

Check whether the top-level is type B

+

Other top level checks that are context specific

+

Check top level consensus rules.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

-

Returns the ScriptContext as a ScriptContextEnum

-

Returns whether the script context is Legacy

-

Returns whether the script context is Segwitv0

+

Returns the ScriptContext as a ScriptContextEnum

+

Returns whether the script context is Legacy

+

Returns whether the script context is Segwitv0

+

Returns whether the script context is Tap, aka Taproot or Segwit V1

Performs the conversion.

Performs the conversion.

The alignment of pointer.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/index.html index 13fdcafecf..25cef0ff8f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/index.html @@ -6,7 +6,7 @@ logo

Module descriptor

logo
-

Module bdk::descriptor

source · []
Expand description

Descriptors

+

Module bdk::descriptor

source · []
Expand description

Descriptors

This module contains generic utilities to work with descriptors, plus some re-exported types from [miniscript].

Re-exports

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.BuildSatisfaction.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.BuildSatisfaction.html index 2e989d5833..c17458c184 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.BuildSatisfaction.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.BuildSatisfaction.html @@ -6,7 +6,7 @@ logo

BuildSatisfaction

logo
pub enum BuildSatisfaction<'a> {
+    

Enum bdk::descriptor::policy::BuildSatisfaction

source · []
pub enum BuildSatisfaction<'a> {
     None,
     Psbt(&'a Psbt),
     PsbtTimelocks {
@@ -22,10 +22,10 @@
 
input_max_height: u32

The highest confirmation height between the inputs CSV should consider different inputs, but we consider the worst condition for the tx as whole

Like Psbt variant and also check for expired timelocks

-

Trait Implementations

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.PolicyError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.PolicyError.html index 392b51a7d8..d03cfe8e82 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.PolicyError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.PolicyError.html @@ -6,7 +6,7 @@ logo

PolicyError

logo
pub enum PolicyError {
+    

Enum bdk::descriptor::policy::PolicyError

source · []
pub enum PolicyError {
     NotEnoughItemsSelected(String),
     IndexOutOfRange(usize),
     AddOnLeaf,
@@ -20,18 +20,18 @@
 

AddOnPartialComplete

Can not add to an item that is Satisfaction::PartialComplete

MixedTimelockUnits

Can not merge CSV or timelock values unless both are less than or both are equal or greater than 500_000_000

IncompatibleConditions

Incompatible conditions (not currently used)

-

Trait Implementations

Formats the value using the given formatter. Read more

-

Formats the value using the given formatter. Read more

-

The lower-level source of this error, if any. Read more

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

The lower-level source of this error, if any. Read more

🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Performs the conversion.

Performs the conversion.

-

This method tests for self and other values to be equal, and is used +

This method tests for self and other values to be equal, and is used by ==. Read more

-

This method tests for !=.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.Satisfaction.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.Satisfaction.html index 2b7325951f..8fa3a341c6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.Satisfaction.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.Satisfaction.html @@ -6,7 +6,7 @@ logo

Satisfaction

logo
pub enum Satisfaction {
+    

Enum bdk::descriptor::policy::Satisfaction

source · []
pub enum Satisfaction {
     Partial {
         n: usize,
         m: usize,
@@ -41,12 +41,12 @@
 

Complete

Fields

condition: Condition

Extra conditions that also need to be satisfied

Can satisfy the policy item

None

Cannot satisfy or contribute to the policy item

-

Implementations

Returns whether the Satisfaction is a leaf item

-

Trait Implementations

Returns a copy of the value. Read more

+

Implementations

Returns whether the Satisfaction is a leaf item

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Performs the conversion.

-

Serialize this value into the given Serde serializer. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.SatisfiableItem.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.SatisfiableItem.html index 66de177405..ae163d79f5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.SatisfiableItem.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.SatisfiableItem.html @@ -4,11 +4,11 @@
+

SatisfiableItem

logo
pub enum SatisfiableItem {
-    Signature(PkOrF),
-    SignatureKey(PkOrF),
+    

Enum bdk::descriptor::policy::SatisfiableItem

source · []
pub enum SatisfiableItem {
+    EcdsaSignature(PkOrF),
+    SchnorrSignature(PkOrF),
     Sha256Preimage {
         hash: Hash,
     },
@@ -36,8 +36,8 @@
         threshold: usize,
     },
 }
Expand description

An item that needs to be satisfied

-

Variants

Signature(PkOrF)

Signature for a raw public key

-

SignatureKey(PkOrF)

Signature for an extended key fingerprint

+

Variants

EcdsaSignature(PkOrF)

ECDSA Signature for a raw public key

+

SchnorrSignature(PkOrF)

Schnorr Signature for a raw public key

Sha256Preimage

Fields

hash: Hash

The digest value

SHA256 preimage hash

Hash256Preimage

Fields

hash: Hash

The digest value

@@ -56,13 +56,13 @@

Thresh

Fields

items: Vec<Policy>

The policy items

threshold: usize

The required threshold count

Threshold items with threshold count

-

Implementations

Returns whether the SatisfiableItem is a leaf item

-

Returns a unique id for the SatisfiableItem

-

Trait Implementations

Returns a copy of the value. Read more

+

Implementations

Returns whether the SatisfiableItem is a leaf item

+

Returns a unique id for the SatisfiableItem

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Performs the conversion.

-

Serialize this value into the given Serde serializer. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/index.html index 054a7d95bc..ad86aa6644 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/index.html @@ -6,7 +6,7 @@ logo

Module policy

logo
-

Module bdk::descriptor::policy

source · []
Expand description

Descriptor policy

+

Module bdk::descriptor::policy

source · []
Expand description

Descriptor policy

This module implements the logic to extract and represent the spending policies of a descriptor in a more human-readable format.

This is an EXPERIMENTAL feature, API and other major changes are expected.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Condition.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Condition.html index e3823ca831..0ee634d04c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Condition.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Condition.html @@ -6,35 +6,35 @@ logo

Condition

logo
pub struct Condition {
+    

Struct bdk::descriptor::policy::Condition

source · []
pub struct Condition {
     pub csv: Option<u32>,
     pub timelock: Option<u32>,
 }
Expand description

An extra condition that must be satisfied but that is out of control of the user

Fields

csv: Option<u32>

Optional CheckSequenceVerify condition

timelock: Option<u32>

Optional timelock condition

-

Implementations

Returns true if there are no extra conditions to verify

-

Trait Implementations

Returns a copy of the value. Read more

+

Implementations

Returns true if there are no extra conditions to verify

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Returns the “default value” for a type. Read more

-

Feeds this value into the given Hasher. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

-

This method returns an Ordering between self and other. Read more

+

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

-

This method tests for self and other values to be equal, and is used +

This method tests for self and other values to be equal, and is used by ==. Read more

-

This method tests for !=.

-

This method returns an ordering between self and other values if one exists. Read more

+

This method tests for !=.

+

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.PkOrF.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.PkOrF.html index fab27d0cbd..b035cfd369 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.PkOrF.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.PkOrF.html @@ -6,12 +6,12 @@ logo

PkOrF

logo
pub struct PkOrF { /* private fields */ }
Expand description

Raw public key or extended key fingerprint

-

Trait Implementations

Returns a copy of the value. Read more

+

Struct bdk::descriptor::policy::PkOrF

source · []
pub struct PkOrF { /* private fields */ }
Expand description

Raw public key or extended key fingerprint

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Returns the “default value” for a type. Read more

-

Serialize this value into the given Serde serializer. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Policy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Policy.html index d732b5280e..2207cb2ab2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Policy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Policy.html @@ -6,7 +6,7 @@ logo

Policy

logo
pub struct Policy {
+    

Struct bdk::descriptor::policy::Policy

source · []
pub struct Policy {
     pub id: String,
     pub item: SatisfiableItem,
     pub satisfaction: Satisfaction,
@@ -16,18 +16,18 @@
 
item: SatisfiableItem

Type of this policy node

satisfaction: Satisfaction

How much a given PSBT already satisfies this policy node in terms of signatures

contribution: Satisfaction

How the wallet’s descriptor can satisfy this policy node

-

Implementations

Return whether or not a specific path in the policy tree is required to unambiguously +

Implementations

Return whether or not a specific path in the policy tree is required to unambiguously create a transaction

What this means is that for some spending policies the user should select which paths in the tree it intends to satisfy while signing, because the transaction must be created differently based on that.

-

Return the conditions that are set by the spending policy for a given path in the +

Return the conditions that are set by the spending policy for a given path in the policy tree

-

Trait Implementations

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Performs the conversion.

-

Serialize this value into the given Serde serializer. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/type.ConditionMap.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/type.ConditionMap.html index f27ee9cf8d..e07b51bc26 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/type.ConditionMap.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/type.ConditionMap.html @@ -6,6 +6,6 @@ logo

ConditionMap

logo
-

Type Definition bdk::descriptor::policy::ConditionMap

source · []
pub type ConditionMap = BTreeMap<usize, HashSet<Condition>>;
Expand description

Type for a map of sets of Condition items keyed by each set’s index

+

Type Definition bdk::descriptor::policy::ConditionMap

source · []
pub type ConditionMap = BTreeMap<usize, HashSet<Condition>>;
Expand description

Type for a map of sets of Condition items keyed by each set’s index

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/type.FoldedConditionMap.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/type.FoldedConditionMap.html index 190a940f1e..b6a8947608 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/type.FoldedConditionMap.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/type.FoldedConditionMap.html @@ -6,6 +6,6 @@ logo

FoldedConditionMap

logo
pub type FoldedConditionMap = BTreeMap<Vec<usize>, HashSet<Condition>>;
Expand description

Type for a map of folded sets of Condition items keyed by a vector of the combined set’s indexes

+

Type Definition bdk::descriptor::policy::FoldedConditionMap

source · []
pub type FoldedConditionMap = BTreeMap<Vec<usize>, HashSet<Condition>>;
Expand description

Type for a map of folded sets of Condition items keyed by a vector of the combined set’s indexes

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.DescriptorXKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.DescriptorXKey.html index 72ddec8215..1985e09db1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.DescriptorXKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.DescriptorXKey.html @@ -55,11 +55,11 @@ operator.

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Sign a PSBT Read more

-

Return whether or not the signer signs the whole transaction in one go instead of every +

Sign a PSBT Read more

+

Return whether or not the signer signs the whole transaction in one go instead of every input individually Read more

-

Return the SignerId for this signer Read more

-

Return the secret key for the signer Read more

+

Return the SignerId for this signer Read more

+

Return the secret key for the signer Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.Miniscript.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.Miniscript.html index 73c68561c3..51c9dddab5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.Miniscript.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.Miniscript.html @@ -78,17 +78,45 @@ if any. Otherwise returns Option::None.

Display code of type_check.

Extracts the AstElem representing the root of the miniscript

Get a reference to the inner AstElem representing the root of miniscript

-

Attempt to parse an insane(scripts don’t clear sanity checks) +

Attempt to parse an insane(scripts don’t clear sanity checks) script into a Miniscript representation. Use this to parse scripts with repeated pubkeys, timelock mixing, malleable scripts without sig or scripts that can exceed resource limits. Some of the analysis guarantees of miniscript are lost when dealing with insane scripts. In general, in a multi-party setting users should only accept sane scripts.

-

Attempt to parse a Script into Miniscript representation. +

Attempt to parse a Script into Miniscript representation. This function will fail parsing for scripts that do not clear the Miniscript::sanity_check checks. Use Miniscript::parse_insane to parse such scripts.

+
Decode/Parse a miniscript from script hex
+
extern crate bitcoin;
+extern crate miniscript;
+
+use miniscript::Miniscript;
+use miniscript::{Segwitv0, Tap};
+use miniscript::bitcoin::secp256k1::XOnlyPublicKey;
+type Segwitv0Script = Miniscript<bitcoin::PublicKey, Segwitv0>;
+type TapScript = Miniscript<XOnlyPublicKey, Tap>;
+use bitcoin::hashes::hex::FromHex;
+fn main() {
+    // parse x-only miniscript in Taproot context
+    let tapscript_ms = TapScript::parse(&bitcoin::Script::from(Vec::<u8>::from_hex(
+        "202788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac",
+    ).expect("Even length hex")))
+    .expect("Xonly keys are valid only in taproot context");
+    // tapscript fails decoding when we use them with compressed keys
+    let err = TapScript::parse(&bitcoin::Script::from(Vec::<u8>::from_hex(
+        "21022788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac",
+    ).expect("Even length hex")))
+    .expect_err("Compressed keys cannot be used in Taproot context");
+    // Segwitv0 succeeds decoding with full keys.
+    Segwitv0Script::parse(&bitcoin::Script::from(Vec::<u8>::from_hex(
+        "21022788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac",
+    ).expect("Even length hex")))
+    .expect("Compressed keys are allowed in Segwit context");
+
+}

Encode as a Bitcoin script

Size, in bytes of the script-pubkey. If this Miniscript is used outside of segwit (e.g. in a bare or P2SH descriptor), this quantity should be @@ -138,7 +166,7 @@ This can occur if the miniscript contains a

Formats the value using the given formatter. Read more

Deserialize this value from the given Serde deserializer. Read more

Formats the value using the given formatter. Read more

-

Extract the spending policy

+

Extract the spending policy

Run a predicate on every key in the descriptor, returning whether the predicate returned true for every key Read more

Run a predicate on every key in the descriptor, returning whether diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/type.DescriptorTemplateOut.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/type.DescriptorTemplateOut.html index 62238f6d27..56a53f55b7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/type.DescriptorTemplateOut.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/type.DescriptorTemplateOut.html @@ -7,6 +7,6 @@

DescriptorTemplateOut

logo
pub type DescriptorTemplateOut = (ExtendedDescriptor, KeyMap, ValidNetworks);
Expand description

Type alias for the return type of DescriptorTemplate, descriptor! and others

-

Trait Implementations

Convert to wallet descriptor

+

Trait Implementations

Convert to wallet descriptor

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ExtractPolicy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ExtractPolicy.html index 7755eb5376..cdbba842ea 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ExtractPolicy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ExtractPolicy.html @@ -6,9 +6,9 @@ logo

ExtractPolicy

logo
pub trait ExtractPolicy {
+    

Trait bdk::descriptor::ExtractPolicy

source · []
pub trait ExtractPolicy {
     fn extract_policy(
        &self,
        signers: &SignersContainer,
        psbt: BuildSatisfaction<'_>,
        secp: &Secp256k1<All>
    ) -> Result<Option<Policy>, DescriptorError>; }
Expand description

Trait implemented on Descriptors to add a method to extract the spending policy

-

Required methods

Extract the spending policy

-

Implementors

+

Required methods

Extract the spending policy

+

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.IntoWalletDescriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.IntoWalletDescriptor.html index 6fadc1faff..757b5918fc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.IntoWalletDescriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.IntoWalletDescriptor.html @@ -6,11 +6,11 @@ logo

IntoWalletDescriptor

logo
pub trait IntoWalletDescriptor {
+    

Trait bdk::descriptor::IntoWalletDescriptor

source · []
pub trait IntoWalletDescriptor {
     fn into_wallet_descriptor(
        self,
        secp: &Secp256k1<All>,
        network: Network
    ) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>; }
Expand description

Trait for types which can be converted into an ExtendedDescriptor and a KeyMap usable by a wallet in a specific [Network]

-

Required methods

Convert to wallet descriptor

-

Implementations on Foreign Types

Implementors

Required methods

Convert to wallet descriptor

+

Implementations on Foreign Types

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ScriptContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ScriptContext.html index 9da3e09426..a2814541a2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ScriptContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ScriptContext.html @@ -4,37 +4,42 @@
+

ScriptContext

logo
pub trait ScriptContext: Debug + Clone + Ord + PartialOrd<Self> + Eq + PartialEq<Self> + Hash + Sealed {
-    fn check_terminal_non_malleable<Pk, Ctx>(
        _frag: &Terminal<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
; -
fn max_satisfaction_size<Pk, Ctx>(ms: &Miniscript<Pk, Ctx>) -> Option<usize>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
; + type Key: ParseableKey + MiniscriptKey; +
Show 15 methods fn check_terminal_non_malleable<Pk>(
        _frag: &Terminal<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
; +
fn max_satisfaction_size<Pk>(ms: &Miniscript<Pk, Self>) -> Option<usize>
    where
        Pk: MiniscriptKey
; +
fn sig_type() -> SigType; +
fn pk_len<Pk>(pk: &Pk) -> usize
    where
        Pk: MiniscriptKey
; +
fn name_str() -> &'static str; - fn check_witness<Pk, Ctx>(
        _witness: &[Vec<u8, Global>]
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, + fn check_witness<Pk>(
        _witness: &[Vec<u8, Global>]
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_global_consensus_validity<Pk, Ctx>(
        _ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_global_consensus_validity<Pk>(
        _ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_global_policy_validity<Pk, Ctx>(
        _ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_global_policy_validity<Pk>(
        _ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_local_consensus_validity<Pk, Ctx>(
        _ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_local_consensus_validity<Pk>(
        _ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_local_policy_validity<Pk, Ctx>(
        _ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_local_policy_validity<Pk>(
        _ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_global_validity<Pk, Ctx>(
        ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_global_validity<Pk>(
        ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_local_validity<Pk, Ctx>(
        ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_local_validity<Pk>(
        ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn top_level_type_check<Pk, Ctx>(
        ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), Error>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn top_level_type_check<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where
        Pk: MiniscriptKey
, { ... } -
fn other_top_level_checks<Pk, Ctx>(
        _ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), Error>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn other_top_level_checks<Pk>(
        _ms: &Miniscript<Pk, Self>
    ) -> Result<(), Error>
    where
        Pk: MiniscriptKey
, { ... } -
fn top_level_checks<Pk, Ctx>(ms: &Miniscript<Pk, Ctx>) -> Result<(), Error>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn top_level_checks<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where
        Pk: MiniscriptKey
, { ... } -}
Expand description

The ScriptContext for Miniscript. Additional type information associated with +

}
Expand description

The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context

-

Required methods

Depending on ScriptContext, fragments can be malleable. For Example, +

Associated Types

The consensus key associated with the type. Must be a parseable key

+

Required methods

Depending on ScriptContext, fragments can be malleable. For Example, under Legacy context, PkH is malleable because it is possible to estimate the cost of satisfaction because of compressed keys This is currently only used in compiler code for removing malleable @@ -42,11 +47,17 @@ compilations. This does NOT recursively check if the children of the fragment are valid or not. Since the compilation proceeds in a leaf to root fashion, a recursive check is unnecessary.

-

Depending on script context, the size of a satifaction witness may slightly differ.

-

Provided methods

Check whether the given satisfaction is valid under the ScriptContext +

Depending on script context, the size of a satifaction witness may slightly differ.

+

The type of signature required for satisfaction

+

Get the len of public key when serialized based on context +Note that this includes the serialization prefix. Returns +34/66 for Bare/Legacy based on key compressedness +34 for Segwitv0, 33 for Tap

+

Local helper function to display error messages with context

+

Provided methods

Check whether the given satisfaction is valid under the ScriptContext For example, segwit satisfactions may fail if the witness len is more 3600 or number of stack elements are more than 100.

-

Depending on script Context, some of the Terminals might not +

Depending on script Context, some of the Terminals might not be valid under the current consensus rules. Or some of the script resource limits may have been exceeded. These miniscripts would never be accepted by the Bitcoin network and hence @@ -56,7 +67,7 @@ uncompressed public keys are non-standard and thus invalid. In LegacyP2SH context, scripts above 520 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments.

-

Depending on script Context, some of the script resource limits +

Depending on script Context, some of the script resource limits may have been exceeded under the current bitcoin core policy rules These miniscripts would never be accepted by the Bitcoin network and hence it is safe to discard them. (unless explicitly disabled by non-standard flag) @@ -64,21 +75,21 @@ For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey scripts over 3600 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments.

-

Consensus rules at the Miniscript satisfaction time. +

Consensus rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes.

-

Policy rules at the Miniscript satisfaction time. +

Policy rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path in Legacy context scriptSig more than 1650 bytes

-

Check the consensus + policy(if not disabled) rules that are not based +

Check the consensus + policy(if not disabled) rules that are not based satisfaction

-

Check the consensus + policy(if not disabled) rules including the +

Check the consensus + policy(if not disabled) rules including the ones for satisfaction

-

Check whether the top-level is type B

-

Other top level checks that are context specific

-

Check top level consensus rules.

-

Implementations on Foreign Types

Implementors

+

Check whether the top-level is type B

+

Other top level checks that are context specific

+

Check top level consensus rules.

+

Implementations on Foreign Types

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.DerivedDescriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.DerivedDescriptor.html index 3df898d655..41361b8998 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.DerivedDescriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.DerivedDescriptor.html @@ -6,6 +6,6 @@ logo

DerivedDescriptor

logo
-

Type Definition bdk::descriptor::DerivedDescriptor

source · []
pub type DerivedDescriptor<'s> = Descriptor<DerivedDescriptorKey<'s>>;
Expand description

Alias for a Descriptor that contains extended derived keys

+

Type Definition bdk::descriptor::DerivedDescriptor

source · []
pub type DerivedDescriptor<'s> = Descriptor<DerivedDescriptorKey<'s>>;
Expand description

Alias for a Descriptor that contains extended derived keys

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.ExtendedDescriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.ExtendedDescriptor.html index d3a4d20195..b281743ed9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.ExtendedDescriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.ExtendedDescriptor.html @@ -6,7 +6,7 @@ logo

ExtendedDescriptor

logo
-

Type Definition bdk::descriptor::ExtendedDescriptor

source · []
pub type ExtendedDescriptor = Descriptor<DescriptorPublicKey>;
Expand description

Alias for a Descriptor that can contain extended keys using DescriptorPublicKey

-

Trait Implementations

Convert to wallet descriptor

+

Type Definition bdk::descriptor::ExtendedDescriptor

source · []
pub type ExtendedDescriptor = Descriptor<DescriptorPublicKey>;
Expand description

Alias for a Descriptor that can contain extended keys using DescriptorPublicKey

+

Trait Implementations

Convert to wallet descriptor

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.HdKeyPaths.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.HdKeyPaths.html index f71b3dc6d2..d4205ec9b8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.HdKeyPaths.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/type.HdKeyPaths.html @@ -6,7 +6,7 @@ logo

HdKeyPaths

logo
-

Type Definition bdk::descriptor::HdKeyPaths

source · []
pub type HdKeyPaths = BTreeMap<PublicKey, KeySource>;
Expand description

Alias for the type of maps that represent derivation paths in a psbt::Input or +

Type Definition bdk::descriptor::HdKeyPaths

source · []
pub type HdKeyPaths = BTreeMap<PublicKey, KeySource>;
Expand description

Alias for the type of maps that represent derivation paths in a psbt::Input or psbt::Output

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/bip39/struct.Mnemonic.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/bip39/struct.Mnemonic.html index b8cb73c257..ae242ccfa0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/bip39/struct.Mnemonic.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/bip39/struct.Mnemonic.html @@ -62,7 +62,7 @@ key origin and derivation path

Extra options required by the generate_with_entropy

Returned error in case of failure

Generate a key given the extra options and the entropy

-

Generate a key given the options with a random entropy

+

Generate a key given the options with a random entropy

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

This method returns an Ordering between self and other. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorKey.html index f1f811b4d7..a2679f430e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorKey.html @@ -13,8 +13,8 @@

Create an instance given a secret key and a set of valid networks

Override the computed set of valid networks

Trait Implementations

Formats the value using the given formatter. Read more

-

The “identity” conversion is used internally by some bdk::fragments

-

Turn the key into a DescriptorKey within the requested ScriptContext

+

The “identity” conversion is used internally by some bdk::fragments

+

Turn the key into a DescriptorKey within the requested ScriptContext

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorPublicKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorPublicKey.html index 00298181bf..fa5bf7996b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorPublicKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorPublicKey.html @@ -13,7 +13,7 @@ either be Single public key or a Xpub

Variants

SinglePub(DescriptorSinglePub)

Single Public Key

XPub(DescriptorXKey<ExtendedPubKey>)

Xpub

-

Implementations

The fingerprint of the master key associated with this key

+

Implementations

The fingerprint of the master key associated with this key, 0x00000000 if none.

Full path, from the master key

For wildcard keys this will return the path up to the wildcard, so you can get full paths by appending one additional derivation step, according @@ -21,7 +21,10 @@ to the wildcard type (hardened or normal)

Whether or not the key has a wildcards

If this public key has a wildcard, replace it by the given index

Panics if given an index ≥ 2^31

-

Computes the public key corresponding to this descriptor key

+

Computes the public key corresponding to this descriptor key. +When deriving from an XOnlyPublicKey, it adds the default 0x02 y-coordinate +and returns the obtained full [bitcoin::PublicKey]. All BIP32 derivations +always return a compressed key

Will return an error if the descriptor key has any hardened derivation steps in its path, or if the key has any wildcards.

To ensure there are no wildcards, call .derive(0) or similar; @@ -36,13 +39,13 @@ some function which has access to secret key data.

Parses a string s to return a value of this type. Read more

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

-

Turn the key into a DescriptorKey within the requested ScriptContext

+

Turn the key into a DescriptorKey within the requested ScriptContext

The associated Hash type with the publicKey

Check if the publicKey is uncompressed. The default implementation returns false Read more

+

Check if the publicKey is x-only. The default +implementation returns false Read more

Converts an object to PublicHash

-

Computes the size of a public key when serialized in a script, -including the length bytes Read more

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorSecretKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorSecretKey.html index ccf4513ca2..31c8295719 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorSecretKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorSecretKey.html @@ -22,7 +22,7 @@ for more details.

Formats the value using the given formatter. Read more

The associated error which can be returned from parsing.

Parses a string s to return a value of this type. Read more

-

Turn the key into a DescriptorKey within the requested ScriptContext

+

Turn the key into a DescriptorKey within the requested ScriptContext

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.ExtendedKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.ExtendedKey.html index 951ed518b9..071e4eac5d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.ExtendedKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.ExtendedKey.html @@ -6,7 +6,7 @@ logo

ExtendedKey

logo
pub enum ExtendedKey<Ctx: ScriptContext = Legacy> {
+    

Enum bdk::keys::ExtendedKey

source · []
pub enum ExtendedKey<Ctx: ScriptContext = Legacy> {
     Private((ExtendedPrivKey, PhantomData<Ctx>)),
     Public((ExtendedPubKey, PhantomData<Ctx>)),
 }
Expand description

Enum for extended keys that can be either xprv or xpub

@@ -15,17 +15,17 @@ or an ExtendedPubKey by using t

Defaults to the Legacy context.

Variants

Private((ExtendedPrivKey, PhantomData<Ctx>))

A private extended key, aka an xprv

Public((ExtendedPubKey, PhantomData<Ctx>))

A public extended key, aka an xpub

-

Implementations

Return whether or not the key contains the private data

-

Transform the ExtendedKey into an ExtendedPrivKey for the +

Implementations

Return whether or not the key contains the private data

+

Transform the ExtendedKey into an ExtendedPrivKey for the given [Network], if the key contains the private data

-

Transform the ExtendedKey into an ExtendedPubKey for the +

Transform the ExtendedKey into an ExtendedPubKey for the given [Network]

-

Trait Implementations

Identity conversion

-

Consume self and turn it into an ExtendedKey Read more

-

Consume self and turn it into a DescriptorKey by adding the extra metadata, such as +

Trait Implementations

Identity conversion

+

Consume self and turn it into an ExtendedKey Read more

+

Consume self and turn it into a DescriptorKey by adding the extra metadata, such as key origin and derivation path Read more

-

Performs the conversion.

-

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.KeyError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.KeyError.html index e3c84ddf6a..0db5187383 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.KeyError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.KeyError.html @@ -6,7 +6,7 @@ logo

KeyError

logo
-

Enum bdk::keys::KeyError

source · []
pub enum KeyError {
+    

Enum bdk::keys::KeyError

source · []
pub enum KeyError {
     InvalidScriptContext,
     InvalidNetwork,
     InvalidChecksum,
@@ -20,14 +20,14 @@
 

Message(String)

Custom error message

Bip32(Error)

BIP32 error

Miniscript(Error)

Miniscript error

-

Trait Implementations

Formats the value using the given formatter. Read more

-

Formats the value using the given formatter. Read more

-

The lower-level source of this error, if any. Read more

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

The lower-level source of this error, if any. Read more

🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

Performs the conversion.

-

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

Performs the conversion.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.ScriptContextEnum.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.ScriptContextEnum.html index 7b0df59c0a..fd4a442aca 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.ScriptContextEnum.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.ScriptContextEnum.html @@ -4,16 +4,19 @@
+

ScriptContextEnum

logo
pub enum ScriptContextEnum {
+    

Enum bdk::keys::ScriptContextEnum

source · []
pub enum ScriptContextEnum {
     Legacy,
     Segwitv0,
+    Tap,
 }
Expand description

Enum representation of the known valid ScriptContexts

Variants

Legacy

Legacy scripts

Segwitv0

Segwitv0 scripts

-

Implementations

Returns whether the script context is ScriptContextEnum::Legacy

-

Returns whether the script context is ScriptContextEnum::Segwitv0

+

Tap

Taproot scripts

+

Implementations

Returns whether the script context is ScriptContextEnum::Legacy

+

Returns whether the script context is ScriptContextEnum::Segwitv0

+

Returns whether the script context is ScriptContextEnum::Tap

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.SinglePubKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.SinglePubKey.html new file mode 100644 index 0000000000..d8e4e7d3b2 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.SinglePubKey.html @@ -0,0 +1,53 @@ +SinglePubKey in bdk::keys - Rust + +
pub enum SinglePubKey {
+    FullKey(PublicKey),
+    XOnly(XOnlyPublicKey),
+}
Expand description

Single public key without any origin or range information

+

Variants

FullKey(PublicKey)

FullKey (compressed or uncompressed)

+

XOnly(XOnlyPublicKey)

XOnlyPublicKey

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method returns an Ordering between self and other. Read more

+

Compares and returns the maximum of two values. Read more

+

Compares and returns the minimum of two values. Read more

+

Restrict a value to a certain interval. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

This method returns an ordering between self and other values if one exists. Read more

+

This method tests less than (for self and other) and is used by the < operator. Read more

+

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more

+

This method tests greater than (for self and other) and is used by the > operator. Read more

+

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/index.html index 29e917922f..221578ffb6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/index.html @@ -6,7 +6,7 @@ logo

Module keys

logo
-

Module bdk::keys

source · []
Expand description

Key formats

+

Module bdk::keys

source · []
Expand description

Key formats

Modules

bip39keys-bip39

BIP-0039

Structs

@@ -23,6 +23,7 @@ either be Single public key or a Xpub

Enum for extended keys that can be either xprv or xpub

Errors thrown while working with keys

Enum representation of the known valid ScriptContexts

+

Single public key without any origin or range information

Traits

Trait for keys that can be derived.

Trait that adds extra useful methods to ScriptContexts

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/sidebar-items.js index 9b1ae8b56f..bdddb05e29 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"enum":[["DescriptorKey","Container for public or secret keys"],["DescriptorPublicKey","The MiniscriptKey corresponding to Descriptors. This can either be Single public key or a Xpub"],["DescriptorSecretKey","A Secret Key that can be either a single key or an Xprv"],["ExtendedKey","Enum for extended keys that can be either `xprv` or `xpub`"],["KeyError","Errors thrown while working with `keys`"],["ScriptContextEnum","Enum representation of the known valid [`ScriptContext`]s"]],"fn":[["any_network","Create a set containing mainnet, testnet and regtest"],["mainnet_network","Create a set only containing mainnet"],["merge_networks","Compute the intersection of two sets"],["test_networks","Create a set containing testnet and regtest"]],"mod":[["bip39","BIP-0039"]],"struct":[["DescriptorSinglePriv","A Single Descriptor Secret Key with optional origin information"],["DescriptorSinglePub","A Single Descriptor Key with optional origin information"],["GeneratedKey","Output of a [`GeneratableKey`] key generation"],["PrivateKeyGenerateOptions","Options for generating a [`PrivateKey`]"],["SortedMultiVec","Contents of a “sortedmulti” descriptor"]],"trait":[["DerivableKey","Trait for keys that can be derived."],["ExtScriptContext","Trait that adds extra useful methods to [`ScriptContext`]s"],["GeneratableDefaultOptions","Trait that allows generating a key with the default options"],["GeneratableKey","Trait for keys that can be generated"],["IntoDescriptorKey","Trait for objects that can be turned into a public or secret [`DescriptorKey`]"],["ScriptContext","The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"]],"type":[["KeyMap","Alias type for a map of public key to secret key"],["ValidNetworks","Set of valid networks for a key"]]}); \ No newline at end of file +initSidebarItems({"enum":[["DescriptorKey","Container for public or secret keys"],["DescriptorPublicKey","The MiniscriptKey corresponding to Descriptors. This can either be Single public key or a Xpub"],["DescriptorSecretKey","A Secret Key that can be either a single key or an Xprv"],["ExtendedKey","Enum for extended keys that can be either `xprv` or `xpub`"],["KeyError","Errors thrown while working with `keys`"],["ScriptContextEnum","Enum representation of the known valid [`ScriptContext`]s"],["SinglePubKey","Single public key without any origin or range information"]],"fn":[["any_network","Create a set containing mainnet, testnet and regtest"],["mainnet_network","Create a set only containing mainnet"],["merge_networks","Compute the intersection of two sets"],["test_networks","Create a set containing testnet and regtest"]],"mod":[["bip39","BIP-0039"]],"struct":[["DescriptorSinglePriv","A Single Descriptor Secret Key with optional origin information"],["DescriptorSinglePub","A Single Descriptor Key with optional origin information"],["GeneratedKey","Output of a [`GeneratableKey`] key generation"],["PrivateKeyGenerateOptions","Options for generating a [`PrivateKey`]"],["SortedMultiVec","Contents of a “sortedmulti” descriptor"]],"trait":[["DerivableKey","Trait for keys that can be derived."],["ExtScriptContext","Trait that adds extra useful methods to [`ScriptContext`]s"],["GeneratableDefaultOptions","Trait that allows generating a key with the default options"],["GeneratableKey","Trait for keys that can be generated"],["IntoDescriptorKey","Trait for objects that can be turned into a public or secret [`DescriptorKey`]"],["ScriptContext","The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"]],"type":[["KeyMap","Alias type for a map of public key to secret key"],["ValidNetworks","Set of valid networks for a key"]]}); \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.DescriptorSinglePub.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.DescriptorSinglePub.html index 697ed325c7..1301c1e64d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.DescriptorSinglePub.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.DescriptorSinglePub.html @@ -8,10 +8,10 @@ logo
pub struct DescriptorSinglePub {
     pub origin: Option<(Fingerprint, DerivationPath)>,
-    pub key: PublicKey,
+    pub key: SinglePubKey,
 }
Expand description

A Single Descriptor Key with optional origin information

Fields

origin: Option<(Fingerprint, DerivationPath)>

Origin information

-
key: PublicKey

The key

+
key: SinglePubKey

The key

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.GeneratedKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.GeneratedKey.html index 05e4da6c82..778c9c84bc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.GeneratedKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.GeneratedKey.html @@ -6,16 +6,16 @@ logo

GeneratedKey

logo
-

Struct bdk::keys::GeneratedKey

source · []
pub struct GeneratedKey<K, Ctx: ScriptContext> { /* private fields */ }
Expand description

Output of a GeneratableKey key generation

-

Implementations

Consumes self and returns the key

-

Trait Implementations

Returns a copy of the value. Read more

+

Struct bdk::keys::GeneratedKey

source · []
pub struct GeneratedKey<K, Ctx: ScriptContext> { /* private fields */ }
Expand description

Output of a GeneratableKey key generation

+

Implementations

Consumes self and returns the key

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

The resulting type after dereferencing.

-

Dereferences the value.

-

Consume self and turn it into an ExtendedKey Read more

-

Consume self and turn it into a DescriptorKey by adding the extra metadata, such as +

The resulting type after dereferencing.

+

Dereferences the value.

+

Consume self and turn it into an ExtendedKey Read more

+

Consume self and turn it into a DescriptorKey by adding the extra metadata, such as key origin and derivation path Read more

-

Turn the key into a DescriptorKey within the requested ScriptContext

+

Turn the key into a DescriptorKey within the requested ScriptContext

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.PrivateKeyGenerateOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.PrivateKeyGenerateOptions.html index cf471dd144..71c2971f49 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.PrivateKeyGenerateOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.PrivateKeyGenerateOptions.html @@ -6,16 +6,16 @@ logo

PrivateKeyGenerateOptions

logo
pub struct PrivateKeyGenerateOptions {
+    

Struct bdk::keys::PrivateKeyGenerateOptions

source · []
pub struct PrivateKeyGenerateOptions {
     pub compressed: bool,
 }
Expand description

Options for generating a [PrivateKey]

Defaults to creating compressed keys, which save on-chain bytes and fees

Fields

compressed: bool

Whether the generated key should be “compressed” or not

-

Trait Implementations

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Returns the “default value” for a type. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.DerivableKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.DerivableKey.html index 726d114514..ded8486131 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.DerivableKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.DerivableKey.html @@ -6,7 +6,7 @@ logo

DerivableKey

logo
pub trait DerivableKey<Ctx: ScriptContext = Legacy>: Sized {
+    

Trait bdk::keys::DerivableKey

source · []
pub trait DerivableKey<Ctx: ScriptContext = Legacy>: Sized {
     fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError>;
 
     fn into_descriptor_key(
        self,
        origin: Option<KeySource>,
        derivation_path: DerivationPath
    ) -> Result<DescriptorKey<Ctx>, KeyError> { ... } @@ -38,7 +38,7 @@ an ExtendedPubKey can impleme network: self.network, depth: 0, parent_fingerprint: bip32::Fingerprint::default(), - private_key: self.key_data, + private_key: self.key_data.inner, chain_code: bip32::ChainCode::from(self.chain_code.as_ref()), child_number: bip32::ChildNumber::Normal { index: 0 }, }; @@ -67,7 +67,7 @@ steps to override the set of valid networks, otherwise only the network specifie network: bitcoin::Network::Bitcoin, // pick an arbitrary network here depth: 0, parent_fingerprint: bip32::Fingerprint::default(), - private_key: self.key_data, + private_key: self.key_data.inner, chain_code: bip32::ChainCode::from(self.chain_code.as_ref()), child_number: bip32::ChildNumber::Normal { index: 0 }, }; @@ -88,7 +88,7 @@ steps to override the set of valid networks, otherwise only the network specifie Ok(descriptor_key.override_valid_networks(any_network())) } }
-

Required methods

Consume self and turn it into an ExtendedKey

+

Required methods

Consume self and turn it into an ExtendedKey

This can be used to get direct access to xprvs and xpubs for types that implement this trait, like Mnemonic when the keys-bip39 feature is enabled.

@@ -103,8 +103,8 @@ like Mnemonic when the ? .into_extended_key()?; let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
-

Provided methods

Consume self and turn it into a DescriptorKey by adding the extra metadata, such as +

Provided methods

Consume self and turn it into a DescriptorKey by adding the extra metadata, such as key origin and derivation path

-

Implementations on Foreign Types

Implementors

Identity conversion

+

Implementations on Foreign Types

Implementors

Identity conversion

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ExtScriptContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ExtScriptContext.html index 4767c4cd7d..9e9103381a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ExtScriptContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ExtScriptContext.html @@ -4,16 +4,18 @@
+

ExtScriptContext

logo
pub trait ExtScriptContext: ScriptContext {
+    

Trait bdk::keys::ExtScriptContext

source · []
pub trait ExtScriptContext: ScriptContext {
     fn as_enum() -> ScriptContextEnum;
 
     fn is_legacy() -> bool { ... }
 
fn is_segwit_v0() -> bool { ... } +
fn is_taproot() -> bool { ... } }
Expand description

Trait that adds extra useful methods to ScriptContexts

-

Required methods

Provided methods

Returns whether the script context is Legacy

-

Returns whether the script context is Segwitv0

-

Implementors

+

Required methods

Provided methods

Returns whether the script context is Legacy

+

Returns whether the script context is Segwitv0

+

Returns whether the script context is Tap, aka Taproot or Segwit V1

+

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.GeneratableDefaultOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.GeneratableDefaultOptions.html index b8d2bc7931..632af29c3c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.GeneratableDefaultOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.GeneratableDefaultOptions.html @@ -6,14 +6,14 @@ logo

GeneratableDefaultOptions

logo
pub trait GeneratableDefaultOptions<Ctx>: GeneratableKey<Ctx> where
    Ctx: ScriptContext,
    <Self as GeneratableKey<Ctx>>::Options: Default
{ +

Trait bdk::keys::GeneratableDefaultOptions

source · []
pub trait GeneratableDefaultOptions<Ctx>: GeneratableKey<Ctx> where
    Ctx: ScriptContext,
    <Self as GeneratableKey<Ctx>>::Options: Default
{ fn generate_with_entropy_default(
        entropy: Self::Entropy
    ) -> Result<GeneratedKey<Self, Ctx>, Self::Error> { ... }
fn generate_default() -> Result<GeneratedKey<Self, Ctx>, Self::Error> { ... } }
Expand description

Trait that allows generating a key with the default options

This trait is automatically implemented if the GeneratableKey::Options implements Default.

-

Provided methods

Generate a key with the default options and a given entropy

-

Generate a key with the default options and a random entropy

-

Implementors

Automatic implementation of GeneratableDefaultOptions for GeneratableKeys where +

Provided methods

Generate a key with the default options and a given entropy

+

Generate a key with the default options and a random entropy

+

Implementors

Automatic implementation of GeneratableDefaultOptions for GeneratableKeys where Options implements Default

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.GeneratableKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.GeneratableKey.html index 530db105aa..1f7ffd6b0b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.GeneratableKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.GeneratableKey.html @@ -6,7 +6,7 @@ logo

GeneratableKey

logo
pub trait GeneratableKey<Ctx: ScriptContext>: Sized {
+    

Trait bdk::keys::GeneratableKey

source · []
pub trait GeneratableKey<Ctx: ScriptContext>: Sized {
     type Entropy: AsMut<[u8]> + Default;
     type Options;
     type Error: Debug;
@@ -19,10 +19,10 @@
 implements it, the returned GeneratedKey will also implement it. The same is true for
 IntoDescriptorKey: the generated keys can be directly used in descriptors if Self is also
 IntoDescriptorKey.

-

Associated Types

Type specifying the amount of entropy required e.g. [u8;32]

-

Extra options required by the generate_with_entropy

-

Returned error in case of failure

-

Required methods

Generate a key given the extra options and the entropy

-

Provided methods

Generate a key given the options with a random entropy

-

Implementations on Foreign Types

Implementors

+

Associated Types

Type specifying the amount of entropy required e.g. [u8;32]

+

Extra options required by the generate_with_entropy

+

Returned error in case of failure

+

Required methods

Generate a key given the extra options and the entropy

+

Provided methods

Generate a key given the options with a random entropy

+

Implementations on Foreign Types

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.IntoDescriptorKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.IntoDescriptorKey.html index 012782d8bc..e5f68f56db 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.IntoDescriptorKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.IntoDescriptorKey.html @@ -4,9 +4,9 @@
+

IntoDescriptorKey

logo
pub trait IntoDescriptorKey<Ctx: ScriptContext>: Sized {
+    

Trait bdk::keys::IntoDescriptorKey

source · []
pub trait IntoDescriptorKey<Ctx: ScriptContext>: Sized {
     fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError>;
 }
Expand description

Trait for objects that can be turned into a public or secret DescriptorKey

The generic type Ctx is used to define the context in which the key is valid: some key @@ -43,7 +43,7 @@ checking.

use bdk::keys::{ mainnet_network, DescriptorKey, DescriptorPublicKey, DescriptorSinglePub, - IntoDescriptorKey, KeyError, ScriptContext, + IntoDescriptorKey, KeyError, ScriptContext, SinglePubKey, }; pub struct MyKeyType { @@ -55,7 +55,7 @@ checking.

Ok(DescriptorKey::from_public( DescriptorPublicKey::SinglePub(DescriptorSinglePub { origin: None, - key: self.pubkey, + key: SinglePubKey::FullKey(self.pubkey), }), mainnet_network(), )) @@ -108,7 +108,7 @@ makes the compiler (correctly) fail.

let (descriptor, _, _) = bdk::descriptor!(pkh(key))?; // ^^^^^ changing this to `wpkh` would make it compile
-

Required methods

Turn the key into a DescriptorKey within the requested ScriptContext

-

Implementations on Foreign Types

Implementors

The “identity” conversion is used internally by some bdk::fragments

-
+

Required methods

Turn the key into a DescriptorKey within the requested ScriptContext

+

Implementations on Foreign Types

Implementors

The “identity” conversion is used internally by some bdk::fragments

+
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ScriptContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ScriptContext.html index 79ac1a81fb..3302f52e2f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ScriptContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ScriptContext.html @@ -4,37 +4,42 @@
+

ScriptContext

logo
pub trait ScriptContext: Debug + Clone + Ord + PartialOrd<Self> + Eq + PartialEq<Self> + Hash + Sealed {
-    fn check_terminal_non_malleable<Pk, Ctx>(
        _frag: &Terminal<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
; -
fn max_satisfaction_size<Pk, Ctx>(ms: &Miniscript<Pk, Ctx>) -> Option<usize>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
; + type Key: ParseableKey + MiniscriptKey; +
Show 15 methods fn check_terminal_non_malleable<Pk>(
        _frag: &Terminal<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
; +
fn max_satisfaction_size<Pk>(ms: &Miniscript<Pk, Self>) -> Option<usize>
    where
        Pk: MiniscriptKey
; +
fn sig_type() -> SigType; +
fn pk_len<Pk>(pk: &Pk) -> usize
    where
        Pk: MiniscriptKey
; +
fn name_str() -> &'static str; - fn check_witness<Pk, Ctx>(
        _witness: &[Vec<u8, Global>]
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, + fn check_witness<Pk>(
        _witness: &[Vec<u8, Global>]
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_global_consensus_validity<Pk, Ctx>(
        _ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_global_consensus_validity<Pk>(
        _ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_global_policy_validity<Pk, Ctx>(
        _ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_global_policy_validity<Pk>(
        _ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_local_consensus_validity<Pk, Ctx>(
        _ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_local_consensus_validity<Pk>(
        _ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_local_policy_validity<Pk, Ctx>(
        _ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_local_policy_validity<Pk>(
        _ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_global_validity<Pk, Ctx>(
        ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_global_validity<Pk>(
        ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn check_local_validity<Pk, Ctx>(
        ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn check_local_validity<Pk>(
        ms: &Miniscript<Pk, Self>
    ) -> Result<(), ScriptContextError>
    where
        Pk: MiniscriptKey
, { ... } -
fn top_level_type_check<Pk, Ctx>(
        ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), Error>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn top_level_type_check<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where
        Pk: MiniscriptKey
, { ... } -
fn other_top_level_checks<Pk, Ctx>(
        _ms: &Miniscript<Pk, Ctx>
    ) -> Result<(), Error>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn other_top_level_checks<Pk>(
        _ms: &Miniscript<Pk, Self>
    ) -> Result<(), Error>
    where
        Pk: MiniscriptKey
, { ... } -
fn top_level_checks<Pk, Ctx>(ms: &Miniscript<Pk, Ctx>) -> Result<(), Error>
    where
        Pk: MiniscriptKey,
        Ctx: ScriptContext
, +
fn top_level_checks<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where
        Pk: MiniscriptKey
, { ... } -}
Expand description

The ScriptContext for Miniscript. Additional type information associated with +

}
Expand description

The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context

-

Required methods

Depending on ScriptContext, fragments can be malleable. For Example, +

Associated Types

The consensus key associated with the type. Must be a parseable key

+

Required methods

Depending on ScriptContext, fragments can be malleable. For Example, under Legacy context, PkH is malleable because it is possible to estimate the cost of satisfaction because of compressed keys This is currently only used in compiler code for removing malleable @@ -42,11 +47,17 @@ compilations. This does NOT recursively check if the children of the fragment are valid or not. Since the compilation proceeds in a leaf to root fashion, a recursive check is unnecessary.

-

Depending on script context, the size of a satifaction witness may slightly differ.

-

Provided methods

Check whether the given satisfaction is valid under the ScriptContext +

Depending on script context, the size of a satifaction witness may slightly differ.

+

The type of signature required for satisfaction

+

Get the len of public key when serialized based on context +Note that this includes the serialization prefix. Returns +34/66 for Bare/Legacy based on key compressedness +34 for Segwitv0, 33 for Tap

+

Local helper function to display error messages with context

+

Provided methods

Check whether the given satisfaction is valid under the ScriptContext For example, segwit satisfactions may fail if the witness len is more 3600 or number of stack elements are more than 100.

-

Depending on script Context, some of the Terminals might not +

Depending on script Context, some of the Terminals might not be valid under the current consensus rules. Or some of the script resource limits may have been exceeded. These miniscripts would never be accepted by the Bitcoin network and hence @@ -56,7 +67,7 @@ uncompressed public keys are non-standard and thus invalid. In LegacyP2SH context, scripts above 520 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments.

-

Depending on script Context, some of the script resource limits +

Depending on script Context, some of the script resource limits may have been exceeded under the current bitcoin core policy rules These miniscripts would never be accepted by the Bitcoin network and hence it is safe to discard them. (unless explicitly disabled by non-standard flag) @@ -64,21 +75,21 @@ For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey scripts over 3600 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments.

-

Consensus rules at the Miniscript satisfaction time. +

Consensus rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes.

-

Policy rules at the Miniscript satisfaction time. +

Policy rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path in Legacy context scriptSig more than 1650 bytes

-

Check the consensus + policy(if not disabled) rules that are not based +

Check the consensus + policy(if not disabled) rules that are not based satisfaction

-

Check the consensus + policy(if not disabled) rules including the +

Check the consensus + policy(if not disabled) rules including the ones for satisfaction

-

Check whether the top-level is type B

-

Other top level checks that are context specific

-

Check top level consensus rules.

-

Implementations on Foreign Types

Implementors

+

Check whether the top-level is type B

+

Other top level checks that are context specific

+

Check top level consensus rules.

+

Implementations on Foreign Types

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.AddressIndex.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.AddressIndex.html index 47482a14c3..f1808d7e51 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.AddressIndex.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.AddressIndex.html @@ -6,7 +6,7 @@ logo

AddressIndex

logo
pub enum AddressIndex {
+    

Enum bdk::wallet::AddressIndex

source · []
pub enum AddressIndex {
     New,
     LastUnused,
     Peek(u32),
@@ -31,7 +31,7 @@ then the returned address and subsequent addresses returned by calls to Ad
 and AddressIndex::LastUsed may have already been used. Also if the index is reset to a
 value earlier than the crate::blockchain::Blockchain stop_gap (default is 20) then a
 larger stop_gap should be used to monitor for all possibly used addresses.

-

Trait Implementations

Formats the value using the given formatter. Read more

+

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/fn.get_funded_wallet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/fn.get_funded_wallet.html index 2a6868585a..d2a5ee334c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/fn.get_funded_wallet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/fn.get_funded_wallet.html @@ -6,6 +6,6 @@ logo
logo
pub fn get_funded_wallet(
    descriptor: &str
) -> (Wallet<AnyDatabase>, (String, Option<String>), Txid)
Expand description

Return a fake wallet that appears to be funded for testing.

+

Function bdk::wallet::get_funded_wallet

source · []
pub fn get_funded_wallet(
    descriptor: &str
) -> (Wallet<AnyDatabase>, (String, Option<String>), Txid)
Expand description

Return a fake wallet that appears to be funded for testing.

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/fn.wallet_name_from_descriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/fn.wallet_name_from_descriptor.html index cf47978ed6..bb04e9b76a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/fn.wallet_name_from_descriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/fn.wallet_name_from_descriptor.html @@ -6,7 +6,7 @@ logo
logo
pub fn wallet_name_from_descriptor<T>(
    descriptor: T,
    change_descriptor: Option<T>,
    network: Network,
    secp: &Secp256k1<All>
) -> Result<String, Error> where
    T: IntoWalletDescriptor
Expand description

Deterministically generate a unique name given the descriptors defining the wallet

+

Function bdk::wallet::wallet_name_from_descriptor

source · []
pub fn wallet_name_from_descriptor<T>(
    descriptor: T,
    change_descriptor: Option<T>,
    network: Network,
    secp: &Secp256k1<All>
) -> Result<String, Error> where
    T: IntoWalletDescriptor
Expand description

Deterministically generate a unique name given the descriptors defining the wallet

Compatible with wallet_name_from_descriptor

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/index.html index d6f7790116..1169b9dd6a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/index.html @@ -6,7 +6,7 @@ logo

Module wallet

logo
-

Module bdk::wallet

source · []
Expand description

Wallet

+

Module bdk::wallet

source · []
Expand description

Wallet

This module defines the Wallet structure.

Modules

Address validation callbacks

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerError.html index 3d44c4b433..204ddfdeb9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerError.html @@ -4,9 +4,9 @@
+

SignerError

logo
pub enum SignerError {
+    

Enum bdk::wallet::signer::SignerError

source · []
pub enum SignerError {
     MissingKey,
     InvalidKey,
     UserCanceled,
@@ -17,6 +17,8 @@
     MissingWitnessScript,
     MissingHdKeypath,
     NonStandardSighash,
+    InvalidSighash,
+    SighashError(Error),
 }
Expand description

Signing error

Variants

MissingKey

The private key is missing for the required public key

InvalidKey

The private key in use has the right fingerprint but derives differently than expected

@@ -31,22 +33,25 @@ explicitly allowed them

To enable signing transactions with non-standard sighashes set SignOptions::allow_all_sighashes to true.

-

Trait Implementations

Returns a copy of the value. Read more

+

InvalidSighash

Invalid SIGHASH for the signing context in use

+

SighashError(Error)

Error while computing the hash to sign

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Formats the value using the given formatter. Read more

-

The lower-level source of this error, if any. Read more

+

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

The lower-level source of this error, if any. Read more

🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

Performs the conversion.

-

This method tests for self and other values to be equal, and is used +

Performs the conversion.

+

Performs the conversion.

+

This method tests for self and other values to be equal, and is used by ==. Read more

-

This method tests for !=.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

-

Performs the conversion.

+

Performs the conversion.

Performs the conversion.

The alignment of pointer.

The type for initializers.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerId.html index 5c19871126..5f478f22eb 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerId.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerId.html @@ -6,7 +6,7 @@ logo

SignerId

logo
pub enum SignerId {
+    

Enum bdk::wallet::signer::SignerId

source · []
pub enum SignerId {
     PkHash(Hash),
     Fingerprint(Fingerprint),
     Dummy(u64),
@@ -15,28 +15,28 @@ multiple of them

Variants

PkHash(Hash)

Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA public key

Fingerprint(Fingerprint)

The fingerprint of a BIP32 extended key

Dummy(u64)

Dummy identifier

-

Trait Implementations

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Performs the conversion.

-

Performs the conversion.

-

Feeds this value into the given Hasher. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

-

This method returns an Ordering between self and other. Read more

+

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

-

This method tests for self and other values to be equal, and is used +

This method tests for self and other values to be equal, and is used by ==. Read more

-

This method tests for !=.

-

This method returns an ordering between self and other values if one exists. Read more

+

This method tests for !=.

+

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/index.html index 0f99eb1cd0..9f49e32392 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/index.html @@ -6,7 +6,7 @@ logo

Module signer

logo
-

Module bdk::wallet::signer

source · []
Expand description

Generalized signers

+

Module bdk::wallet::signer

source · []
Expand description

Generalized signers

This module provides the ability to add customized signers to a Wallet through the Wallet::add_signer function.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignOptions.html index 61be6835fc..2daa658ca7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignOptions.html @@ -6,7 +6,7 @@ logo

SignOptions

logo
pub struct SignOptions {
+    

Struct bdk::wallet::signer::SignOptions

source · []
pub struct SignOptions {
     pub trust_witness_utxo: bool,
     pub assume_height: Option<u32>,
     pub allow_all_sighashes: bool,
@@ -29,10 +29,10 @@ wallet use timelocks in the future to spend a coin.

allow_all_sighashes: bool

Whether the signer should use the sighash_type set in the PSBT when signing, no matter what its value is

Defaults to false which will only allow signing using SIGHASH_ALL.

-

Trait Implementations

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Returns the “default value” for a type. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignerOrdering.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignerOrdering.html index d2863f34e3..0e88e839c6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignerOrdering.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignerOrdering.html @@ -6,29 +6,29 @@ logo

SignerOrdering

logo
pub struct SignerOrdering(pub usize);
Expand description

Defines the order in which signers are called

+

Struct bdk::wallet::signer::SignerOrdering

source · []
pub struct SignerOrdering(pub usize);
Expand description

Defines the order in which signers are called

The default value is 100. Signers with an ordering above that will be called later, and they will thus see the partial signatures added to the transaction once they get to sign themselves.

-

Tuple Fields

0: usize

Trait Implementations

Returns a copy of the value. Read more

+

Tuple Fields

0: usize

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Returns the “default value” for a type. Read more

-

This method returns an Ordering between self and other. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

-

This method tests for self and other values to be equal, and is used +

This method tests for self and other values to be equal, and is used by ==. Read more

-

This method tests for !=.

-

This method returns an ordering between self and other values if one exists. Read more

+

This method tests for !=.

+

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignersContainer.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignersContainer.html index 939d029964..d081b68691 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignersContainer.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignersContainer.html @@ -6,20 +6,20 @@ logo

SignersContainer

logo
pub struct SignersContainer(_);
Expand description

Container for multiple signers

-

Implementations

Create a map of public keys to secret keys

-

Default constructor

-

Adds an external signer to the container for the specified id. Optionally returns the +

Struct bdk::wallet::signer::SignersContainer

source · []
pub struct SignersContainer(_);
Expand description

Container for multiple signers

+

Implementations

Create a map of public keys to secret keys

+

Default constructor

+

Adds an external signer to the container for the specified id. Optionally returns the signer that was previously in the container, if any

-

Removes a signer from the container and returns it

-

Returns the list of identifiers of all the signers in the container

-

Returns the list of signers in the container, sorted by lowest to highest ordering

-

Finds the signer with lowest ordering for a given id in the container.

-

Trait Implementations

Returns a copy of the value. Read more

+

Removes a signer from the container and returns it

+

Returns the list of identifiers of all the signers in the container

+

Returns the list of signers in the container, sorted by lowest to highest ordering

+

Finds the signer with lowest ordering for a given id in the container.

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Returns the “default value” for a type. Read more

-

Performs the conversion.

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/trait.Signer.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/trait.Signer.html index e5b57c1e09..e14d33936d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/trait.Signer.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/trait.Signer.html @@ -6,7 +6,7 @@ logo

Signer

logo
pub trait Signer: Debug + Send + Sync {
+    

Trait bdk::wallet::signer::Signer

source · []
pub trait Signer: Debug + Send + Sync {
     fn sign(
        &self,
        psbt: &mut PartiallySignedTransaction,
        input_index: Option<usize>,
        secp: &Secp256k1<All>
    ) -> Result<(), SignerError>;
fn sign_whole_tx(&self) -> bool;
fn id(&self, secp: &Secp256k1<All>) -> SignerId; @@ -15,18 +15,18 @@ }
Expand description

Trait for signers

This trait can be implemented to provide customized signers to the wallet. For an example see this module’s documentation.

-

Required methods

Sign a PSBT

+

Required methods

Sign a PSBT

The input_index argument is only provided if the wallet doesn’t declare to sign the whole transaction in one go (see Signer::sign_whole_tx). Otherwise its value is None and can be ignored.

-

Return whether or not the signer signs the whole transaction in one go instead of every +

Return whether or not the signer signs the whole transaction in one go instead of every input individually

-

Return the SignerId for this signer

+

Return the SignerId for this signer

The SignerId can be used to lookup a signer in the Wallet’s signers map or to compare two signers.

-

Provided methods

Return the secret key for the signer

+

Provided methods

Return the secret key for the signer

This is used internally to reconstruct the original descriptor that may contain secrets. External signers that are meant to keep key isolated should just return None here (which is the default for this method, if not overridden).

-

Implementations on Foreign Types

Implementors

+

Implementations on Foreign Types

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.AddressInfo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.AddressInfo.html index bcee93c247..b9a55c3890 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.AddressInfo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.AddressInfo.html @@ -4,9 +4,9 @@

Fields

index: u32

Child index of this address

address: Address

Address

keychain: KeychainKind

Type of keychain

-

Methods from Deref<Target = Address>

Get the address type of the address. -None if unknown or non-standard.

-

Check whether or not the address is following Bitcoin -standardness rules.

-

Segwit addresses with unassigned witness versions or non-standard -program sizes are considered non-standard.

-

Generates a script pubkey spending to this address

+

Methods from Deref<Target = Address>

Gets the address type of the address.

+
Returns
+

None if unknown, non-standard or related to the future witness version.

+

Checks whether or not the address is following Bitcoin standardness rules.

+

SegWit addresses with unassigned witness versions or non-standard program sizes are +considered non-standard.

+

Generates a script pubkey spending to this address.

Creates a URI string bitcoin:address optimized to be encoded in QR codes.

If the address is bech32, both the schema and the address become uppercase. If the address is base58, the schema is lowercase and the address is left mixed case.

Quoting BIP 173 “inside QR codes uppercase SHOULD be used, as those permit the use of alphanumeric mode, which is 45% more compact than the normal byte mode.”

-

Trait Implementations

Formats the value using the given formatter. Read more

-

The resulting type after dereferencing.

-

Dereferences the value.

-

Formats the value using the given formatter. Read more

-

This method tests for self and other values to be equal, and is used +

Parsed addresses do not always have one network. The problem is that legacy testnet, +regtest and signet addresse use the same prefix instead of multiple different ones. When +parsing, such addresses are always assumed to be testnet addresses (the same is true for +bech32 signet addresses). So if one wants to check if an address belongs to a certain +network a simple comparison is not enough anymore. Instead this function can be used.

+ +
use bitcoin::{Address, Network};
+
+let address: Address = "2N83imGV3gPwBzKJQvWJ7cRUY2SpUyU6A5e".parse().unwrap();
+assert!(address.is_valid_for_network(Network::Testnet));
+assert!(address.is_valid_for_network(Network::Regtest));
+assert!(address.is_valid_for_network(Network::Signet));
+
+assert_eq!(address.is_valid_for_network(Network::Bitcoin), false);
+
+let address: Address = "32iVBEu4dxkUQk9dJbZUiBiQdmypcEyJRf".parse().unwrap();
+assert!(address.is_valid_for_network(Network::Bitcoin));
+assert_eq!(address.is_valid_for_network(Network::Testnet), false);
+

Returns true if the given pubkey is directly related to the address payload.

+

This is determined by directly comparing the address payload with either the +hash of the given public key or the segwit redeem hash generated from the +given key. For taproot addresses, the supplied key is assumed to be tweaked

+

Returns true if the supplied xonly public key can be used to derive the address.

+

This will only work for Taproot addresses. The Public Key is +assumed to have already been tweaked.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

The resulting type after dereferencing.

+

Dereferences the value.

+

Formats the value using the given formatter. Read more

+

This method tests for self and other values to be equal, and is used by ==. Read more

-

This method tests for !=.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.SyncOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.SyncOptions.html index c81cc541b1..db8fb39946 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.SyncOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.SyncOptions.html @@ -6,12 +6,12 @@ logo

SyncOptions

logo
pub struct SyncOptions {
+    

Struct bdk::wallet::SyncOptions

source · []
pub struct SyncOptions {
     pub progress: Option<Box<dyn Progress>>,
 }
Expand description

Options to a sync.

Fields

progress: Option<Box<dyn Progress>>

The progress tracker which may be informed when progress is made.

-

Trait Implementations

Formats the value using the given formatter. Read more

-

Returns the “default value” for a type. Read more

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Wallet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Wallet.html index dbd6feae51..fcb7b057f4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Wallet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Wallet.html @@ -6,7 +6,7 @@ logo

Wallet

logo
-

Struct bdk::wallet::Wallet

source · []
pub struct Wallet<D> { /* private fields */ }
Expand description

A Bitcoin wallet

+

Struct bdk::wallet::Wallet

source · []
pub struct Wallet<D> { /* private fields */ }
Expand description

A Bitcoin wallet

The Wallet struct acts as a way of coherently interfacing with output descriptors and related transactions. Its main components are:

    @@ -14,47 +14,47 @@ Its main components are:

  1. A Database where it tracks transactions and utxos related to the descriptors.
  2. Signers that can contribute signatures to addresses instantiated from the descriptors.
-

Implementations

👎 Deprecated:

Just use Wallet::new – all wallets are offline now!

+

Implementations

👎 Deprecated:

Just use Wallet::new – all wallets are offline now!

Create a new “offline” wallet

-

Create a wallet.

+

Create a wallet.

The only way this can fail is if the descriptors passed in do not match the checksums in database.

-

Get the Bitcoin network the wallet is using.

-

Return a derived address using the external descriptor, see AddressIndex for +

Get the Bitcoin network the wallet is using.

+

Return a derived address using the external descriptor, see AddressIndex for available address index selection strategies. If none of the keys in the descriptor are derivable (ie. does not end with /*) then the same address will always be returned for any AddressIndex.

-

Return a derived address using the internal (change) descriptor.

+

Return a derived address using the internal (change) descriptor.

If the wallet doesn’t have an internal descriptor it will use the external descriptor.

see AddressIndex for available address index selection strategies. If none of the keys in the descriptor are derivable (ie. does not end with /*) then the same address will always be returned for any AddressIndex.

-

Ensures that there are at least max_addresses addresses cached in the database if the +

Ensures that there are at least max_addresses addresses cached in the database if the descriptor is derivable, or 1 address if it is not. Will return Ok(true) if there are new addresses generated (either external or internal), and Ok(false) if all the required addresses are already cached. This function is useful to explicitly cache addresses in a wallet to do things like check Wallet::is_mine on transaction output scripts.

-

Return whether or not a script is part of this wallet (either internal or external)

-

Return the list of unspent outputs of this wallet

+

Return whether or not a script is part of this wallet (either internal or external)

+

Return the list of unspent outputs of this wallet

Note that this method only operates on the internal database, which first needs to be Wallet::sync manually.

-

Returns the UTXO owned by this wallet corresponding to outpoint if it exists in the +

Returns the UTXO owned by this wallet corresponding to outpoint if it exists in the wallet’s database.

-

Return a single transactions made and received by the wallet

+

Return a single transactions made and received by the wallet

Optionally fill the TransactionDetails::transaction field with the raw transaction if include_raw is true.

Note that this method only operates on the internal database, which first needs to be Wallet::sync manually.

-

Return the list of transactions made and received by the wallet

+

Return the list of transactions made and received by the wallet

Optionally fill the TransactionDetails::transaction field with the raw transaction if include_raw is true.

Note that this methods only operate on the internal database, which first needs to be Wallet::sync manually.

-

Return the balance, meaning the sum of this wallet’s unspent outputs’ values

+

Return the balance, meaning the sum of this wallet’s unspent outputs’ values

Note that this methods only operate on the internal database, which first needs to be Wallet::sync manually.

-

Add an external signer

+

Add an external signer

See the signer module for an example.

-

Get the signers

+

Get the signers

Example
let wallet = Wallet::new("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet, MemoryDatabase::new())?;
 for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {
@@ -63,10 +63,10 @@ wallet’s database.

} Ok::<(), Box<dyn std::error::Error>>(())
-

Add an address validator

+

Add an address validator

See the address_validator module for an example.

-

Get the address validators

-

Start building a transaction.

+

Get the address validators

+

Start building a transaction.

This returns a blank TxBuilder from which you can specify the parameters for the transaction.

Example
let (psbt, details) = {
@@ -77,7 +77,7 @@ wallet’s database.

}; // sign and broadcast ...
-

Bump the fee of a transaction previously created with this wallet.

+

Bump the fee of a transaction previously created with this wallet.

Returns an error if the transaction is already confirmed or doesn’t explicitly signal replace by fee (RBF). If the transaction can be fee bumped then it returns a TxBuilder pre-populated with the inputs and outputs of the original transaction.

@@ -102,7 +102,7 @@ pre-populated with the inputs and outputs of the original transaction.

let _ = wallet.sign(&mut psbt, SignOptions::default())?; let fee_bumped_tx = psbt.extract_tx(); // broadcast fee_bumped_tx to replace original
-

Sign a transaction with all the wallet’s signers, in the order specified by every signer’s +

Sign a transaction with all the wallet’s signers, in the order specified by every signer’s SignerOrdering

The SignOptions can be used to tweak the behavior of the software signers, and the way the transaction is finalized at the end. Note that it can’t be guaranteed that every @@ -116,20 +116,20 @@ in this library will.

}; let finalized = wallet.sign(&mut psbt, SignOptions::default())?; assert!(finalized, "we should have signed all the inputs");
-

Return the spending policies for the wallet’s descriptor

-

Return the “public” version of the wallet’s descriptor, meaning a new descriptor that has +

Return the spending policies for the wallet’s descriptor

+

Return the “public” version of the wallet’s descriptor, meaning a new descriptor that has the same structure but with every secret key removed

This can be used to build a watch-only version of a wallet

-

Try to finalize a PSBT

+

Try to finalize a PSBT

The SignOptions can be used to tweak the behavior of the finalizer.

-

Return the secp256k1 context used for all signing operations

-

Returns the descriptor used to create addresses for a particular keychain.

-

get the corresponding PSBT Input for a LocalUtxo

-

Return an immutable reference to the internal database

-

Sync the internal database with the blockchain

-

Return the checksum of the public descriptor associated to keychain

+

Return the secp256k1 context used for all signing operations

+

Returns the descriptor used to create addresses for a particular keychain.

+

get the corresponding PSBT Input for a LocalUtxo

+

Return an immutable reference to the internal database

+

Sync the internal database with the blockchain

+

Return the checksum of the public descriptor associated to keychain

Internally calls Self::get_descriptor_for_keychain to fetch the right descriptor

-

Trait Implementations

Formats the value using the given formatter. Read more

+

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html index 27a504c9b5..c67b49d3ef 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/enum.ChangeSpendPolicy.html @@ -6,7 +6,7 @@ logo

ChangeSpendPolicy

logo
pub enum ChangeSpendPolicy {
+    

Enum bdk::wallet::tx_builder::ChangeSpendPolicy

source · []
pub enum ChangeSpendPolicy {
     ChangeAllowed,
     OnlyChange,
     ChangeForbidden,
@@ -14,27 +14,27 @@
 

Variants

ChangeAllowed

Use both change and non-change outputs (default)

OnlyChange

Only use change outputs (see TxBuilder::only_spend_change)

ChangeForbidden

Only use non-change outputs (see TxBuilder::do_not_spend_change)

-

Trait Implementations

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Returns the “default value” for a type. Read more

-

Feeds this value into the given Hasher. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

-

This method returns an Ordering between self and other. Read more

+

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

-

This method tests for self and other values to be equal, and is used +

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

-

This method returns an ordering between self and other values if one exists. Read more

+

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/enum.TxOrdering.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/enum.TxOrdering.html index 23fdb2603e..2db555047a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/enum.TxOrdering.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/enum.TxOrdering.html @@ -6,7 +6,7 @@ logo

TxOrdering

logo
pub enum TxOrdering {
+    

Enum bdk::wallet::tx_builder::TxOrdering

source · []
pub enum TxOrdering {
     Shuffle,
     Untouched,
     Bip69Lexicographic,
@@ -14,28 +14,28 @@
 

Variants

Shuffle

Randomized (default)

Untouched

Unchanged

Bip69Lexicographic

BIP69 / Lexicographic

-

Implementations

Sort transaction inputs and outputs by TxOrdering variant

-

Trait Implementations

Returns a copy of the value. Read more

+

Implementations

Sort transaction inputs and outputs by TxOrdering variant

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Returns the “default value” for a type. Read more

-

Feeds this value into the given Hasher. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

-

This method returns an Ordering between self and other. Read more

+

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

-

This method tests for self and other values to be equal, and is used +

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

-

This method returns an ordering between self and other values if one exists. Read more

+

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/index.html index 37f8c3f18f..ec258670ca 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/index.html @@ -6,7 +6,7 @@ logo

Module tx_builder

logo
-

Module bdk::wallet::tx_builder

source · []
Expand description

Transaction builder

+

Module bdk::wallet::tx_builder

source · []
Expand description

Transaction builder

Example

// create a TxBuilder from a wallet
 let mut tx_builder = wallet.build_tx();
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.TxBuilder.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.TxBuilder.html
index 037ac1b9e2..1e0dcaf997 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.TxBuilder.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.TxBuilder.html
@@ -6,7 +6,7 @@
                     logo

TxBuilder

logo
pub struct TxBuilder<'a, D, Cs, Ctx> { /* private fields */ }
Expand description

A transaction builder

+

Struct bdk::wallet::tx_builder::TxBuilder

source · []
pub struct TxBuilder<'a, D, Cs, Ctx> { /* private fields */ }
Expand description

A transaction builder

A TxBuilder is created by calling build_tx or build_fee_bump on a wallet. After assigning it, you set options on it until finally calling finish to consume the builder and generate the transaction.

@@ -33,16 +33,13 @@ as in the following example:

builder.finish()? }; -assert_eq!( - psbt1.global.unsigned_tx.output[..2], - psbt2.global.unsigned_tx.output[..2] -);
+assert_eq!(psbt1.unsigned_tx.output[..2], psbt2.unsigned_tx.output[..2]);

At the moment coin_selection is an exception to the rule as it consumes self. This means it is usually best to call coin_selection on the return value of build_tx before assigning it.

For further examples see this module’s documentation;

-

Implementations

Set a custom fee rate

-

Set an absolute fee

-

Set the policy path to use while creating the transaction for a given keychain.

+

Implementations

Set a custom fee rate

+

Set an absolute fee

+

Set the policy path to use while creating the transaction for a given keychain.

This method accepts a map where the key is the policy node id (see Policy::id) and the value is the list of the indexes of the items that are intended to be satisfied from the policy node (see @@ -86,14 +83,14 @@ multiple entries can be added to the map, one for each node that requires an exp .add_recipient(to_address.script_pubkey(), 50_000) .policy_path(path, KeychainKind::External);

-

Add the list of outpoints to the internal list of UTXOs that must be spent.

+

Add the list of outpoints to the internal list of UTXOs that must be spent.

If an error occurs while adding any of the UTXOs then none of them are added and the error is returned.

These have priority over the “unspendable” utxos, meaning that if a utxo is present both in the “utxos” and the “unspendable” list, it will be spent.

-

Add a utxo to the internal list of utxos that must be spent

+

Add a utxo to the internal list of utxos that must be spent

These have priority over the “unspendable” utxos, meaning that if a utxo is present both in the “utxos” and the “unspendable” list, it will be spent.

-

Add a foreign UTXO i.e. a UTXO not owned by this wallet.

+

Add a foreign UTXO i.e. a UTXO not owned by this wallet.

At a minimum to add a foreign UTXO we need:

  1. outpoint: To add it to the raw transaction.
  2. @@ -124,59 +121,59 @@ of course check the real input weight matches the expected weight prior to broad

Note unless you set only_witness_utxo any psbt_input you pass to this method must have non_witness_utxo set otherwise you will get an error when finish is called.

-

Only spend utxos added by add_utxo.

+

Only spend utxos added by add_utxo.

The wallet will not add additional utxos to the transaction even if they are needed to make the transaction valid.

-

Replace the internal list of unspendable utxos with a new list

+

Replace the internal list of unspendable utxos with a new list

It’s important to note that the “must-be-spent” utxos added with TxBuilder::add_utxo have priority over these. See the docs of the two linked methods for more details.

-

Add a utxo to the internal list of unspendable utxos

+

Add a utxo to the internal list of unspendable utxos

It’s important to note that the “must-be-spent” utxos added with TxBuilder::add_utxo have priority over this. See the docs of the two linked methods for more details.

-

Sign with a specific sig hash

+

Sign with a specific sig hash

Use this option very carefully

-

Choose the ordering for inputs and outputs of the transaction

-

Use a specific nLockTime while creating the transaction

+

Choose the ordering for inputs and outputs of the transaction

+

Use a specific nLockTime while creating the transaction

This can cause conflicts if the wallet’s descriptors contain an “after” (OP_CLTV) operator.

-

Build a transaction with a specific version

+

Build a transaction with a specific version

The version should always be greater than 0 and greater than 1 if the wallet’s descriptors contain an “older” (OP_CSV) operator.

-

Do not spend change outputs

+

Do not spend change outputs

This effectively adds all the change outputs to the “unspendable” list. See TxBuilder::unspendable.

-

Only spend change outputs

+

Only spend change outputs

This effectively adds all the non-change outputs to the “unspendable” list. See TxBuilder::unspendable.

-

Only Fill-in the psbt::Input::witness_utxo field when spending from +

Only Fill-in the psbt::Input::witness_utxo field when spending from SegWit descriptors.

This reduces the size of the PSBT, but some signers might reject them due to the lack of the non_witness_utxo.

-

Fill-in the psbt::Output::redeem_script and +

Fill-in the psbt::Output::redeem_script and psbt::Output::witness_script fields.

This is useful for signers which always require it, like ColdCard hardware wallets.

-

Fill-in the PSBT_GLOBAL_XPUB field with the extended keys contained in both the external +

Fill-in the PSBT_GLOBAL_XPUB field with the extended keys contained in both the external and internal descriptors

This is useful for offline signers that take part to a multisig. Some hardware wallets like BitBox and ColdCard are known to require this.

-

Spend all the available inputs. This respects filters like TxBuilder::unspendable and the change policy.

-

Choose the coin selection algorithm

+

Spend all the available inputs. This respects filters like TxBuilder::unspendable and the change policy.

+

Choose the coin selection algorithm

Overrides the DefaultCoinSelectionAlgorithm.

Note that this function consumes the builder and returns it so it is usually best to put this as the first call on the builder.

-

Finish the building the transaction.

+

Finish the building the transaction.

Returns the BIP174 “PSBT” and summary details about the transaction.

-

Enable signaling RBF

+

Enable signaling RBF

This will use the default nSequence value of 0xFFFFFFFD.

-

Enable signaling RBF with a specific nSequence value

+

Enable signaling RBF with a specific nSequence value

This can cause conflicts if the wallet’s descriptors contain an “older” (OP_CSV) operator and the given nsequence is lower than the CSV value.

If the nsequence is higher than 0xFFFFFFFD an error will be thrown, since it would not be a valid nSequence to signal RBF.

-

Replace the recipients already added with a new list

-

Add a recipient to the internal list

-

Add data as an output, using OP_RETURN

-

Sets the address to drain excess coins to.

+

Replace the recipients already added with a new list

+

Add a recipient to the internal list

+

Add data as an output, using OP_RETURN

+

Sets the address to drain excess coins to.

Usually, when there are excess coins they are sent to a change address generated by the wallet. This option replaces the usual change address with an arbitrary script_pubkey of your choosing. Just as with a change output, if the drain output is not needed (the excess @@ -199,7 +196,7 @@ single address.

.fee_rate(FeeRate::from_sat_per_vb(5.0)) .enable_rbf(); let (psbt, tx_details) = tx_builder.finish()?;
-

Explicitly tells the wallet that it is allowed to reduce the amount of the output matching this +

Explicitly tells the wallet that it is allowed to reduce the amount of the output matching this script_pubkey in order to bump the transaction fee. Without specifying this the wallet will attempt to find a change output to shrink instead.

Note that the output may shrink to below the dust limit and therefore be removed. If it is @@ -207,9 +204,9 @@ preserved then it is currently not guaranteed to be in the same position as it w originally.

Returns an Err if script_pubkey can’t be found among the recipients of the transaction we are bumping.

-

Trait Implementations

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.From.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.From.js index cb29e3fcc6..b06597793c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.From.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.From.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<AddressValidatorError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<PolicyError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<SignerError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<KeyError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<PsbtParseError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<CompactFiltersError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<EsploraError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<ElectrumBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<EsploraBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<CompactFiltersBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<ElectrumBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<EsploraBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<CompactFiltersBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<Client> for ElectrumBlockchain","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl From<Error> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<Transport> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<Error> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<ParseIntError> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<Error> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<Error> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<SystemTimeError> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<MemoryDatabase> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<Tree> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<SqliteDatabase> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<<MemoryDatabase as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<<Tree as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<<SqliteDatabase as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<()> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<SledDbConfiguration> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<SqliteDbConfiguration> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<KeyError> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<PolicyError> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<bool> for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl From<SatisfiableItem> for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl<Ctx: ScriptContext> From<ExtendedPubKey> for ExtendedKey<Ctx>","synthetic":false,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<Ctx: ScriptContext> From<ExtendedPrivKey> for ExtendedKey<Ctx>","synthetic":false,"types":["bdk::keys::ExtendedKey"]},{"text":"impl From<Error> for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl From<Error> for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl From<Hash> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl From<Fingerprint> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl From<HashMap<DescriptorPublicKey, DescriptorSecretKey, RandomState>> for SignersContainer","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]}]; +implementors["bdk"] = [{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<AddressValidatorError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<PolicyError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<SignerError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<KeyError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<PsbtParseError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<CompactFiltersError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<EsploraError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<ElectrumBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<EsploraBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<CompactFiltersBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<ElectrumBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<EsploraBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<CompactFiltersBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<Client> for ElectrumBlockchain","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl From<Error> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<Transport> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<Error> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<ParseIntError> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<Error> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<Error> for EsploraError","synthetic":false,"types":["bdk::blockchain::esplora::EsploraError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<SystemTimeError> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<MemoryDatabase> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<Tree> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<SqliteDatabase> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<<MemoryDatabase as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<<Tree as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<<SqliteDatabase as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<()> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<SledDbConfiguration> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<SqliteDbConfiguration> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<KeyError> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<PolicyError> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<bool> for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl From<SatisfiableItem> for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl<Ctx: ScriptContext> From<ExtendedPubKey> for ExtendedKey<Ctx>","synthetic":false,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<Ctx: ScriptContext> From<ExtendedPrivKey> for ExtendedKey<Ctx>","synthetic":false,"types":["bdk::keys::ExtendedKey"]},{"text":"impl From<Error> for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl From<Error> for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl From<Hash> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl From<Fingerprint> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl From<Error> for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl From<HashMap<DescriptorPublicKey, DescriptorSecretKey, RandomState>> for SignersContainer","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search-index.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search-index.js index 0e608a2b82..405f34ab49 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search-index.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search-index.js @@ -1,4 +1,4 @@ var searchIndex = JSON.parse('{\ -"bdk":{"doc":"A modern, lightweight, descriptor-based wallet library …","t":[13,13,3,13,13,13,13,6,13,13,13,4,13,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,4,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,13,13,4,8,3,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,0,11,11,11,11,11,11,11,11,12,11,12,12,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,11,11,11,11,11,11,11,11,12,10,5,11,11,11,11,11,11,11,11,0,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,8,8,4,16,8,3,13,13,8,8,16,3,3,8,6,8,8,0,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,0,11,0,10,11,11,11,11,11,11,10,10,11,10,10,11,11,11,11,11,11,11,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,4,4,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13,3,3,3,4,13,13,13,13,13,13,13,13,3,13,13,13,3,13,13,13,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,11,11,11,11,11,11,11,12,11,11,11,13,3,3,4,13,13,13,13,13,13,13,13,13,13,12,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,16,8,8,16,8,8,3,3,0,10,11,12,11,11,11,11,10,11,11,11,10,11,12,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,10,11,10,11,10,11,10,11,0,11,12,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,4,4,4,13,13,13,13,13,13,3,13,13,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,6,4,4,3,6,8,13,6,8,6,4,3,13,13,8,4,13,13,13,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,12,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,12,12,12,12,12,5,8,3,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,4,13,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,4,13,3,6,6,13,13,13,13,13,13,13,13,13,13,13,3,3,4,13,13,13,13,4,4,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,3,8,6,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,8,4,4,4,3,3,16,16,8,4,8,8,3,8,13,13,13,4,6,13,13,13,16,13,3,13,8,4,13,13,13,3,6,13,13,5,10,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,5,11,10,11,11,5,11,11,11,11,12,12,11,11,11,11,11,12,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,13,13,13,13,4,13,4,3,6,13,4,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,4,3,8,13,13,13,13,3,3,11,11,12,0,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,12,11,11,11,11,11,11,11,11,10,11,12,11,11,11,11,11,11,11,12,11,11,11,0,11,0,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,5,12,12,8,4,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,12,3,8,3,6,3,3,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,6,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,13,13,13,13,13,13,13,13,13,13,13,13,3,8,4,4,3,3,13,11,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,5,13,3,13,13,4,3,13,13,3,8,4,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["AddressValidator","Bip32","BlockTime","BnBNoExactMatch","BnBTotalTriesExceeded","ChecksumMismatch","CompactFilters","ConfirmationTime","Descriptor","Electrum","Encode","Error","Esplora","External","FeeRate","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","Foreign","Generic","Hex","InsufficientFunds","Internal","InvalidNetwork","InvalidOutpoint","InvalidPolicyPathError","InvalidProgressValue","InvalidU32Bytes","IrreplaceableTransaction","Json","Key","KeychainKind","Local","LocalUtxo","Miniscript","MissingKeyOrigin","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","ProgressUpdateError","Psbt","PsbtParse","Rusqlite","ScriptDoesntHaveAddressForm","Secp256k1","Signer","Sled","SpendingPolicyRequired","TransactionConfirmed","TransactionDetails","TransactionNotFound","UnknownUtxo","Utxo","Vbytes","WeightedUtxo","as_byte","as_ref","as_sat_vb","base32_len","blockchain","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_base32","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","confirmation_time","database","default","default","default","default_min_relay_fee","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor","descriptor","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","eq","fee","fee_vb","fee_wu","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fragment","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_btc_per_kvb","from_sat_per_vb","from_vb","from_wu","get_hash","get_hash","hash","hash","height","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into_descriptor_key","into_extended_key","into_wallet_descriptor","into_wallet_descriptor","is_spent","keychain","keys","ne","ne","ne","ne","ne","ne","new","outpoint","outpoint","partial_cmp","received","satisfaction_weight","sent","serialize","serialize","serialize","serialize","sub","timestamp","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","transaction","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","txid","txout","txout","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","utxo","vbytes","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet","write_base32","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","available","found","needed","requested","required","required","0","outpoint","psbt_input","AccurateFees","Blockchain","BlockchainFactory","Capability","Config","ConfigurableBlockchain","EsploraBlockchain","FullHistory","GetAnyTx","GetHeight","GetTx","Inner","LogProgress","NoopProgress","Progress","ProgressData","StatelessBlockchain","WalletSync","any","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","build","build_for_wallet","clone","clone","clone","clone_into","clone_into","clone_into","compact_filters","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","electrum","eq","esplora","estimate_fee","fmt","fmt","fmt","from","from","from","from_config","get_capabilities","get_hash","get_height","get_tx","hash","init","init","init","into","into","into","log_progress","noop_progress","progress","sync_wallet","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update","update","update","vzip","vzip","vzip","wallet_setup","wallet_sync","AnyBlockchain","AnyBlockchainConfig","CompactFilters","CompactFilters","Electrum","Electrum","Esplora","Esplora","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from","from","from","from","from","from_config","get_capabilities","get_height","get_tx","init","init","into","into","ne","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","wallet_setup","wallet_sync","0","0","0","0","0","0","Bip158","BitcoinPeerConfig","CompactFiltersBlockchain","CompactFiltersBlockchainConfig","CompactFiltersError","DataCorruption","Db","Global","InvalidFilter","InvalidFilterHeader","InvalidHeaders","InvalidResponse","Io","Mempool","MissingBlock","NoPeers","NotConnected","Peer","PeerBloomDisabled","Time","Timeout","add_tx","address","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone","clone_into","clone_into","connect","connect_proxy","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","drop","drop","eq","eq","estimate_fee","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from_config","get_capabilities","get_height","get_mempool","get_network","get_tx","get_tx","get_version","has_tx","init","init","init","init","init","init","into","into","into","into","into","into","is_connected","iter_txs","ne","ne","network","new","new","peers","recv","send","serialize","serialize","skip_blocks","socks5","socks5_credentials","storage_dir","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","wallet_setup","0","0","0","0","0","ElectrumBlockchain","ElectrumBlockchainConfig","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from_config","get_capabilities","get_height","get_tx","init","init","into","into","ne","retry","serialize","socks5","stop_gap","timeout","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","url","vzip","vzip","wallet_setup","BitcoinEncoding","EsploraBlockchain","EsploraBlockchainConfig","EsploraError","HeaderHashNotFound","HeaderHeightNotFound","Hex","HttpResponse","Io","NoHeader","Parsing","TransactionNotFound","Ureq","UreqTransport","base_url","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone_into","concurrency","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","eq","estimate_fee","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_config","get_capabilities","get_height","get_tx","init","init","init","into","into","into","ne","new","new","proxy","serialize","stop_gap","timeout","to_owned","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","wallet_setup","with_agent","with_concurrency","0","0","0","0","0","0","0","0","0","0","Batch","BatchDatabase","BatchOperations","Config","ConfigurableDatabase","Database","SqliteDatabase","SyncTime","any","begin_batch","begin_batch","block_time","borrow","borrow","borrow_mut","borrow_mut","check_descriptor_checksum","check_descriptor_checksum","clone","clone_into","commit_batch","commit_batch","connection","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","flush","flush","fmt","fmt","from","from","from_config","from_config","get_last_index","get_last_index","get_path_from_script_pubkey","get_path_from_script_pubkey","get_raw_tx","get_raw_tx","get_script_pubkey_from_path","get_script_pubkey_from_path","get_sync_time","get_sync_time","get_tx","get_tx","get_utxo","get_utxo","increment_last_index","increment_last_index","init","init","into","into","iter_raw_txs","iter_raw_txs","iter_script_pubkeys","iter_script_pubkeys","iter_txs","iter_txs","iter_utxos","iter_utxos","memory","new","path","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","AnyBatch","AnyDatabase","AnyDatabaseConfig","Memory","Memory","Memory","Sled","Sled","Sled","SledDbConfiguration","Sqlite","Sqlite","Sqlite","SqliteDbConfiguration","begin_batch","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_descriptor_checksum","commit_batch","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","flush","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","init","init","init","init","into","into","into","into","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","path","path","serialize","serialize","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","tree_name","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","0","0","MemoryDatabase","begin_batch","borrow","borrow_mut","check_descriptor_checksum","commit_batch","default","del_last_index","del_path_from_script_pubkey","del_raw_tx","del_script_pubkey_from_path","del_sync_time","del_tx","del_utxo","deref","deref_mut","drop","flush","fmt","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","new","set_last_index","set_raw_tx","set_script_pubkey","set_sync_time","set_tx","set_utxo","try_from","try_into","type_id","vzip","Bare","DerivedDescriptor","Descriptor","DescriptorPublicKey","DescriptorXKey","ExtendedDescriptor","ExtractPolicy","Hardened","HdKeyPaths","IntoWalletDescriptor","KeyMap","Legacy","Miniscript","None","Pkh","ScriptContext","Segwitv0","Sh","SinglePub","Unhardened","Wildcard","Wpkh","Wsh","XPub","address","as_derived","as_derived_fixed","as_enum","as_enum","as_inner","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","check_global_consensus_validity","check_global_consensus_validity","check_global_consensus_validity","check_global_policy_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_policy_validity","check_local_policy_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derivation_path","derive","derived","desc_type","descriptor_secret_key","deserialize","deserialize","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","eq","eq","error","explicit_script","ext","extract_policy","extract_policy","extract_policy","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from_ast","from_str","from_str","from_str_insane","from_tree","from_tree","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_leaf_pk","get_leaf_pk_pkh","get_leaf_pkh","get_nth_child","get_nth_pk","get_nth_pk_pkh","get_nth_pkh","get_satisfaction","has_mixed_timelocks","has_repeated_keys","hash","hash","hash","hash","hash","hash","id","init","init","init","init","init","init","into","into","into","into","into","into","into_inner","into_wallet_descriptor","is_deriveable","is_non_malleable","iter","iter_pk","iter_pk_pkh","iter_pkh","lift","lift","lift_check","matches","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","ne","ne","new_bare","new_pk","new_pkh","new_sh","new_sh_sortedmulti","new_sh_wpkh","new_sh_wsh","new_sh_wsh_sortedmulti","new_wpkh","new_wsh","new_wsh_sortedmulti","node","origin","other_top_level_checks","parse","parse_descriptor","parse_insane","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sign","sign_whole_tx","template","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string_with_secret","top_level_checks","top_level_type_check","translate_pk","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","vzip","vzip","wildcard","within_resource_limits","xkey","0","0","0","0","0","0","0","get_checksum","AsDerived","DerivedDescriptorKey","as_derived","as_derived_fixed","borrow","borrow_mut","clone","clone_into","cmp","deref","deref","deref_mut","drop","eq","fmt","fmt","from","get_hash","hash","hash_to_hash160","init","into","is_uncompressed","new","partial_cmp","serialized_len","to_owned","to_pubkeyhash","to_public_key","to_string","try_from","try_into","type_id","vzip","Base58","Bip32","DuplicatedKeys","Error","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","Pk","Policy","borrow","borrow_mut","deref","deref_mut","drop","fmt","fmt","from","from","from","from","from","from","from","from","init","into","to_string","try_from","try_into","type_id","vzip","0","0","0","0","0","0","0","0","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","FoldedConditionMap","Hash160Preimage","Hash256Preimage","IncompatibleConditions","IndexOutOfRange","MixedTimelockUnits","Multisig","None","None","NotEnoughItemsSelected","Partial","PartialComplete","PkOrF","Policy","PolicyError","Psbt","PsbtTimelocks","RelativeTimelock","Ripemd160Preimage","Satisfaction","SatisfiableItem","Sha256Preimage","Signature","SignatureKey","Thresh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","contribution","csv","default","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","get_hash","hash","id","id","init","init","init","init","init","init","init","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","ne","ne","partial_cmp","requires_path","satisfaction","serialize","serialize","serialize","serialize","serialize","timelock","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","current_height","input_max_height","psbt","0","0","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","0","0","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","0","0","0","0","0","0","0","0","0","1","1","1","1","1","1","2","2","2","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2Wpkh","P2Wpkh_P2Sh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","build","build","build","build","build","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","from","from","from","from","from","from","from","from","from","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","DescriptorSinglePriv","DescriptorSinglePub","Entropy","Error","ExtScriptContext","ExtendedKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","KeyError","KeyMap","Legacy","Message","Miniscript","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","SinglePriv","SinglePub","SortedMultiVec","ValidNetworks","XPrv","XPub","any_network","as_enum","as_public","bip39","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","compressed","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derive","derive_public_key","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","generate","generate_default","generate_with_entropy","generate_with_entropy_default","get_hash","get_hash","get_hash","has_secret","hash","hash","hash","init","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","into","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_segwit_v0","is_segwit_v0","is_uncompressed","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","ne","ne","ne","new","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","pks","sanity_check","satisfy","script_size","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_pubkeyhash","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","0","0","AmbiguousLanguages","BadEntropyBitCount","BadWordCount","English","Error","InvalidChecksum","Language","Mnemonic","MnemonicWithPassphrase","UnknownWord","WordCount","Words12","Words15","Words18","Words21","Words24","all","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","drop","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_entropy","from_entropy_in","from_str","generate_in_with","generate_with_entropy","get_hash","get_hash","hash","hash","init","init","init","init","into","into","into","into","into_descriptor_key","into_extended_key","language","language_of","ne","ne","parse","parse_in","parse_in_normalized","parse_normalized","partial_cmp","partial_cmp","serialize","to_entropy","to_entropy_array","to_owned","to_owned","to_owned","to_seed","to_seed_normalized","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","word_count","word_iter","words_by_prefix","0","0","0","0","AddressIndex","AddressInfo","IsDust","LastUnused","New","Peek","Reset","SyncOptions","Wallet","add_address_validator","add_signer","address","address_validator","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","coin_selection","database","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_checksum","drop","drop","drop","drop","ensure_addresses_cached","eq","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","get_address","get_address_validators","get_balance","get_descriptor_for_keychain","get_funded_wallet","get_internal_address","get_psbt_input","get_signers","get_tx","get_utxo","index","init","init","init","init","into","into","into","into","is_dust","is_mine","keychain","list_transactions","list_unspent","ne","network","new","new_offline","policies","progress","public_descriptor","secp_ctx","sign","signer","sync","time","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","tx_builder","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","0","0","AddressValidator","AddressValidatorError","ConnectionError","InvalidScript","Message","TimeoutError","UserRejected","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","fmt","fmt","from","init","into","ne","to_owned","to_string","try_from","try_into","type_id","validate","vzip","0","BranchAndBoundCoinSelection","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","LargestFirstCoinSelection","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","default","default","default","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fee_amount","fmt","fmt","fmt","fmt","from","from","from","from","init","init","init","init","into","into","into","into","local_selected_amount","new","selected","selected_amount","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","FullyNodedExport","WalletExport","blockheight","borrow","borrow_mut","change_descriptor","deref","deref_mut","descriptor","deserialize","drop","export_wallet","fmt","from","from_str","init","into","label","serialize","to_string","try_from","try_into","type_id","vzip","0","Dummy","Fingerprint","InputIndexOutOfRange","InvalidKey","InvalidNonWitnessUtxo","MissingHdKeypath","MissingKey","MissingNonWitnessUtxo","MissingWitnessScript","MissingWitnessUtxo","NonStandardSighash","PkHash","SignOptions","Signer","SignerError","SignerId","SignerOrdering","SignersContainer","UserCanceled","add_external","allow_all_sighashes","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_secret_key","drop","drop","drop","drop","drop","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_hash","hash","id","ids","init","init","init","init","init","into","into","into","into","into","ne","ne","new","partial_cmp","partial_cmp","remove","sign","sign_whole_tx","signers","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","0","0","0","get_timestamp","Bip69Lexicographic","BumpFee","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","CreateTx","OnlyChange","Shuffle","TxBuilder","TxBuilderContext","TxOrdering","Untouched","add_data","add_foreign_utxo","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_shrinking","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_policy","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","coin_selection","default","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","do_not_spend_change","drain_to","drain_wallet","drop","drop","drop","drop","drop","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_hash","get_hash","hash","hash","include_output_redeem_witness_script","init","init","init","init","init","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unspendable","version","vzip","vzip","vzip","vzip","vzip"],"q":["bdk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Utxo","","","bdk::blockchain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any::AnyBlockchain","","","bdk::blockchain::any::AnyBlockchainConfig","","","bdk::blockchain::compact_filters","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::compact_filters::CompactFiltersError","","","","","bdk::blockchain::electrum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora::EsploraError","","","","","","","","","","bdk::database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any::AnyBatch","","","bdk::database::any::AnyDatabase","","","bdk::database::any::AnyDatabaseConfig","","","bdk::database::memory","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::Descriptor","","","","","bdk::descriptor::DescriptorPublicKey","","bdk::descriptor::checksum","bdk::descriptor::derived","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::error::Error","","","","","","","","bdk::descriptor::policy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy::BuildSatisfaction","","","","bdk::descriptor::policy::PolicyError","","bdk::descriptor::policy::Satisfaction","","","","","","","","","","","bdk::descriptor::policy::SatisfiableItem","","","","","","","","","","","","bdk::descriptor::template","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::DescriptorPublicKey","","bdk::keys::DescriptorSecretKey","","bdk::keys::ExtendedKey","","bdk::keys::KeyError","","","bdk::keys::bip39","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::bip39::Error","","","","bdk::wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::AddressIndex","","bdk::wallet::address_validator","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::address_validator::AddressValidatorError","bdk::wallet::coin_selection","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::export","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer::SignerId","","","bdk::wallet::time","bdk::wallet::tx_builder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Error that can be returned to fail the validation of an …","BIP32 error","Block height and timestamp of a block","Branch and bound coin selection tries to avoid needing a …","Branch and bound coin selection possible attempts with …","Descriptor checksum mismatch","Compact filters client error)","DEPRECATED: Confirmation time of a transaction","Error related to the parsing and usage of descriptors","Electrum client error","Encoding error","Errors that can be thrown by the Wallet","Esplora client error","External","Fee rate","When bumping a tx the fee rate requested is lower than …","Node doesn’t have data to estimate a fee rate","When bumping a tx the absolute fee requested is lower than …","A UTXO owned by another wallet.","Generic error","Hex decoding error","Wallet’s UTXO set is not enough to cover recipient’s …","Internal, usually used for change outputs","Invalid network","Requested outpoint doesn’t exist in the tx (vout greater …","Error while extracting and manipulating policies","Progress value must be between 0.0 (included) and 100.0 …","Wrong number of bytes found when trying to convert to u32","Trying to replace a tx that has a sequence >= 0xFFFFFFFE","Error serializing or deserializing JSON data","Error while working with keys","Types of keychains","A UTXO owned by the local wallet.","An unspent output owned by a Wallet.","Miniscript error","In order to use the TxBuilder::add_global_xpubs option …","Cannot build a tx without recipients","manually_selected_only option is selected but no utxo has …","Output created is under the dust limit, 546 satoshis","Progress update error (maybe the channel has been closed)","Partially signed bitcoin transaction error","Partially signed bitcoin transaction parse error","Rusqlite client error","This error is thrown when trying to convert Bare and …","An ECDSA error","Signing error","Sled database error","Spending policy is not compatible with this KeychainKind","Happens when trying to bump a transaction that is already …","A wallet transaction","Thrown when a tx is not found in the internal database","Happens when trying to spend an UTXO that is not in the …","An unspent transaction output (UTXO).","Trait implemented by types that can be used to measure …","A Utxo with its satisfaction_weight.","Return KeychainKind as a byte","","Return the value as satoshi/vbyte","","Blockchain backends","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If the transaction is confirmed, contains height and …","Database types","","","","Create a new FeeRate with the default min relay fee value","","","","","","","","","","","","","","","","","Descriptors","Macro to write full descriptors with code","","","","","","","","","","","","","","","","","","","","Fee value (sats) if available. The availability of the fee …","Calculate absolute fee in Satoshis using size in virtual …","Calculate absolute fee in Satoshis using size in weight …","","","","","","","","","","Macro to write descriptor fragments with code","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new instance of FeeRate given a float fee rate in …","Create a new instance of FeeRate given a float fee rate in …","Calculate fee rate from fee and vbytes.","Calculate fee rate from fee and weight units (wu).","","","","","confirmation block height","","","","","","","","","","","","","","","","","","","","","Whether this UTXO is spent or not","Type of keychain","Key formats","","","","","","","Returns Some BlockTime if both height and timestamp are …","Get the location of the UTXO","Reference to a transaction output","","Received value (sats)","The weight of the witness data and scriptSig expressed in …","Sent value (sats)","","","","","","confirmation block timestamp","","","","","","","","","Optional transaction","","","","","","","","","","","","","","","","","Transaction id","Get the TxOut of the UTXO","Transaction output","","","","","","","","","The UTXO","Convert weight units to virtual bytes.","Get the version of BDK at runtime","","","","","","","","","Wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","Sats available for spending","found network, for example the network of the bitcoin node","Sats needed for some transaction","requested network, for example what is given as bdk-cli …","Required fee rate (satoshi/vbyte)","Required fee absolute value (satoshi)","","The location of the output.","The information about the input we require to add it to a …","Can compute accurate fees for the transactions found …","Trait that defines the actions that must be supported by a …","Trait for a factory of blockchains that share the …","Capabilities that can be supported by a Blockchain backend","Type that contains the configuration","Trait for Blockchain types that can be created given a …","Structure that implements the logic to sync with Esplora","Can recover the full history of a wallet and not only the …","Can fetch any historical transaction given its txid","Trait for getting the current height of the blockchain.","Trait for getting a transaction by txid","The type returned when building a blockchain from this …","Type that implements Progress and logs at level INFO every …","Type that implements Progress and drops every update …","Trait for types that can receive and process progress …","Data sent with a progress update over a channel","Trait for blockchains that don’t contain any state","Trait for blockchains that can sync by updating the …","Runtime-checked blockchain types","","","","","","","Broadcast a transaction","Build a new blockchain for the given descriptor wallet_name","Build a new blockchain for a given wallet","","","","","","","Compact Filters","","","","","","","","","","","","Electrum","","Esplora","Estimate the fee rate required to confirm a transaction in …","","","","","","","Create a new instance given a configuration","Return the set of Capability supported by this backend","","Return the current height","Fetch a transaction given its txid","","","","","","","","Create a new instance of LogProgress","Create a new instance of NoopProgress","Shortcut to create a channel (pair of Sender and Receiver) …","Use BlockchainFactory::build_for_wallet to get a …","","","","","","","","","","","","","Send a new progress update","","","","","","Setup the backend and populate the internal database for …","If not overridden, it defaults to calling …","Type that can contain any of the Blockchain types defined …","Type that can contain any of the blockchain configurations …","Compact filters client","Compact filters client","Electrum client","Electrum client","Esplora client","Esplora client","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Invalid BIP158 filter","Data to connect to a Bitcoin P2P peer","Structure implementing the required blockchain traits","Configuration for a CompactFiltersBlockchain","An error that can occur during sync with a …","The data stored in the block filters storage are corrupted","Internal database error","Wrapper for crate::error::Error","The compact filter returned is invalid","The compact filter headers returned are invalid","The headers returned are invalid","A peer sent an invalid or unexpected response","Internal I/O error","Container for unconfirmed, but valid Bitcoin transactions","The peer is missing a block in the valid chain","No peers have been specified","A peer is not connected","A Bitcoin peer","The peer doesn’t advertise the BLOOM service flag","Internal system time error","A peer took too long to reply to one of our messages","Add a transaction to the mempool","Peer address such as 127.0.0.1:18333","","","","","","","","","","","","","","","","","","Connect to a peer over a plaintext TCP connection","Connect to a peer through a SOCKS5 proxy, optionally by …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the mempool used by this peer","Return the Bitcoin Network in use","Look-up a transaction in the mempool given an Inventory …","","Return the VersionMessage sent by the peer","Return whether or not the mempool contains a transaction …","","","","","","","","","","","","","Return whether or not the peer is still connected","Return the list of transactions contained in the mempool","","","Network used","Create a new empty mempool","Construct a new instance given a list of peers, a path to …","List of peers to try to connect to for asking headers and …","Waits for a specific incoming Bitcoin message, optionally …","Send a raw Bitcoin message to the peer","","","Optionally skip initial skip_blocks blocks (default: 0)","Optional socks5 proxy","Optional socks5 proxy credentials","Storage dir to save partially downloaded headers and full …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrapper over an Electrum Client that implements the …","Configuration for an ElectrumBlockchain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Request retry count","","URL of the socks5 proxy server or a Tor service","Stop searching addresses for transactions after finding an …","Request timeout (seconds)","","","","","","","","URL of the Electrum server (such as ElectrumX, Esplora, …","","","","Invalid Bitcoin data returned","Structure that implements the logic to sync with Esplora","Configuration for an EsploraBlockchain","Errors that can happen during a sync with EsploraBlockchain","Header hash not found","Header height not found","Invalid Hex data returned","HTTP response error","IO error during ureq response read","No header found in ureq response","Invalid number returned","Transaction not found","Error during ureq HTTP request","Transport error during the ureq HTTP call","Base URL of the esplora service","","","","","","","","","","Number of parallel requests sent to the esplora service …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new instance of the client from a base URL and …","create a config with default values given the base url and …","Optional URL of the proxy to use to make requests to the …","","Stop searching addresses for transactions after finding an …","Socket timeout.","","","","","","","","","","","","","","","","Set the inner ureq agent.","Set the number of parallel requests the client can make.","","","","","","","","","","","Container for the operations","Trait for a database that supports batch operations","Trait for operations that can be batched","Type that contains the configuration","Trait for Database types that can be created given a …","Trait for reading data from a database","Sqlite database stored on filesystem","Blockchain state at the time of syncing","Runtime-checked database types","Create a new batch container","","Block timestamp and height at the time of sync","","","","","Read and checks the descriptor checksum for a given …","","","","Consume and apply a batch of operations","","A rusqlite connection object to the sqlite database","Delete the last derivation index for a keychain.","","Delete the data related to a specific script_pubkey, …","","Delete a raw transaction given its Txid","","Delete a script_pubkey given the keychain and its child …","","Reset the sync time to None","","Delete the metadata of a transaction and optionally the …","","Delete a LocalUtxo given its OutPoint","","","","","","","","","Force changes to be written to disk","","","","","","Create a new instance given a configuration","","Return the last derivation index for a keychain.","","Fetch the keychain and child number of a given …","","Fetch a raw transaction given its Txid","","Fetch a script_pubkey given the child number of a keychain.","","Return the sync time, if present","","Fetch the transaction metadata and optionally also the raw …","","Fetch a LocalUtxo given its OutPoint","","Increment the last derivation index for a keychain and …","","","","","","Return the list of raw transactions","","Return the list of script_pubkeys","","Return the list of transactions metadata","","Return the list of LocalUtxos","","In-memory ephemeral database","Instantiate a new SqliteDatabase instance by creating a …","Path on the local filesystem to store the sqlite file","","Store the last derivation index for a given keychain.","","Store a raw transaction","","Store a script_pubkey along with its keychain and child …","","Store the sync time","","Store the metadata of a transaction","","Store a LocalUtxo","","","","","","","","","","","Type that contains any of the BatchDatabase::Batch types …","Type that can contain any of the Database types defined by …","Type that can contain any of the database configurations …","In-memory ephemeral database","In-memory ephemeral database","Memory database has no config","Simple key-value embedded database based on sled","Simple key-value embedded database based on sled","Simple key-value embedded database based on sled","Configuration type for a sled::Tree database","Sqlite embedded database using rusqlite","Sqlite embedded database using rusqlite","Sqlite embedded database using rusqlite","Configuration type for a sqlite::SqliteDatabase database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Main directory of the db","Main directory of the db","","","","","","","","","","","","","","","","Name of the database tree, a separated namespace for the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","In-memory ephemeral database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new empty database","","","","","","","","","","","A raw scriptpubkey (including pay-to-pubkey) under Legacy …","Alias for a Descriptor that contains extended derived keys","Script descriptor","The MiniscriptKey corresponding to Descriptors. This can …","Instance of an extended key with origin and derivation path","Alias for a Descriptor that can contain extended keys …","Trait implemented on Descriptors to add a method to …","Unhardened wildcard, e.g. *h","Alias for the type of maps that represent derivation paths …","Trait for types which can be converted into an …","Alias type for a map of public key to secret key","Legacy ScriptContext To be used as P2SH scripts For …","Top-level script AST type","No wildcard","Pay-to-PubKey-Hash","The ScriptContext for Miniscript. Additional type …","Segwitv0 ScriptContext","Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)","Single Public Key","Unhardened wildcard, e.g. *","Whether a descriptor has a wildcard in it","Pay-to-Witness-PubKey-Hash","Pay-to-Witness-ScriptHash with Segwitv0 context","Xpub","Computes the Bitcoin address of the descriptor, if one …","","","","","Get a reference to the inner AstElem representing the root …","","","","","","","","","","","","","Enumerates all child nodes of the current AST node (self) …","Depending on script Context, some of the Terminals might …","","","Depending on script Context, some of the script resource …","","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","","","Policy rules at the Miniscript satisfaction time. It is …","","","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","","","Check whether the given satisfaction is valid under the …","","","Descriptor checksum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The derivation path","Derives all wildcard keys in the descriptor using the …","Derived descriptor keys","Get the DescriptorType of Descriptor","","","","","","","","","","Encode as a Bitcoin script","","","","","","","Descriptor errors","Computes the “witness script” of the descriptor, i.e. …","Additional information helpful for extra analysis.","Extract the spending policy","","","","","","","","","","","","","","","","","","","Add type information(Type and Extdata) to Miniscript based …","","","Attempt to parse an insane(scripts don’t clear sanity …","Parse an expression tree into a descriptor","Parse an expression tree into a Miniscript. As a general …","","","","","","","Returns Vec with cloned version of all public keys from …","Returns Vec of PkPkh entries, representing either public …","Returns Vec with hashes of all public keys from the …","Returns child node with given index, if any","Returns Option::Some with cloned n’th public key from …","Returns Option::Some with hash of n’th public key or …","Returns Option::Some with hash of n’th public key from …","Returns satisfying witness and scriptSig to spend an …","Whether the miniscript contains a combination of timelocks","Whether the miniscript has repeated Pk or Pkh","","","","","","","","","","","","","","","","","","","","Extracts the AstElem representing the root of the …","Convert to wallet descriptor","Whether or not the descriptor has any wildcards","Whether the miniscript is malleable","Creates a new Iter iterator that will iterate over all …","Creates a new PkIter iterator that will iterate over all …","Creates a new PkPkhIter iterator that will iterate over …","Creates a new PkhIter iterator that will iterate over all …","","","Lifting corresponds conversion of miniscript into Policy […","Compares this key with a keysource and returns the …","Depending on script context, the size of a satifaction …","","","Maximum size, in bytes, of a satisfying witness. For …","Computes an upper bound on the weight of a satisfying …","Maximum number of witness elements used to satisfy the …","","","Create a new bare descriptor from witness script Errors …","Create a new pk descriptor","Create a new PkH descriptor","Create a new sh for a given redeem script Errors when …","Create a new sh sortedmulti descriptor with threshold k …","Create a new sh wrapped wpkh from Pk. Errors when …","Create a new sh wrapped wsh descriptor with witness script …","Create a new sh wrapped wsh sortedmulti descriptor from …","Create a new Wpkh descriptor Will return Err if …","Create a new wsh descriptor from witness script Errors …","Create a new wsh sorted multi descriptor Errors when …","A node in the Abstract Syntax Tree(","Origin information","Other top level checks that are context specific","Attempt to parse a Script into Miniscript representation. …","Parse a descriptor that may contain secret keys","Attempt to parse an insane(scripts don’t clear sanity …","","","","","","","Descriptor policy","Whether all spend paths of miniscript require a signature","Whether the descriptor is safe Checks whether all the …","Check whether the underlying Miniscript is safe under the …","Attempt to produce non-malleable satisfying witness for the","Attempt to produce a malleable satisfying witness for the …","Get the scriptCode of a transaction output.","Computes the scriptpubkey of the descriptor","Size, in bytes of the script-pubkey. If this Miniscript is …","","","","","Descriptor templates","","","","","","","","","Serialize a descriptor to string with its secret keys","Check top level consensus rules.","Check whether the top-level is type B","Convert a descriptor using abstract keys to one using …","This will panic if translatefpk returns an uncompressed …","","","","","","","","","","","","","The correctness and malleability type information for the …","","","","","","","Computes the scriptSig that will be in place for an …","","","","","","","Whether the descriptor is wildcard","Whether the miniscript can exceed the resource …","The extended key","","","","","","","","Compute the checksum of a descriptor","Utilities to derive descriptors","Extended DescriptorPublicKey that has been derived","Derive a descriptor and transform all of its keys to …","Transform the keys into DerivedDescriptorKey.","","","","","","","","","","","","","","","","","","","","Construct a new derived key","","","","","","","","","","","Error during base58 decoding","BIP32 error","The descriptor contains multiple keys with the same BIP32 …","Errors related to the parsing and usage of descriptors","The descriptor contains hardened derivation steps on …","Hex decoding error","Invalid character found in the descriptor checksum","The provided descriptor doesn’t match its checksum","Invalid HD Key path, such as having a wildcard but a …","Error thrown while working with keys","Miniscript error","Key-related error","Error while extracting and manipulating policies","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Absolute timeclock timestamp","Can not add to an item that is Satisfaction::None or …","Can not add to an item that is …","Options to build the satisfaction field in the policy","Can satisfy the policy item","An extra condition that must be satisfied but that is out …","Type for a map of sets of Condition items keyed by each set…","Type for a map of folded sets of Condition items keyed by …","SHA256 then RIPEMD160 preimage hash","Double SHA256 preimage hash","Incompatible conditions (not currently used)","Index out of range for an item to satisfy a …","Can not merge CSV or timelock values unless both are less …","Multi-signature public keys with threshold count","Cannot satisfy or contribute to the policy item","Don’t generate satisfaction field","Not enough items are selected to satisfy a …","Only a partial satisfaction of some kind of threshold …","Can reach the threshold of some kind of threshold policy","Raw public key or extended key fingerprint","Descriptor spending policy","Errors that can happen while extracting and manipulating …","Analyze the given PSBT to check for existing signatures","Like Psbt variant and also check for expired timelocks","Relative timelock locktime","RIPEMD160 preimage hash","Represent if and how much a policy item is satisfied by …","An item that needs to be satisfied","SHA256 preimage hash","Signature for a raw public key","Signature for an extended key fingerprint","Threshold items with threshold count","","","","","","","","","","","","","","","","","","","","","","","","","","","","How the wallet’s descriptor can satisfy this policy node","Optional CheckSequenceVerify condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the conditions that are set by the spending policy …","","","Returns a unique id for the SatisfiableItem","Identifier for this policy node","","","","","","","","","","","","","","","Returns whether the SatisfiableItem is a leaf item","Returns whether the Satisfaction is a leaf item","Returns true if there are no extra conditions to verify","Type of this policy node","","","","Return whether or not a specific path in the policy tree …","How much a given PSBT already satisfies this policy node …","","","","","","Optional timelock condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Current blockchain height","The highest confirmation height between the inputs CSV …","Given PSBT","","","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","The items that can be satisfied by the descriptor or are …","The items that can be satisfied by the descriptor","Threshold","Threshold","Total number of items","Total number of items","Whether the items are sorted in lexicographic order (used …","Whether the items are sorted in lexicographic order (used …","","","The digest value","The digest value","The digest value","The digest value","The policy items","The raw public key or extended key fingerprint","The required threshold count","The required threshold count","The timestamp value","The locktime value","","","","","","","","","","","","","","","","","","","BIP44 template. Expands to pkh(key/44'/0'/0'/{0,1}/*)","BIP44 public template. Expands to pkh(key/{0,1}/*)","BIP49 template. Expands to sh(wpkh(key/49'/0'/0'/{0,1}/*))","BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))","BIP84 template. Expands to wpkh(key/84'/0'/0'/{0,1}/*)","BIP84 public template. Expands to wpkh(key/{0,1}/*)","Trait for descriptor templates that can be built into a …","Type alias for the return type of DescriptorTemplate, …","P2PKH template. Expands to a descriptor pkh(key)","P2WPKH template. Expands to a descriptor wpkh(key)","P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))","","","","","","","","","","","","","","","","","","","Build the complete descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BIP32 error","Trait for keys that can be derived.","Container for public or secret keys","The MiniscriptKey corresponding to Descriptors. This can …","A Secret Key that can be either a single key or an Xprv","A Single Descriptor Secret Key with optional origin …","A Single Descriptor Key with optional origin information","Type specifying the amount of entropy required e.g. [u8;32]","Returned error in case of failure","Trait that adds extra useful methods to ScriptContexts","Enum for extended keys that can be either xprv or xpub","Trait that allows generating a key with the default options","Trait for keys that can be generated","Output of a GeneratableKey key generation","Trait for objects that can be turned into a public or …","The key has an invalid checksum","The key is not valid for the given network","The key cannot exist in the given script context","Errors thrown while working with keys","Alias type for a map of public key to secret key","Legacy scripts","Custom error message","Miniscript error","Extra options required by the generate_with_entropy","A private extended key, aka an xprv","Options for generating a PrivateKey","A public extended key, aka an xpub","The ScriptContext for Miniscript. Additional type …","Enum representation of the known valid ScriptContexts","Segwitv0 scripts","Single Secret Key","Single Public Key","Contents of a “sortedmulti” descriptor","Set of valid networks for a key","Xprv","Xpub","Create a set containing mainnet, testnet and regtest","Returns the ScriptContext as a ScriptContextEnum","Return the public version of this key, by applying either …","BIP-0039","","","","","","","","","","","","","","","","","","","","","","","Depending on script Context, some of the Terminals might …","Depending on script Context, some of the script resource …","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","Policy rules at the Miniscript satisfaction time. It is …","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","Check whether the given satisfaction is valid under the …","","","","","","","","","","","","","","","","Whether the generated key should be “compressed” or not","","","","","","","","","","","","","","","","","","","","","","","","","If this public key has a wildcard, replace it by the given …","Computes the public key corresponding to this descriptor …","","","","","","","","","","","","Encode as a Bitcoin script","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create an instance given a public key and a set of valid …","Create an instance given a secret key and a set of valid …","","","Parse an expression tree into a SortedMultiVec","Full path, from the master key","Generate a key given the options with a random entropy","Generate a key with the default options and a random …","Generate a key given the extra options and the entropy","Generate a key with the default options and a given entropy","","","","Return whether or not the key contains the private data","","","","","","","","","","","","","","","","","","","","","","","","","","Turn the key into a DescriptorKey within the requested …","Consume self and turn it into a DescriptorKey by adding …","","","","","","Consume self and turn it into an ExtendedKey","","","Consumes self and returns the key","Transform the ExtendedKey into an ExtendedPrivKey for the …","Transform the ExtendedKey into an ExtendedPubKey for the …","Whether or not the key has a wildcards","Returns whether the script context is Legacy","Returns whether the script context is …","Returns whether the script context is Segwitv0","Returns whether the script context is …","","signatures required","The key","The key","","Create a set only containing mainnet","The fingerprint of the master key associated with this key","Depending on script context, the size of a satifaction …","Maximum size, in bytes, of a satisfying witness. In …","Maximum number of witness elements used to satisfy the …","Compute the intersection of two sets","","","","Create a new instance of SortedMultiVec given a list of …","Origin information","Origin information","Other top level checks that are context specific","Override the computed set of valid networks","","","","public keys inside sorted Multi","utility function to sanity a sorted multi vec","Attempt to produce a satisfying witness for the witness …","Size, in bytes of the script-pubkey. If this Miniscript is …","Create Terminal::Multi containing sorted pubkeys","Create a set containing testnet and regtest","","","","","","","","","","","","Check top level consensus rules.","Check whether the top-level is type B","This will panic if translatefpk returns an uncompressed …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The mnemonic can be interpreted as multiple languages. Use …","Entropy was not a multiple of 32 bits or between 128-256n …","Mnemonic has a word count that is not a multiple of 6.","The English language.","A BIP39 error.","The mnemonic has an invalid checksum.","Language to be used for the mnemonic phrase.","A mnemonic code.","Type for a BIP39 mnemonic with an optional passphrase","Mnemonic contains an unknown word. Error contains the …","Type describing entropy length (aka word count) in the …","12 words mnemonic (128 bits entropy)","15 words mnemonic (160 bits entropy)","18 words mnemonic (192 bits entropy)","21 words mnemonic (224 bits entropy)","24 words mnemonic (256 bits entropy)","The list of supported languages. Language support is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new English Mnemonic from the given entropy. …","Create a new Mnemonic in the specified language from the …","","Generate a new Mnemonic in the given language with the …","","","","","","","","","","","","","","","","Get the language of the Mnemonic.","Determine the language of the mnemonic.","","","Parse a mnemonic and detect the language from the enabled …","Parse a mnemonic in the given language.","Parse a mnemonic in normalized UTF8 in the given language.","Parse a mnemonic in normalized UTF8.","","","","Convert the mnemonic back to the entropy used to generate …","Convert the mnemonic back to the entropy used to generate …","","","","Convert to seed bytes.","Convert to seed bytes with a passphrase in normalized UTF8.","","","","","","","","","","","","","","","","","","","","Get the number of words in the mnemonic.","Get an iterator over the words.","Get words from the word list that start with the given …","","","","","The address index selection strategy to use to derived an …","A derived address and the index it was found at For …","Trait to check if a value is below the dust limit. We are …","Return the address for the current descriptor index if it …","Return a new address after incrementing the current …","Return the address for a specific descriptor index. Does …","Return the address for a specific descriptor index and …","Options to a sync.","A Bitcoin wallet","Add an address validator","Add an external signer","Address","Address validation callbacks","","","","","","","","","Bump the fee of a transaction previously created with this …","Start building a transaction.","Coin selection","Return an immutable reference to the internal database","","","","","","","","","","","Return the checksum of the public descriptor associated to …","","","","","Ensures that there are at least max_addresses addresses …","","Wallet export","Try to finalize a PSBT","","","","","","","","","","Return a derived address using the external descriptor, …","Get the address validators","Return the balance, meaning the sum of this wallet’s …","Returns the descriptor used to create addresses for a …","Return a fake wallet that appears to be funded for testing.","Return a derived address using the internal (change) …","get the corresponding PSBT Input for a LocalUtxo","Get the signers","Return a single transactions made and received by the …","Returns the UTXO owned by this wallet corresponding to …","Child index of this address","","","","","","","","","Check whether or not a value is below dust limit","Return whether or not a script is part of this wallet …","Type of keychain","Return the list of transactions made and received by the …","Return the list of unspent outputs of this wallet","","Get the Bitcoin network the wallet is using.","Create a wallet.","Create a new “offline” wallet","Return the spending policies for the wallet’s descriptor","The progress tracker which may be informed when progress …","Return the “public” version of the wallet’s …","Return the secp256k1 context used for all signing …","Sign a transaction with all the wallet’s signers, in the …","Generalized signers","Sync the internal database with the blockchain","Cross-platform time","","","","","","","","","","Transaction builder","","","","","","","","","Deterministically generate a unique name given the …","","","Trait to build address validators","Errors that can be returned to fail the validation of an …","Network connection error","Invalid script","A custom error message","Network request timeout error","User rejected the address","","","","","","","","","","","","","","","","","","","","Validate or inspect an address","","","Branch and bound coin selection","Trait for generalized coin selection algorithms","Result of a successful coin selection","Default coin selection algorithm used by TxBuilder if not …","Simple and dumb coin selection","OldestFirstCoinSelection always picks the utxo with the …","","","","","","","","","","","","","Perform the coin selection","","","","","","","","","","","","","","","","","","","Total fee amount in satoshi","","","","","","","","","","","","","","","","","The total value of the inputs selected from the local …","Create new instance with target size for change output","List of outputs selected for use as inputs","The total value of the inputs selected.","","","","","","","","","","","","","","","","","","","Structure that contains the export of a wallet","Alias for FullyNodedExport","Earliest block to rescan when looking for the wallet’s …","","","Return the internal descriptor, if present","","","Return the external descriptor","","","Export a wallet","","","","","","Arbitrary label for the wallet","","","","","","","","Dummy identifier","The fingerprint of a BIP32 extended key","Input index is out of range","The private key in use has the right fingerprint but …","The non_witness_utxo specified is invalid","The fingerprint and derivation path are missing from the …","The private key is missing for the required public key","The non_witness_utxo field of the transaction is required …","The witness_script field of the transaction is required to …","The witness_utxo field of the transaction is required to …","The psbt contains a non-SIGHASH_ALL sighash in one of its …","Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA …","Options for a software signer","Trait for signers","Signing error","Identifier of a signer in the SignersContainers. Used as a …","Defines the order in which signers are called","Container for multiple signers","The user canceled the operation","Adds an external signer to the container for the specified …","Whether the signer should use the sighash_type set in the …","Create a map of public keys to secret keys","Whether the wallet should assume a specific height has …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the secret key for the signer","","","","","","","","","Finds the signer with lowest ordering for a given id in …","","","","","","","","","","","","","","","","","Return the SignerId for this signer","Returns the list of identifiers of all the signers in the …","","","","","","","","","","","","","Default constructor","","","Removes a signer from the container and returns it","Sign a PSBT","Return whether or not the signer signs the whole …","Returns the list of signers in the container, sorted by …","","","","","","","Whether the signer should trust the witness_utxo, if the …","","","","","","","","","","","","","","","","","","","","","","","","Return the current timestamp in seconds","BIP69 / Lexicographic","Marker type to indicate the TxBuilder is being used to …","Use both change and non-change outputs (default)","Only use non-change outputs (see …","Policy regarding the use of change outputs when creating a …","Marker type to indicate the TxBuilder is being used to …","Only use change outputs (see TxBuilder::only_spend_change)","Randomized (default)","A transaction builder","Context in which the TxBuilder is valid","Ordering of the transaction’s inputs and outputs","Unchanged","Add data as an output, using OP_RETURN","Add a foreign UTXO i.e. a UTXO not owned by this wallet.","Fill-in the PSBT_GLOBAL_XPUB field with the extended keys …","Add a recipient to the internal list","Add a utxo to the internal list of unspendable utxos","Add a utxo to the internal list of utxos that must be spent","Add the list of outpoints to the internal list of UTXOs …","Explicitly tells the wallet that it is allowed to reduce …","","","","","","","","","","","Set a specific ChangeSpendPolicy. See …","","","","","","","","","","","","","Choose the coin selection algorithm","","","","","","","","","","","","","","","Do not spend change outputs","Sets the address to drain excess coins to.","Spend all the available inputs. This respects filters like …","","","","","","Enable signaling RBF","Enable signaling RBF with a specific nSequence value","","","Set an absolute fee","Set a custom fee rate","Finish the building the transaction.","","","","","","","","","","","","","","","Fill-in the psbt::Output::redeem_script and …","","","","","","","","","","","Only spend utxos added by add_utxo.","Use a specific nLockTime while creating the transaction","Only spend change outputs","Only Fill-in the psbt::Input::witness_utxo field when …","Choose the ordering for inputs and outputs of the …","","","Set the policy path to use while creating the transaction …","Replace the recipients already added with a new list","Sign with a specific sig hash","Sort transaction inputs and outputs by TxOrdering variant","","","","","","","","","","","","","","","","","","","","","Replace the internal list of unspendable utxos with a new …","Build a transaction with a specific version","","","","",""],"i":[1,1,0,1,1,1,1,0,1,1,1,0,1,2,0,1,1,1,3,1,1,1,2,1,1,1,1,1,1,1,1,0,3,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,2,2,4,2,0,1,2,4,5,6,3,7,8,1,2,4,5,6,3,7,8,2,2,4,5,6,3,7,8,2,4,5,6,3,7,8,7,0,4,7,8,4,1,2,4,5,6,3,7,8,1,2,4,5,6,3,7,8,0,0,2,5,7,8,1,2,4,5,6,3,7,8,2,4,5,6,3,7,8,7,4,4,1,1,2,4,5,6,3,7,8,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,5,6,3,7,8,4,4,4,4,2,5,2,5,8,1,2,4,5,6,3,7,8,1,2,4,5,6,3,7,8,9,9,10,11,5,5,0,4,5,6,3,7,8,8,3,5,4,7,6,7,2,5,7,8,4,8,2,4,5,6,3,7,8,1,7,1,2,4,5,6,3,7,8,1,2,4,5,6,3,7,8,7,3,5,1,2,4,5,6,3,7,8,6,12,0,1,2,4,5,6,3,7,8,0,2,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,38,39,40,41,42,43,43,44,0,0,0,45,0,0,44,44,0,0,46,0,0,0,0,0,0,0,44,47,48,44,47,48,49,46,46,44,47,48,44,47,48,0,47,48,44,47,48,44,47,48,44,47,48,0,44,0,49,44,47,48,44,47,48,45,49,44,50,51,44,44,47,48,44,47,48,0,0,0,46,44,47,48,44,47,48,44,47,48,44,47,48,52,47,48,44,47,48,53,53,0,0,54,55,54,55,54,55,54,55,54,55,54,55,55,54,55,54,55,55,54,55,55,54,55,54,54,54,54,55,55,55,55,54,54,54,54,54,55,54,55,55,55,55,54,55,54,55,54,55,54,55,54,54,56,57,58,59,60,61,62,0,0,0,0,62,62,62,62,62,62,62,62,0,62,62,62,0,62,62,62,63,64,63,65,66,64,67,62,63,65,66,64,67,62,66,64,67,64,67,65,65,63,63,65,66,64,67,62,63,65,66,64,67,62,64,67,63,65,66,64,67,62,64,67,66,63,65,66,64,67,62,62,63,65,66,64,67,62,62,62,62,62,62,66,66,66,65,65,63,66,65,63,63,65,66,64,67,62,63,65,66,64,67,62,65,63,64,67,67,63,66,67,65,65,64,67,67,64,64,67,64,67,62,63,65,66,64,67,62,63,65,66,64,67,62,63,65,66,64,67,62,63,65,66,64,67,62,66,68,69,70,71,72,0,0,73,74,73,74,73,74,74,73,74,73,74,74,73,74,74,73,74,73,73,74,73,73,73,73,73,74,73,74,74,74,74,74,74,74,74,73,74,73,74,73,74,74,73,74,73,75,0,0,0,75,75,75,75,75,75,75,75,75,75,76,77,75,76,77,75,76,77,76,76,76,77,75,76,77,75,76,76,77,75,76,76,77,77,75,75,76,77,75,75,75,75,75,75,75,76,77,77,77,77,77,75,76,77,75,76,76,77,76,76,76,76,76,76,75,77,75,76,77,75,76,77,75,76,77,75,76,77,77,77,78,79,80,81,82,83,84,85,86,87,88,0,0,89,0,0,0,0,0,88,90,91,90,91,90,91,92,90,91,91,88,90,90,93,90,93,90,93,90,93,90,93,90,93,90,93,90,90,91,90,91,91,90,91,92,90,90,91,90,91,89,90,92,90,92,90,92,90,92,90,92,90,92,90,92,90,92,90,90,91,90,91,92,90,92,90,92,90,92,90,0,90,90,91,93,90,93,90,93,90,93,90,93,90,93,90,91,90,91,90,91,90,91,90,91,0,0,0,94,95,96,94,95,96,0,94,95,96,0,95,94,95,97,98,96,94,95,97,98,96,95,95,94,95,94,95,94,95,94,95,94,95,94,95,94,95,94,95,97,98,96,94,95,97,98,96,97,98,96,94,95,97,98,96,95,95,97,98,96,94,94,94,94,95,95,95,95,97,98,96,96,96,96,95,95,95,95,95,95,95,95,95,94,95,97,98,96,94,95,97,98,96,95,95,95,95,97,98,97,98,96,94,95,94,95,94,95,94,95,94,95,94,95,97,94,95,97,98,96,94,95,97,98,96,94,95,97,98,96,94,95,97,98,96,99,100,101,102,103,104,105,106,107,0,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,109,0,0,0,0,0,0,110,0,0,0,0,0,110,109,0,0,109,111,110,0,109,109,111,109,109,109,112,113,114,110,115,109,112,113,114,110,115,109,112,113,114,114,116,112,113,116,113,116,116,112,113,116,112,113,116,116,112,113,116,112,113,0,110,115,109,112,113,114,110,115,109,112,113,114,110,115,109,112,113,114,110,115,109,112,113,114,110,115,109,112,113,114,115,109,0,109,115,109,114,110,115,109,112,113,114,114,110,115,109,112,113,114,0,109,114,117,109,114,110,115,109,109,112,113,114,114,109,114,110,115,109,112,113,114,114,109,114,114,109,114,110,115,109,112,113,114,114,114,114,114,114,114,114,109,114,114,110,115,109,112,113,114,115,110,115,109,112,113,114,110,115,109,112,113,114,114,118,109,114,114,114,114,114,109,114,114,115,116,112,113,114,109,114,115,109,109,109,109,109,109,109,109,109,109,109,109,114,115,116,114,109,114,110,115,109,112,113,114,0,114,109,114,114,114,109,109,114,109,114,115,115,0,110,115,109,112,113,114,109,114,109,116,116,109,114,110,115,109,112,113,114,110,115,109,112,113,114,114,110,115,109,112,113,114,109,110,115,109,112,113,114,115,114,115,119,120,121,122,123,124,125,0,0,0,126,126,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,128,128,128,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,130,131,132,133,134,135,136,137,138,138,0,139,0,0,0,137,137,138,138,138,137,139,140,138,139,139,0,0,0,140,140,137,137,0,0,137,137,137,137,141,137,139,142,143,138,140,141,137,139,142,143,138,140,141,137,139,142,143,140,141,137,139,142,143,140,143,142,143,141,143,141,137,139,142,143,138,140,141,137,139,142,143,138,140,141,137,139,142,143,138,140,143,138,141,137,139,142,143,138,138,140,141,137,139,139,142,142,143,138,140,142,143,143,137,142,141,137,139,142,143,138,140,141,137,139,142,143,138,140,137,139,143,142,143,138,143,142,142,141,137,139,142,143,143,141,137,139,142,143,140,138,141,137,139,142,143,138,140,141,137,139,142,143,138,140,141,137,139,142,143,138,140,141,137,139,142,143,138,140,144,145,145,145,146,147,148,149,150,149,150,149,150,149,150,149,150,151,152,153,154,155,156,157,158,158,157,159,160,161,162,163,164,165,166,167,168,169,164,165,166,167,168,169,165,167,169,0,0,0,0,0,0,0,0,0,0,0,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,170,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,161,162,163,164,165,166,167,168,169,171,0,0,0,0,0,0,172,172,0,0,0,0,0,0,171,171,171,0,0,173,171,171,172,174,0,174,0,0,173,175,111,0,0,175,111,0,176,175,0,174,177,178,111,179,180,175,181,173,182,171,174,177,178,111,179,180,175,181,173,182,171,116,116,116,116,116,116,116,116,177,178,111,179,173,182,177,178,111,179,173,182,178,111,179,182,182,174,177,177,178,111,179,180,175,181,173,182,171,174,177,178,111,179,180,175,181,173,182,171,111,111,174,177,178,111,179,180,175,181,173,182,171,178,178,111,179,173,178,178,111,111,179,180,175,175,181,173,182,171,171,178,174,174,174,177,178,111,179,180,175,181,173,182,171,171,171,181,181,111,175,178,111,172,183,172,183,178,111,179,174,178,111,179,174,177,178,111,179,180,175,181,173,182,171,174,177,178,111,179,180,175,181,173,182,171,184,185,177,177,111,175,181,185,174,177,177,174,174,111,176,173,176,173,111,178,179,180,178,0,111,116,178,178,0,178,111,179,178,179,180,116,181,178,111,179,178,178,178,178,178,0,177,178,111,179,173,182,111,178,111,175,171,116,116,178,174,177,178,111,179,180,175,181,173,182,171,174,177,178,111,179,180,175,181,173,182,171,174,177,178,111,179,180,175,181,173,182,171,174,177,178,111,179,180,175,181,173,182,171,124,125,186,187,188,189,190,191,192,193,193,193,194,0,193,0,0,0,193,0,195,195,195,195,195,194,194,193,196,195,194,193,196,195,194,193,196,194,193,196,194,196,194,193,196,195,194,193,196,195,196,194,193,196,195,194,193,196,194,194,193,193,196,196,194,193,196,195,196,196,196,196,196,194,196,194,196,194,193,196,195,194,193,196,195,196,196,196,196,193,196,196,196,196,196,194,196,196,196,196,194,193,196,196,196,194,193,196,194,193,196,195,194,193,196,195,194,193,196,195,194,193,196,195,196,196,194,197,198,199,200,0,0,0,201,201,201,201,0,0,202,202,203,0,202,201,203,204,202,201,203,204,202,202,0,202,204,202,201,203,203,204,202,201,203,204,202,202,201,203,204,202,203,0,202,202,201,203,203,204,202,201,203,204,202,202,202,202,0,202,202,202,202,202,203,202,201,203,204,202,201,203,204,205,202,203,202,202,203,202,202,202,202,204,202,202,202,0,202,0,203,202,201,203,204,202,201,203,204,0,202,201,203,204,202,201,203,204,0,206,207,0,0,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,209,208,210,0,0,0,0,0,0,211,212,213,214,211,212,213,214,212,213,212,213,215,212,213,214,212,213,214,211,212,213,214,211,212,213,214,211,212,213,214,211,211,212,213,214,211,212,213,214,211,212,213,214,211,212,213,214,211,214,211,211,212,213,211,212,213,214,211,212,213,214,211,212,213,214,211,212,213,214,0,0,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,217,218,218,219,219,219,219,219,219,219,219,219,218,0,0,0,0,0,0,219,220,221,220,221,218,219,217,220,221,218,219,217,220,221,218,219,217,220,221,218,219,217,220,221,218,217,217,220,221,218,219,217,220,221,218,219,217,220,221,222,218,219,217,220,221,218,219,217,220,218,219,219,217,220,221,218,218,218,219,217,220,220,221,218,218,222,220,218,219,217,220,221,218,219,217,220,221,218,217,220,218,217,220,222,222,220,218,219,217,220,221,219,221,218,219,217,220,221,218,219,217,220,221,218,219,217,220,221,218,219,217,220,221,223,224,225,0,226,0,227,227,0,0,227,226,0,0,0,226,228,228,228,228,228,228,228,228,229,230,228,226,227,229,230,228,226,227,228,229,230,228,226,227,229,230,228,226,227,226,227,228,229,230,226,227,229,230,228,226,227,229,230,228,226,227,228,228,228,229,230,228,226,227,228,228,226,227,228,228,228,229,230,228,226,227,229,230,228,226,227,226,227,226,227,228,229,230,228,226,227,229,230,228,226,227,228,228,228,228,228,226,227,228,228,228,226,229,230,228,226,227,229,230,228,226,227,229,230,228,226,227,229,230,228,226,227,228,228,229,230,228,226,227],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["u8",15]],[[]],[[],["f32",15]],[[],["usize",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["vec",3,[["u5",3],["global",3]]]]]],[[],["keychainkind",4]],[[],["feerate",3]],[[],["localutxo",3]],[[],["weightedutxo",3]],[[],["utxo",4]],[[],["transactiondetails",3]],[[],["blocktime",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[]],[[],["transactiondetails",3]],[[],["blocktime",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["keychainkind",4]],["bool",15]],[[["feerate",3]],["bool",15]],[[["localutxo",3]],["bool",15]],[[["weightedutxo",3]],["bool",15]],[[["utxo",4]],["bool",15]],[[["transactiondetails",3]],["bool",15]],[[["blocktime",3]],["bool",15]],null,[[["usize",15]],["u64",15]],[[["usize",15]],["u64",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],null,[[["error",3]]],[[]],[[["error",4]]],[[["error",4]]],[[["compactfilterserror",4]]],[[["policyerror",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["keyerror",4]],["error",4]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["signererror",4]]],[[["addressvalidatorerror",4]]],[[["esploraerror",4]]],[[["psbtparseerror",4]]],[[["error",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["f32",15]]],[[["f32",15]]],[[["u64",15],["usize",15]],["feerate",3]],[[["u64",15],["usize",15]],["feerate",3]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],null,null,null,[[["feerate",3]],["bool",15]],[[["localutxo",3]],["bool",15]],[[["weightedutxo",3]],["bool",15]],[[["utxo",4]],["bool",15]],[[["transactiondetails",3]],["bool",15]],[[["blocktime",3]],["bool",15]],[[["option",4,[["u32",15]]],["option",4,[["u64",15]]]],["option",4]],[[],["outpoint",3]],null,[[["feerate",3]],["option",4,[["ordering",4]]]],null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["feerate",3]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["txout",3]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[],["usize",15]],[[],["str",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",4]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[["str",15],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[["wallet",3],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[],["capability",4]],[[],["noopprogress",3]],[[],["logprogress",3]],[[]],[[]],[[]],null,[[],["noopprogress",3]],[[],["logprogress",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["capability",4]],["bool",15]],null,[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[],["result",4,[["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["u64",15]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[],["logprogress",3]],[[],["noopprogress",3]],[[]],[[["wallet",3],["option",4,[["u32",15]]],["syncoptions",3]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["anyblockchainconfig",4]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["anyblockchainconfig",4]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["compactfiltersblockchain",3]]],[[["esplorablockchain",3]]],[[["electrumblockchain",3]]],[[]],[[["electrumblockchainconfig",3]]],[[["esplorablockchainconfig",3]]],[[["compactfiltersblockchainconfig",3]]],[[]],[[],["result",4,[["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["anyblockchainconfig",4]],["bool",15]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["transaction",3]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["bitcoinpeerconfig",3]],[[],["compactfiltersblockchainconfig",3]],[[]],[[]],[[["tosocketaddrs",8],["arc",3,[["mempool",3]]],["network",4]],["result",4,[["compactfilterserror",4]]]],[[["totargetaddr",8],["tosocketaddrs",8],["option",4],["arc",3,[["mempool",3]]],["network",4]],["result",4,[["compactfilterserror",4]]]],[[],["mempool",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["bitcoinpeerconfig",3]],["bool",15]],[[["compactfiltersblockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[["error",3]]],[[["error",3]]],[[["error",4]]],[[]],[[["error",4]]],[[["systemtimeerror",3]]],[[],["result",4,[["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[],["arc",3,[["mempool",3]]]],[[],["network",4]],[[["inventory",4]],["option",4,[["transaction",3]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["versionmessage",3]],[[["txid",3]],["bool",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["vec",3,[["transaction",3]]]],[[["bitcoinpeerconfig",3]],["bool",15]],[[["compactfiltersblockchainconfig",3]],["bool",15]],null,[[]],[[["vec",3,[["peer",3]]],["asref",8,[["path",3]]],["option",4,[["usize",15]]]],["result",4,[["compactfilterserror",4]]]],null,[[["str",15],["option",4,[["duration",3]]]],["result",4,[["option",4,[["networkmessage",4]]],["compactfilterserror",4]]]],[[["networkmessage",4]],["result",4,[["compactfilterserror",4]]]],[[],["result",4]],[[],["result",4]],null,null,null,null,[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["electrumblockchainconfig",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["electrumblockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[]],[[["client",3]]],[[]],[[],["result",4,[["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["electrumblockchainconfig",3]],["bool",15]],null,[[],["result",4]],null,null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["esplorablockchainconfig",3]],[[]],null,[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["esplorablockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["error",4]]],[[["error",3]]],[[["transport",3]]],[[["error",4]]],[[["parseinterror",3]]],[[["error",4]]],[[]],[[]],[[],["result",4,[["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[["esplorablockchainconfig",3]],["bool",15]],[[["str",15],["usize",15]]],[[["string",3],["usize",15]]],null,[[],["result",4]],null,null,[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["agent",3]]],[[["u8",15]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],null,[[]],[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["synctime",3]],[[]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],null,[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],null,[[["string",3]]],null,[[],["result",4]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["memorydatabase",3]]],[[]],[[["sqlitedatabase",3]]],[[["tree",3]]],[[]],[[]],[[]],[[["sqlitedbconfiguration",3]]],[[["sleddbconfiguration",3]]],[[]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[],["memorydatabase",3]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["network",4]],["result",4,[["address",3],["error",4]]]],[[["u32",15],["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[],["scriptcontextenum",4]],[[],["scriptcontextenum",4]],[[],["terminal",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["vec",3,[["miniscript",3],["global",3]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],null,[[],["wildcard",4]],[[],["descriptorxkey",3]],[[],["descriptor",4]],[[],["legacy",4]],[[],["segwitv0",4]],[[],["miniscript",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["wildcard",4]],["ordering",4]],[[["descriptorxkey",3]],["ordering",4]],[[["descriptor",4]],["ordering",4]],[[["legacy",4]],["ordering",4]],[[["segwitv0",4]],["ordering",4]],[[["miniscript",3]],["ordering",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["u32",15]],["descriptor",4,[["descriptorpublickey",4]]]],null,[[],["descriptortype",4]],[[],["option",4,[["descriptorsecretkey",4]]]],[[],["result",4,[["descriptor",4]]]],[[],["result",4,[["miniscript",3]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["script",3]],[[["wildcard",4]],["bool",15]],[[["descriptorxkey",3]],["bool",15]],[[["descriptor",4]],["bool",15]],[[["legacy",4]],["bool",15]],[[["segwitv0",4]],["bool",15]],[[["miniscript",3]],["bool",15]],null,[[],["script",3]],null,[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["descriptorerror",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["terminal",4]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15]],["result",4,[["descriptor",4],["error",4]]]],[[["str",15]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15]],["result",4,[["miniscript",3],["error",4]]]],[[["tree",3]],["result",4,[["descriptor",4],["error",4]]]],[[["tree",3]],["result",4,[["miniscript",3],["error",4]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["vec",3,[["global",3]]]],[[],["vec",3,[["pkpkh",4],["global",3]]]],[[],["vec",3,[["global",3]]]],[[["usize",15]],["option",4,[["miniscript",3]]]],[[["usize",15]],["option",4]],[[["usize",15]],["option",4,[["pkpkh",4]]]],[[["usize",15]],["option",4]],[[],["result",4,[["error",4]]]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["secp256k1",3]],["signerid",4]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["terminal",4]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],[[],["bool",15]],[[],["bool",15]],[[],["iter",3]],[[],["pkiter",3]],[[],["pkpkhiter",3]],[[],["pkhiter",3]],[[],["result",4,[["policy",4],["error",4]]]],[[],["result",4,[["policy",4],["error",4]]]],[[],["result",4,[["lifterror",4]]]],[[["secp256k1",3]],["option",4,[["derivationpath",3]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["result",4,[["usize",15],["error",4]]]],[[["descriptorxkey",3]],["bool",15]],[[["descriptor",4]],["bool",15]],[[["miniscript",3,[["barectx",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["descriptor",4]],[[],["descriptor",4]],[[["miniscript",3,[["legacy",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["result",4,[["descriptor",4],["error",4]]]],[[["miniscript",3,[["segwitv0",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["result",4,[["descriptor",4],["error",4]]]],[[["miniscript",3,[["segwitv0",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],null,null,[[["miniscript",3]],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["miniscript",3,[["publickey",3]]],["error",4]]]],[[["secp256k1",3],["str",15]],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["miniscript",3,[["publickey",3]]],["error",4]]]],[[["wildcard",4]],["option",4,[["ordering",4]]]],[[["descriptorxkey",3]],["option",4,[["ordering",4]]]],[[["descriptor",4]],["option",4,[["ordering",4]]]],[[["legacy",4]],["option",4,[["ordering",4]]]],[[["segwitv0",4]],["option",4,[["ordering",4]]]],[[["miniscript",3]],["option",4,[["ordering",4]]]],null,[[],["bool",15]],[[],["result",4,[["error",4]]]],[[],["result",4,[["analysiserror",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["script",3]],[[],["script",3]],[[],["usize",15]],[[],["result",4]],[[],["result",4]],[[["partiallysignedtransaction",3],["option",4,[["usize",15]]],["secp256k1",3]],["result",4,[["signererror",4]]]],[[],["bool",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[["hashmap",3]],["string",3]],[[["miniscript",3]],["result",4,[["error",4]]]],[[["miniscript",3]],["result",4,[["error",4]]]],[[],["result",4,[["descriptor",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["script",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["bool",15]],null,null,null,null,null,null,null,null,[[["str",15]],["result",4,[["string",3],["descriptorerror",4]]]],null,null,[[["u32",15],["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[]],[[]],[[],["deriveddescriptorkey",3]],[[]],[[],["ordering",4]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[],["u64",15]],[[]],[[],["hash",3]],[[],["usize",15]],[[]],[[],["bool",15]],[[["descriptorpublickey",4],["secp256k1",3]],["deriveddescriptorkey",3]],[[],["option",4,[["ordering",4]]]],[[],["usize",15]],[[]],[[]],[[],["publickey",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["keyerror",4]],["error",4]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["policyerror",4]]],[[["error",4]]],[[["error",4]]],[[],["usize",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["pkorf",3]],[[],["satisfiableitem",4]],[[],["satisfaction",4]],[[],["policy",3]],[[],["condition",3]],[[],["buildsatisfaction",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[["condition",3]],["ordering",4]],null,null,[[],["pkorf",3]],[[],["condition",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["condition",3]],["bool",15]],[[["policyerror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["bool",15]]],[[["satisfiableitem",4]]],[[]],[[]],[[]],[[]],[[["btreemap",3]],["result",4,[["condition",3],["policyerror",4]]]],[[],["u64",15]],[[]],[[],["string",3]],null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,[[["condition",3]],["bool",15]],[[["policyerror",4]],["bool",15]],[[["condition",3]],["option",4,[["ordering",4]]]],[[],["bool",15]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["validnetworks",6]],[[],["scriptcontextenum",4]],[[["secp256k1",3]],["result",4,[["descriptorpublickey",4],["descriptorkeyparseerror",3]]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["generatedkey",3]],[[],["sortedmultivec",3]],[[],["descriptorpublickey",4]],[[],["descriptorsinglepub",3]],[[],["scriptcontextenum",4]],[[],["privatekeygenerateoptions",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["sortedmultivec",3]],["ordering",4]],[[["descriptorpublickey",4]],["ordering",4]],[[["descriptorsinglepub",3]],["ordering",4]],null,[[]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["u32",15]],["descriptorpublickey",4]],[[["secp256k1",3]],["result",4,[["publickey",3],["conversionerror",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["script",3]],[[["sortedmultivec",3]],["bool",15]],[[["descriptorpublickey",4]],["bool",15]],[[["descriptorsinglepub",3]],["bool",15]],[[["scriptcontextenum",4]],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[],["bool",15]],[[["extendedpubkey",3]]],[[["extendedprivkey",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["error",4]]],[[["error",4]]],[[["descriptorpublickey",4],["validnetworks",6]]],[[["descriptorsecretkey",4],["validnetworks",6]]],[[["str",15]],["result",4,[["descriptorpublickey",4]]]],[[["str",15]],["result",4,[["descriptorsecretkey",4]]]],[[["tree",3]],["result",4,[["sortedmultivec",3],["error",4]]]],[[],["derivationpath",3]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["bool",15]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[]],[[["network",4]],["option",4,[["extendedprivkey",3]]]],[[["network",4],["secp256k1",3]],["extendedpubkey",3]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,[[],["result",4,[["policy",4],["error",4]]]],[[],["validnetworks",6]],[[],["fingerprint",3]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[],["usize",15]],[[],["usize",15]],[[["validnetworks",6],["validnetworks",6]],["validnetworks",6]],[[["sortedmultivec",3]],["bool",15]],[[["descriptorpublickey",4]],["bool",15]],[[["descriptorsinglepub",3]],["bool",15]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["sortedmultivec",3],["error",4]]]],null,null,[[["miniscript",3]],["result",4,[["error",4]]]],[[["validnetworks",6]]],[[["sortedmultivec",3]],["option",4,[["ordering",4]]]],[[["descriptorpublickey",4]],["option",4,[["ordering",4]]]],[[["descriptorsinglepub",3]],["option",4,[["ordering",4]]]],null,[[],["result",4,[["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["usize",15]],[[],["terminal",4]],[[],["validnetworks",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["descriptorpublickey",4]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[["miniscript",3]],["result",4,[["error",4]]]],[[["miniscript",3]],["result",4,[["error",4]]]],[[],["result",4,[["sortedmultivec",3]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["language",4]],[[],["error",4]],[[],["mnemonic",3]],[[]],[[]],[[]],[[["language",4]],["ordering",4]],[[["mnemonic",3]],["ordering",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["mnemonic",3]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["language",4]],["bool",15]],[[["error",4]],["bool",15]],[[["mnemonic",3]],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[]],[[]],[[],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["result",4,[["mnemonic",3],["error",4]]]],[[["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4],["usize",15]],["result",4,[["mnemonic",3],["error",4]]]],[[],["result",4,[["generatedkey",3]]]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["language",4]],[[],["result",4,[["language",4],["error",4]]]],[[["error",4]],["bool",15]],[[["mnemonic",3]],["bool",15]],[[],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4],["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["option",4,[["ordering",4]]]],[[["mnemonic",3]],["option",4,[["ordering",4]]]],[[],["result",4]],[[],["vec",3,[["u8",15],["global",3]]]],[[]],[[]],[[]],[[]],[[]],[[["str",15]]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[]],[[["str",15]]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[["arc",3,[["addressvalidator",8]]]]],[[["keychainkind",4],["signerordering",3],["arc",3,[["signer",8]]]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["txid",3]],["result",4,[["txbuilder",3,[["defaultcoinselectionalgorithm",6],["bumpfee",3]]],["error",4]]]],[[],["txbuilder",3,[["defaultcoinselectionalgorithm",6],["createtx",3]]]],null,[[]],[[],["syncoptions",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["keychainkind",4]],["string",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["u32",15]],["result",4,[["bool",15],["error",4]]]],[[["addressinfo",3]],["bool",15]],null,[[["psbt",3],["signoptions",3]],["result",4,[["bool",15],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["addressindex",4]],["result",4,[["addressinfo",3],["error",4]]]],[[]],[[],["result",4,[["u64",15],["error",4]]]],[[["keychainkind",4]],["extendeddescriptor",6]],[[["str",15]]],[[["addressindex",4]],["result",4,[["addressinfo",3],["error",4]]]],[[["localutxo",3],["option",4,[["sighashtype",4]]],["bool",15]],["result",4,[["input",3],["error",4]]]],[[["keychainkind",4]],["arc",3,[["signerscontainer",3]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[["script",3]],["bool",15]],[[["script",3]],["result",4,[["bool",15],["error",4]]]],null,[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[["addressinfo",3]],["bool",15]],[[],["network",4]],[[["intowalletdescriptor",8],["option",4,[["intowalletdescriptor",8]]],["network",4]],["result",4,[["error",4]]]],[[["intowalletdescriptor",8],["option",4,[["intowalletdescriptor",8]]],["network",4]],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],null,[[["keychainkind",4]],["result",4,[["option",4,[["extendeddescriptor",6]]],["error",4]]]],[[],["secp256k1",3]],[[["psbt",3],["signoptions",3]],["result",4,[["bool",15],["error",4]]]],null,[[["syncoptions",3]],["result",4,[["error",4]]]],null,[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[["option",4],["network",4],["secp256k1",3]],["result",4,[["string",3],["error",4]]]],null,null,null,null,null,null,null,null,null,[[]],[[]],[[],["addressvalidatorerror",4]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["addressvalidatorerror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[],["usize",15]],[[]],[[["addressvalidatorerror",4]],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["keychainkind",4],["hdkeypaths",6],["script",3]],["result",4,[["addressvalidatorerror",4]]]],[[]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["largestfirstcoinselection",3]],[[],["oldestfirstcoinselection",3]],[[]],[[]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["u64",15]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["u64",15]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["u64",15]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["u64",15]],["result",4,[["coinselectionresult",3],["error",4]]]],[[],["largestfirstcoinselection",3]],[[],["oldestfirstcoinselection",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[["u64",15]]],null,[[],["u64",15]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[],["option",4,[["string",3]]]],[[["usize",15]]],[[["usize",15]]],[[],["string",3]],[[],["result",4]],[[["usize",15]]],[[["wallet",3],["str",15],["bool",15]],["result",4,[["str",15]]]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],["result",4]],[[],["usize",15]],[[]],null,[[],["result",4]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["signerid",4],["signerordering",3],["arc",3,[["signer",8]]]],["option",4,[["arc",3,[["signer",8]]]]]],null,[[["secp256k1",3]],["keymap",6]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["signerid",4]],[[],["signererror",4]],[[],["signerordering",3]],[[],["signerscontainer",3]],[[],["signoptions",3]],[[]],[[]],[[]],[[]],[[]],[[["signerid",4]],["ordering",4]],[[["signerordering",3]],["ordering",4]],[[]],[[],["signerscontainer",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["signerid",4]],["bool",15]],[[["signererror",4]],["bool",15]],[[["signerordering",3]],["bool",15]],[[["signerid",4]],["option",4,[["arc",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["hash",3]],["signerid",4]],[[["fingerprint",3]],["signerid",4]],[[]],[[]],[[]],[[["keymap",6]],["signerscontainer",3]],[[]],[[],["u64",15]],[[]],[[["secp256k1",3]],["signerid",4]],[[],["vec",3,[["signerid",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[["signerid",4]],["bool",15]],[[["signerordering",3]],["bool",15]],[[]],[[["signerid",4]],["option",4,[["ordering",4]]]],[[["signerordering",3]],["option",4,[["ordering",4]]]],[[["signerid",4],["signerordering",3]],["option",4,[["arc",3,[["signer",8]]]]]],[[["partiallysignedtransaction",3],["option",4,[["usize",15]]],["secp256k1",3]],["result",4,[["signererror",4]]]],[[],["bool",15]],[[],["vec",3,[["arc",3]]]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[],["u64",15]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[["outpoint",3],["input",3],["usize",15]],["result",4,[["error",4]]]],[[]],[[["script",3],["u64",15]]],[[["outpoint",3]]],[[["outpoint",3]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["changespendpolicy",4]]],[[],["createtx",3]],[[],["bumpfee",3]],[[]],[[],["txordering",4]],[[],["changespendpolicy",4]],[[]],[[]],[[]],[[]],[[]],[[["txordering",4]],["ordering",4]],[[["changespendpolicy",4]],["ordering",4]],[[["coinselectionalgorithm",8]],["txbuilder",3,[["coinselectionalgorithm",8]]]],[[],["createtx",3]],[[],["bumpfee",3]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["script",3]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["u32",15]]],[[["txordering",4]],["bool",15]],[[["changespendpolicy",4]],["bool",15]],[[["u64",15]]],[[["feerate",3]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["u32",15]]],[[]],[[]],[[["txordering",4]]],[[["txordering",4]],["option",4,[["ordering",4]]]],[[["changespendpolicy",4]],["option",4,[["ordering",4]]]],[[["btreemap",3,[["string",3],["vec",3,[["usize",15]]]]],["keychainkind",4]]],[[["vec",3]]],[[["sighashtype",4]]],[[["transaction",3]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["vec",3,[["outpoint",3]]]]],[[["i32",15]]],[[]],[[]],[[]],[[]],[[]]],"p":[[4,"Error"],[4,"KeychainKind"],[4,"Utxo"],[3,"FeeRate"],[3,"LocalUtxo"],[3,"WeightedUtxo"],[3,"TransactionDetails"],[3,"BlockTime"],[6,"MnemonicWithPassphrase"],[6,"DescriptorTemplateOut"],[6,"ExtendedDescriptor"],[8,"Vbytes"],[13,"InvalidU32Bytes"],[13,"Generic"],[13,"OutputBelowDustLimit"],[13,"MissingKeyOrigin"],[13,"Key"],[13,"SpendingPolicyRequired"],[13,"InvalidPolicyPathError"],[13,"Signer"],[13,"InvalidProgressValue"],[13,"InvalidOutpoint"],[13,"Descriptor"],[13,"AddressValidator"],[13,"Encode"],[13,"Miniscript"],[13,"Bip32"],[13,"Secp256k1"],[13,"Json"],[13,"Hex"],[13,"Psbt"],[13,"PsbtParse"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Sled"],[13,"Rusqlite"],[13,"InsufficientFunds"],[13,"InvalidNetwork"],[13,"FeeRateTooLow"],[13,"FeeTooLow"],[13,"Local"],[13,"Foreign"],[4,"Capability"],[8,"ConfigurableBlockchain"],[8,"BlockchainFactory"],[3,"NoopProgress"],[3,"LogProgress"],[8,"Blockchain"],[8,"GetHeight"],[8,"GetTx"],[8,"Progress"],[8,"WalletSync"],[4,"AnyBlockchain"],[4,"AnyBlockchainConfig"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[4,"CompactFiltersError"],[3,"Mempool"],[3,"BitcoinPeerConfig"],[3,"Peer"],[3,"CompactFiltersBlockchain"],[3,"CompactFiltersBlockchainConfig"],[13,"Db"],[13,"Io"],[13,"Bip158"],[13,"Time"],[13,"Global"],[3,"ElectrumBlockchain"],[3,"ElectrumBlockchainConfig"],[4,"EsploraError"],[3,"EsploraBlockchainConfig"],[3,"EsploraBlockchain"],[13,"Ureq"],[13,"UreqTransport"],[13,"HttpResponse"],[13,"Io"],[13,"Parsing"],[13,"BitcoinEncoding"],[13,"Hex"],[13,"TransactionNotFound"],[13,"HeaderHeightNotFound"],[13,"HeaderHashNotFound"],[8,"BatchDatabase"],[8,"ConfigurableDatabase"],[3,"SqliteDatabase"],[3,"SyncTime"],[8,"Database"],[8,"BatchOperations"],[4,"AnyBatch"],[4,"AnyDatabase"],[4,"AnyDatabaseConfig"],[3,"SledDbConfiguration"],[3,"SqliteDbConfiguration"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[3,"MemoryDatabase"],[4,"Descriptor"],[4,"Wildcard"],[4,"DescriptorPublicKey"],[4,"Legacy"],[4,"Segwitv0"],[3,"Miniscript"],[3,"DescriptorXKey"],[8,"ScriptContext"],[8,"ExtractPolicy"],[8,"IntoWalletDescriptor"],[13,"Bare"],[13,"Pkh"],[13,"Wpkh"],[13,"Sh"],[13,"Wsh"],[13,"SinglePub"],[13,"XPub"],[8,"AsDerived"],[3,"DerivedDescriptorKey"],[4,"Error"],[13,"Key"],[13,"Policy"],[13,"InvalidDescriptorCharacter"],[13,"Bip32"],[13,"Base58"],[13,"Pk"],[13,"Miniscript"],[13,"Hex"],[4,"SatisfiableItem"],[4,"PolicyError"],[4,"Satisfaction"],[4,"BuildSatisfaction"],[3,"PkOrF"],[3,"Policy"],[3,"Condition"],[13,"Psbt"],[13,"PsbtTimelocks"],[13,"NotEnoughItemsSelected"],[13,"IndexOutOfRange"],[13,"Complete"],[13,"Partial"],[13,"PartialComplete"],[13,"Signature"],[13,"SignatureKey"],[13,"Sha256Preimage"],[13,"Hash256Preimage"],[13,"Ripemd160Preimage"],[13,"Hash160Preimage"],[13,"Thresh"],[13,"Multisig"],[13,"AbsoluteTimelock"],[13,"RelativeTimelock"],[3,"P2Pkh"],[3,"P2Wpkh_P2Sh"],[3,"P2Wpkh"],[3,"Bip44"],[3,"Bip44Public"],[3,"Bip49"],[3,"Bip49Public"],[3,"Bip84"],[3,"Bip84Public"],[8,"DescriptorTemplate"],[4,"KeyError"],[8,"GeneratableKey"],[4,"ScriptContextEnum"],[4,"ExtendedKey"],[4,"DescriptorSecretKey"],[8,"ExtScriptContext"],[3,"GeneratedKey"],[3,"SortedMultiVec"],[3,"DescriptorSinglePub"],[3,"DescriptorSinglePriv"],[4,"DescriptorKey"],[3,"PrivateKeyGenerateOptions"],[8,"GeneratableDefaultOptions"],[8,"IntoDescriptorKey"],[8,"DerivableKey"],[13,"SinglePriv"],[13,"XPrv"],[13,"Private"],[13,"Public"],[13,"Message"],[13,"Bip32"],[13,"Miniscript"],[4,"Error"],[4,"Language"],[4,"WordCount"],[3,"Mnemonic"],[13,"BadWordCount"],[13,"UnknownWord"],[13,"BadEntropyBitCount"],[13,"AmbiguousLanguages"],[4,"AddressIndex"],[3,"Wallet"],[3,"AddressInfo"],[3,"SyncOptions"],[8,"IsDust"],[13,"Peek"],[13,"Reset"],[4,"AddressValidatorError"],[8,"AddressValidator"],[13,"Message"],[3,"CoinSelectionResult"],[3,"LargestFirstCoinSelection"],[3,"OldestFirstCoinSelection"],[3,"BranchAndBoundCoinSelection"],[8,"CoinSelectionAlgorithm"],[3,"FullyNodedExport"],[3,"SignerOrdering"],[4,"SignerId"],[4,"SignerError"],[3,"SignersContainer"],[3,"SignOptions"],[8,"Signer"],[13,"PkHash"],[13,"Fingerprint"],[13,"Dummy"],[4,"TxOrdering"],[4,"ChangeSpendPolicy"],[3,"TxBuilder"],[3,"CreateTx"],[3,"BumpFee"]]}\ +"bdk":{"doc":"A modern, lightweight, descriptor-based wallet library …","t":[13,13,3,13,13,13,13,6,13,13,13,4,13,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,4,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,13,13,4,8,3,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,0,11,11,11,11,11,11,11,11,12,11,12,12,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,11,11,11,11,11,11,11,11,12,10,5,11,11,11,11,11,11,11,11,0,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,8,8,4,16,8,3,13,13,8,8,16,3,3,8,6,8,8,0,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,0,11,0,10,11,11,11,11,11,11,10,10,11,10,10,11,11,11,11,11,11,11,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,4,4,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13,3,3,3,4,13,13,13,13,13,13,13,13,3,13,13,13,3,13,13,13,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,11,11,11,11,11,11,11,12,11,11,11,13,3,3,4,13,13,13,13,13,13,13,13,13,13,12,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,16,8,8,16,8,8,3,3,0,10,11,12,11,11,11,11,10,11,11,11,10,11,12,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,10,11,10,11,10,11,10,11,0,11,12,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,4,4,4,13,13,13,13,13,13,3,13,13,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,6,4,4,3,6,8,13,6,8,16,6,4,3,13,13,8,4,13,13,13,13,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,12,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,10,11,11,0,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,12,12,12,12,12,12,5,8,3,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,4,13,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,4,13,3,6,13,6,13,13,13,13,13,13,13,13,13,13,13,3,3,4,13,13,13,13,4,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,3,8,6,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,8,4,4,4,3,3,16,16,8,4,13,8,8,3,8,13,13,13,16,4,6,13,13,13,16,13,3,13,8,4,13,13,13,4,3,13,6,13,13,13,5,10,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,5,11,10,11,11,5,10,11,11,11,11,11,12,12,11,11,11,11,11,11,10,12,11,11,11,10,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,4,13,4,3,6,13,4,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,4,3,8,13,13,13,13,3,3,11,11,12,0,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,12,11,11,11,11,11,11,11,11,10,11,12,11,11,11,11,11,11,11,12,11,11,11,0,11,0,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,5,12,12,8,4,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,12,3,8,3,6,3,3,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,6,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,8,4,4,3,3,13,11,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,5,13,3,13,13,4,3,13,13,3,8,4,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["AddressValidator","Bip32","BlockTime","BnBNoExactMatch","BnBTotalTriesExceeded","ChecksumMismatch","CompactFilters","ConfirmationTime","Descriptor","Electrum","Encode","Error","Esplora","External","FeeRate","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","Foreign","Generic","Hex","InsufficientFunds","Internal","InvalidNetwork","InvalidOutpoint","InvalidPolicyPathError","InvalidProgressValue","InvalidU32Bytes","IrreplaceableTransaction","Json","Key","KeychainKind","Local","LocalUtxo","Miniscript","MissingKeyOrigin","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","ProgressUpdateError","Psbt","PsbtParse","Rusqlite","ScriptDoesntHaveAddressForm","Secp256k1","Signer","Sled","SpendingPolicyRequired","TransactionConfirmed","TransactionDetails","TransactionNotFound","UnknownUtxo","Utxo","Vbytes","WeightedUtxo","as_byte","as_ref","as_sat_vb","base32_len","blockchain","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_base32","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","confirmation_time","database","default","default","default","default_min_relay_fee","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor","descriptor","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","eq","fee","fee_vb","fee_wu","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fragment","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_btc_per_kvb","from_sat_per_vb","from_vb","from_wu","get_hash","get_hash","hash","hash","height","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into_descriptor_key","into_extended_key","into_wallet_descriptor","into_wallet_descriptor","is_spent","keychain","keys","ne","ne","ne","ne","ne","ne","new","outpoint","outpoint","partial_cmp","received","satisfaction_weight","sent","serialize","serialize","serialize","serialize","sub","timestamp","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","transaction","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","txid","txout","txout","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","utxo","vbytes","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet","write_base32","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","available","found","needed","requested","required","required","0","outpoint","psbt_input","AccurateFees","Blockchain","BlockchainFactory","Capability","Config","ConfigurableBlockchain","EsploraBlockchain","FullHistory","GetAnyTx","GetHeight","GetTx","Inner","LogProgress","NoopProgress","Progress","ProgressData","StatelessBlockchain","WalletSync","any","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","build","build_for_wallet","clone","clone","clone","clone_into","clone_into","clone_into","compact_filters","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","electrum","eq","esplora","estimate_fee","fmt","fmt","fmt","from","from","from","from_config","get_capabilities","get_hash","get_height","get_tx","hash","init","init","init","into","into","into","log_progress","noop_progress","progress","sync_wallet","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update","update","update","vzip","vzip","vzip","wallet_setup","wallet_sync","AnyBlockchain","AnyBlockchainConfig","CompactFilters","CompactFilters","Electrum","Electrum","Esplora","Esplora","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from","from","from","from","from","from_config","get_capabilities","get_height","get_tx","init","init","into","into","ne","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","wallet_setup","wallet_sync","0","0","0","0","0","0","Bip158","BitcoinPeerConfig","CompactFiltersBlockchain","CompactFiltersBlockchainConfig","CompactFiltersError","DataCorruption","Db","Global","InvalidFilter","InvalidFilterHeader","InvalidHeaders","InvalidResponse","Io","Mempool","MissingBlock","NoPeers","NotConnected","Peer","PeerBloomDisabled","Time","Timeout","add_tx","address","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone","clone_into","clone_into","connect","connect_proxy","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","drop","drop","eq","eq","estimate_fee","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from_config","get_capabilities","get_height","get_mempool","get_network","get_tx","get_tx","get_version","has_tx","init","init","init","init","init","init","into","into","into","into","into","into","is_connected","iter_txs","ne","ne","network","new","new","peers","recv","send","serialize","serialize","skip_blocks","socks5","socks5_credentials","storage_dir","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","wallet_setup","0","0","0","0","0","ElectrumBlockchain","ElectrumBlockchainConfig","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from_config","get_capabilities","get_height","get_tx","init","init","into","into","ne","retry","serialize","socks5","stop_gap","timeout","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","url","vzip","vzip","wallet_setup","BitcoinEncoding","EsploraBlockchain","EsploraBlockchainConfig","EsploraError","HeaderHashNotFound","HeaderHeightNotFound","Hex","HttpResponse","Io","NoHeader","Parsing","TransactionNotFound","Ureq","UreqTransport","base_url","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone_into","concurrency","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","eq","estimate_fee","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_config","get_capabilities","get_height","get_tx","init","init","init","into","into","into","ne","new","new","proxy","serialize","stop_gap","timeout","to_owned","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","wallet_setup","with_agent","with_concurrency","0","0","0","0","0","0","0","0","0","0","Batch","BatchDatabase","BatchOperations","Config","ConfigurableDatabase","Database","SqliteDatabase","SyncTime","any","begin_batch","begin_batch","block_time","borrow","borrow","borrow_mut","borrow_mut","check_descriptor_checksum","check_descriptor_checksum","clone","clone_into","commit_batch","commit_batch","connection","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","flush","flush","fmt","fmt","from","from","from_config","from_config","get_last_index","get_last_index","get_path_from_script_pubkey","get_path_from_script_pubkey","get_raw_tx","get_raw_tx","get_script_pubkey_from_path","get_script_pubkey_from_path","get_sync_time","get_sync_time","get_tx","get_tx","get_utxo","get_utxo","increment_last_index","increment_last_index","init","init","into","into","iter_raw_txs","iter_raw_txs","iter_script_pubkeys","iter_script_pubkeys","iter_txs","iter_txs","iter_utxos","iter_utxos","memory","new","path","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","AnyBatch","AnyDatabase","AnyDatabaseConfig","Memory","Memory","Memory","Sled","Sled","Sled","SledDbConfiguration","Sqlite","Sqlite","Sqlite","SqliteDbConfiguration","begin_batch","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_descriptor_checksum","commit_batch","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","flush","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","init","init","init","init","into","into","into","into","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","path","path","serialize","serialize","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","tree_name","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","0","0","MemoryDatabase","begin_batch","borrow","borrow_mut","check_descriptor_checksum","commit_batch","default","del_last_index","del_path_from_script_pubkey","del_raw_tx","del_script_pubkey_from_path","del_sync_time","del_tx","del_utxo","deref","deref_mut","drop","flush","fmt","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","new","set_last_index","set_raw_tx","set_script_pubkey","set_sync_time","set_tx","set_utxo","try_from","try_into","type_id","vzip","Bare","DerivedDescriptor","Descriptor","DescriptorPublicKey","DescriptorXKey","ExtendedDescriptor","ExtractPolicy","Hardened","HdKeyPaths","IntoWalletDescriptor","Key","KeyMap","Legacy","Miniscript","None","Pkh","ScriptContext","Segwitv0","Sh","SinglePub","Tr","Unhardened","Wildcard","Wpkh","Wsh","XPub","address","as_derived","as_derived_fixed","as_enum","as_enum","as_inner","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","check_global_consensus_validity","check_global_consensus_validity","check_global_consensus_validity","check_global_policy_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_policy_validity","check_local_policy_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derivation_path","derive","derived","derived_descriptor","desc_type","descriptor_secret_key","deserialize","deserialize","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","eq","eq","error","explicit_script","ext","extract_policy","extract_policy","extract_policy","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from_ast","from_str","from_str","from_str_insane","from_tree","from_tree","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_leaf_pk","get_leaf_pk_pkh","get_leaf_pkh","get_nth_child","get_nth_pk","get_nth_pk_pkh","get_nth_pkh","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","hash","hash","hash","hash","hash","hash","id","init","init","init","init","init","init","into","into","into","into","into","into","into_inner","into_pre_taproot_desc","into_wallet_descriptor","is_deriveable","is_non_malleable","iter","iter_pk","iter_pk_pkh","iter_pkh","lift","lift","lift_check","matches","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","name_str","name_str","name_str","ne","ne","new_bare","new_pk","new_pkh","new_sh","new_sh_sortedmulti","new_sh_with_wpkh","new_sh_with_wsh","new_sh_wpkh","new_sh_wsh","new_sh_wsh_sortedmulti","new_tr","new_wpkh","new_wsh","new_wsh_sortedmulti","node","origin","other_top_level_checks","parse","parse_descriptor","parse_insane","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","sign","sign_whole_tx","template","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string_with_secret","top_level_checks","top_level_type_check","translate_pk","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","vzip","vzip","wildcard","within_resource_limits","xkey","0","0","0","0","0","0","0","0","get_checksum","AsDerived","DerivedDescriptorKey","as_derived","as_derived_fixed","borrow","borrow_mut","clone","clone_into","cmp","deref","deref","deref_mut","drop","eq","fmt","fmt","from","get_hash","hash","hash_to_hash160","init","into","is_uncompressed","new","partial_cmp","to_owned","to_pubkeyhash","to_public_key","to_string","to_x_only_pubkey","try_from","try_into","type_id","vzip","Base58","Bip32","DuplicatedKeys","Error","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","Pk","Policy","borrow","borrow_mut","deref","deref_mut","drop","fmt","fmt","from","from","from","from","from","from","from","from","init","into","to_string","try_from","try_into","type_id","vzip","0","0","0","0","0","0","0","0","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","FoldedConditionMap","Hash160Preimage","Hash256Preimage","IncompatibleConditions","IndexOutOfRange","MixedTimelockUnits","Multisig","None","None","NotEnoughItemsSelected","Partial","PartialComplete","PkOrF","Policy","PolicyError","Psbt","PsbtTimelocks","RelativeTimelock","Ripemd160Preimage","Satisfaction","SatisfiableItem","SchnorrSignature","Sha256Preimage","Thresh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","contribution","csv","default","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","get_hash","hash","id","id","init","init","init","init","init","init","init","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","ne","ne","partial_cmp","requires_path","satisfaction","serialize","serialize","serialize","serialize","serialize","timelock","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","current_height","input_max_height","psbt","0","0","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","0","0","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","0","0","0","0","0","0","0","0","0","1","1","1","1","1","1","2","2","2","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2Wpkh","P2Wpkh_P2Sh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","build","build","build","build","build","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","from","from","from","from","from","from","from","from","from","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","DescriptorSinglePriv","DescriptorSinglePub","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","as_public","bip39","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derive","derive_public_key","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","generate","generate_default","generate_with_entropy","generate_with_entropy_default","get_hash","get_hash","get_hash","get_hash","has_secret","hash","hash","hash","hash","init","init","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","into","into","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","name_str","ne","ne","ne","ne","new","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","sanity_check","satisfy","script_size","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_pubkeyhash","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","0","0","0","0","AmbiguousLanguages","BadEntropyBitCount","BadWordCount","English","Error","InvalidChecksum","Language","Mnemonic","MnemonicWithPassphrase","UnknownWord","WordCount","Words12","Words15","Words18","Words21","Words24","all","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","drop","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_entropy","from_entropy_in","from_str","generate_in_with","generate_with_entropy","get_hash","get_hash","hash","hash","init","init","init","init","into","into","into","into","into_descriptor_key","into_extended_key","language","language_of","ne","ne","parse","parse_in","parse_in_normalized","parse_normalized","partial_cmp","partial_cmp","serialize","to_entropy","to_entropy_array","to_owned","to_owned","to_owned","to_seed","to_seed_normalized","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","word_count","word_iter","words_by_prefix","0","0","0","0","AddressIndex","AddressInfo","IsDust","LastUnused","New","Peek","Reset","SyncOptions","Wallet","add_address_validator","add_signer","address","address_validator","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","coin_selection","database","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_checksum","drop","drop","drop","drop","ensure_addresses_cached","eq","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","get_address","get_address_validators","get_balance","get_descriptor_for_keychain","get_funded_wallet","get_internal_address","get_psbt_input","get_signers","get_tx","get_utxo","index","init","init","init","init","into","into","into","into","is_dust","is_mine","keychain","list_transactions","list_unspent","ne","network","new","new_offline","policies","progress","public_descriptor","secp_ctx","sign","signer","sync","time","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","tx_builder","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","0","0","AddressValidator","AddressValidatorError","ConnectionError","InvalidScript","Message","TimeoutError","UserRejected","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","fmt","fmt","from","init","into","ne","to_owned","to_string","try_from","try_into","type_id","validate","vzip","0","BranchAndBoundCoinSelection","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","LargestFirstCoinSelection","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","default","default","default","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fee_amount","fmt","fmt","fmt","fmt","from","from","from","from","init","init","init","init","into","into","into","into","local_selected_amount","new","selected","selected_amount","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","FullyNodedExport","WalletExport","blockheight","borrow","borrow_mut","change_descriptor","deref","deref_mut","descriptor","deserialize","drop","export_wallet","fmt","from","from_str","init","into","label","serialize","to_string","try_from","try_into","type_id","vzip","0","Dummy","Fingerprint","InputIndexOutOfRange","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","MissingHdKeypath","MissingKey","MissingNonWitnessUtxo","MissingWitnessScript","MissingWitnessUtxo","NonStandardSighash","PkHash","SighashError","SignOptions","Signer","SignerError","SignerId","SignerOrdering","SignersContainer","UserCanceled","add_external","allow_all_sighashes","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_secret_key","drop","drop","drop","drop","drop","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_hash","hash","id","ids","init","init","init","init","init","into","into","into","into","into","ne","ne","ne","new","partial_cmp","partial_cmp","remove","sign","sign_whole_tx","signers","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","0","0","0","0","get_timestamp","Bip69Lexicographic","BumpFee","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","CreateTx","OnlyChange","Shuffle","TxBuilder","TxBuilderContext","TxOrdering","Untouched","add_data","add_foreign_utxo","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_shrinking","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_policy","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","coin_selection","default","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","do_not_spend_change","drain_to","drain_wallet","drop","drop","drop","drop","drop","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_hash","get_hash","hash","hash","include_output_redeem_witness_script","init","init","init","init","init","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unspendable","version","vzip","vzip","vzip","vzip","vzip"],"q":["bdk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Utxo","","","bdk::blockchain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any::AnyBlockchain","","","bdk::blockchain::any::AnyBlockchainConfig","","","bdk::blockchain::compact_filters","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::compact_filters::CompactFiltersError","","","","","bdk::blockchain::electrum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora::EsploraError","","","","","","","","","","bdk::database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any::AnyBatch","","","bdk::database::any::AnyDatabase","","","bdk::database::any::AnyDatabaseConfig","","","bdk::database::memory","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::Descriptor","","","","","","bdk::descriptor::DescriptorPublicKey","","bdk::descriptor::checksum","bdk::descriptor::derived","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::error::Error","","","","","","","","bdk::descriptor::policy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy::BuildSatisfaction","","","","bdk::descriptor::policy::PolicyError","","bdk::descriptor::policy::Satisfaction","","","","","","","","","","","bdk::descriptor::policy::SatisfiableItem","","","","","","","","","","","","bdk::descriptor::template","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::DescriptorPublicKey","","bdk::keys::DescriptorSecretKey","","bdk::keys::ExtendedKey","","bdk::keys::KeyError","","","bdk::keys::SinglePubKey","","bdk::keys::bip39","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::bip39::Error","","","","bdk::wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::AddressIndex","","bdk::wallet::address_validator","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::address_validator::AddressValidatorError","bdk::wallet::coin_selection","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::export","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer::SignerError","bdk::wallet::signer::SignerId","","","bdk::wallet::time","bdk::wallet::tx_builder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Error that can be returned to fail the validation of an …","BIP32 error","Block height and timestamp of a block","Branch and bound coin selection tries to avoid needing a …","Branch and bound coin selection possible attempts with …","Descriptor checksum mismatch","Compact filters client error)","DEPRECATED: Confirmation time of a transaction","Error related to the parsing and usage of descriptors","Electrum client error","Encoding error","Errors that can be thrown by the Wallet","Esplora client error","External","Fee rate","When bumping a tx the fee rate requested is lower than …","Node doesn’t have data to estimate a fee rate","When bumping a tx the absolute fee requested is lower than …","A UTXO owned by another wallet.","Generic error","Hex decoding error","Wallet’s UTXO set is not enough to cover recipient’s …","Internal, usually used for change outputs","Invalid network","Requested outpoint doesn’t exist in the tx (vout greater …","Error while extracting and manipulating policies","Progress value must be between 0.0 (included) and 100.0 …","Wrong number of bytes found when trying to convert to u32","Trying to replace a tx that has a sequence >= 0xFFFFFFFE","Error serializing or deserializing JSON data","Error while working with keys","Types of keychains","A UTXO owned by the local wallet.","An unspent output owned by a Wallet.","Miniscript error","In order to use the TxBuilder::add_global_xpubs option …","Cannot build a tx without recipients","manually_selected_only option is selected but no utxo has …","Output created is under the dust limit, 546 satoshis","Progress update error (maybe the channel has been closed)","Partially signed bitcoin transaction error","Partially signed bitcoin transaction parse error","Rusqlite client error","This error is thrown when trying to convert Bare and …","An ECDSA error","Signing error","Sled database error","Spending policy is not compatible with this KeychainKind","Happens when trying to bump a transaction that is already …","A wallet transaction","Thrown when a tx is not found in the internal database","Happens when trying to spend an UTXO that is not in the …","An unspent transaction output (UTXO).","Trait implemented by types that can be used to measure …","A Utxo with its satisfaction_weight.","Return KeychainKind as a byte","","Return the value as satoshi/vbyte","","Blockchain backends","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If the transaction is confirmed, contains height and …","Database types","","","","Create a new FeeRate with the default min relay fee value","","","","","","","","","","","","","","","","","Descriptors","Macro to write full descriptors with code","","","","","","","","","","","","","","","","","","","","Fee value (sats) if available. The availability of the fee …","Calculate absolute fee in Satoshis using size in virtual …","Calculate absolute fee in Satoshis using size in weight …","","","","","","","","","","Macro to write descriptor fragments with code","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new instance of FeeRate given a float fee rate in …","Create a new instance of FeeRate given a float fee rate in …","Calculate fee rate from fee and vbytes.","Calculate fee rate from fee and weight units (wu).","","","","","confirmation block height","","","","","","","","","","","","","","","","","","","","","Whether this UTXO is spent or not","Type of keychain","Key formats","","","","","","","Returns Some BlockTime if both height and timestamp are …","Get the location of the UTXO","Reference to a transaction output","","Received value (sats)","The weight of the witness data and scriptSig expressed in …","Sent value (sats)","","","","","","confirmation block timestamp","","","","","","","","","Optional transaction","","","","","","","","","","","","","","","","","Transaction id","Get the TxOut of the UTXO","Transaction output","","","","","","","","","The UTXO","Convert weight units to virtual bytes.","Get the version of BDK at runtime","","","","","","","","","Wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","Sats available for spending","found network, for example the network of the bitcoin node","Sats needed for some transaction","requested network, for example what is given as bdk-cli …","Required fee rate (satoshi/vbyte)","Required fee absolute value (satoshi)","","The location of the output.","The information about the input we require to add it to a …","Can compute accurate fees for the transactions found …","Trait that defines the actions that must be supported by a …","Trait for a factory of blockchains that share the …","Capabilities that can be supported by a Blockchain backend","Type that contains the configuration","Trait for Blockchain types that can be created given a …","Structure that implements the logic to sync with Esplora","Can recover the full history of a wallet and not only the …","Can fetch any historical transaction given its txid","Trait for getting the current height of the blockchain.","Trait for getting a transaction by txid","The type returned when building a blockchain from this …","Type that implements Progress and logs at level INFO every …","Type that implements Progress and drops every update …","Trait for types that can receive and process progress …","Data sent with a progress update over a channel","Trait for blockchains that don’t contain any state","Trait for blockchains that can sync by updating the …","Runtime-checked blockchain types","","","","","","","Broadcast a transaction","Build a new blockchain for the given descriptor wallet_name","Build a new blockchain for a given wallet","","","","","","","Compact Filters","","","","","","","","","","","","Electrum","","Esplora","Estimate the fee rate required to confirm a transaction in …","","","","","","","Create a new instance given a configuration","Return the set of Capability supported by this backend","","Return the current height","Fetch a transaction given its txid","","","","","","","","Create a new instance of LogProgress","Create a new instance of NoopProgress","Shortcut to create a channel (pair of Sender and Receiver) …","Use BlockchainFactory::build_for_wallet to get a …","","","","","","","","","","","","","Send a new progress update","","","","","","Setup the backend and populate the internal database for …","If not overridden, it defaults to calling …","Type that can contain any of the Blockchain types defined …","Type that can contain any of the blockchain configurations …","Compact filters client","Compact filters client","Electrum client","Electrum client","Esplora client","Esplora client","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Invalid BIP158 filter","Data to connect to a Bitcoin P2P peer","Structure implementing the required blockchain traits","Configuration for a CompactFiltersBlockchain","An error that can occur during sync with a …","The data stored in the block filters storage are corrupted","Internal database error","Wrapper for crate::error::Error","The compact filter returned is invalid","The compact filter headers returned are invalid","The headers returned are invalid","A peer sent an invalid or unexpected response","Internal I/O error","Container for unconfirmed, but valid Bitcoin transactions","The peer is missing a block in the valid chain","No peers have been specified","A peer is not connected","A Bitcoin peer","The peer doesn’t advertise the BLOOM service flag","Internal system time error","A peer took too long to reply to one of our messages","Add a transaction to the mempool","Peer address such as 127.0.0.1:18333","","","","","","","","","","","","","","","","","","Connect to a peer over a plaintext TCP connection","Connect to a peer through a SOCKS5 proxy, optionally by …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the mempool used by this peer","Return the Bitcoin Network in use","Look-up a transaction in the mempool given an Inventory …","","Return the VersionMessage sent by the peer","Return whether or not the mempool contains a transaction …","","","","","","","","","","","","","Return whether or not the peer is still connected","Return the list of transactions contained in the mempool","","","Network used","Create a new empty mempool","Construct a new instance given a list of peers, a path to …","List of peers to try to connect to for asking headers and …","Waits for a specific incoming Bitcoin message, optionally …","Send a raw Bitcoin message to the peer","","","Optionally skip initial skip_blocks blocks (default: 0)","Optional socks5 proxy","Optional socks5 proxy credentials","Storage dir to save partially downloaded headers and full …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrapper over an Electrum Client that implements the …","Configuration for an ElectrumBlockchain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Request retry count","","URL of the socks5 proxy server or a Tor service","Stop searching addresses for transactions after finding an …","Request timeout (seconds)","","","","","","","","URL of the Electrum server (such as ElectrumX, Esplora, …","","","","Invalid Bitcoin data returned","Structure that implements the logic to sync with Esplora","Configuration for an EsploraBlockchain","Errors that can happen during a sync with EsploraBlockchain","Header hash not found","Header height not found","Invalid Hex data returned","HTTP response error","IO error during ureq response read","No header found in ureq response","Invalid number returned","Transaction not found","Error during ureq HTTP request","Transport error during the ureq HTTP call","Base URL of the esplora service","","","","","","","","","","Number of parallel requests sent to the esplora service …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new instance of the client from a base URL and …","create a config with default values given the base url and …","Optional URL of the proxy to use to make requests to the …","","Stop searching addresses for transactions after finding an …","Socket timeout.","","","","","","","","","","","","","","","","Set the inner ureq agent.","Set the number of parallel requests the client can make.","","","","","","","","","","","Container for the operations","Trait for a database that supports batch operations","Trait for operations that can be batched","Type that contains the configuration","Trait for Database types that can be created given a …","Trait for reading data from a database","Sqlite database stored on filesystem","Blockchain state at the time of syncing","Runtime-checked database types","Create a new batch container","","Block timestamp and height at the time of sync","","","","","Read and checks the descriptor checksum for a given …","","","","Consume and apply a batch of operations","","A rusqlite connection object to the sqlite database","Delete the last derivation index for a keychain.","","Delete the data related to a specific script_pubkey, …","","Delete a raw transaction given its Txid","","Delete a script_pubkey given the keychain and its child …","","Reset the sync time to None","","Delete the metadata of a transaction and optionally the …","","Delete a LocalUtxo given its OutPoint","","","","","","","","","Force changes to be written to disk","","","","","","Create a new instance given a configuration","","Return the last derivation index for a keychain.","","Fetch the keychain and child number of a given …","","Fetch a raw transaction given its Txid","","Fetch a script_pubkey given the child number of a keychain.","","Return the sync time, if present","","Fetch the transaction metadata and optionally also the raw …","","Fetch a LocalUtxo given its OutPoint","","Increment the last derivation index for a keychain and …","","","","","","Return the list of raw transactions","","Return the list of script_pubkeys","","Return the list of transactions metadata","","Return the list of LocalUtxos","","In-memory ephemeral database","Instantiate a new SqliteDatabase instance by creating a …","Path on the local filesystem to store the sqlite file","","Store the last derivation index for a given keychain.","","Store a raw transaction","","Store a script_pubkey along with its keychain and child …","","Store the sync time","","Store the metadata of a transaction","","Store a LocalUtxo","","","","","","","","","","","Type that contains any of the BatchDatabase::Batch types …","Type that can contain any of the Database types defined by …","Type that can contain any of the database configurations …","In-memory ephemeral database","In-memory ephemeral database","Memory database has no config","Simple key-value embedded database based on sled","Simple key-value embedded database based on sled","Simple key-value embedded database based on sled","Configuration type for a sled::Tree database","Sqlite embedded database using rusqlite","Sqlite embedded database using rusqlite","Sqlite embedded database using rusqlite","Configuration type for a sqlite::SqliteDatabase database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Main directory of the db","Main directory of the db","","","","","","","","","","","","","","","","Name of the database tree, a separated namespace for the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","In-memory ephemeral database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new empty database","","","","","","","","","","","A raw scriptpubkey (including pay-to-pubkey) under Legacy …","Alias for a Descriptor that contains extended derived keys","Script descriptor","The MiniscriptKey corresponding to Descriptors. This can …","Instance of an extended key with origin and derivation path","Alias for a Descriptor that can contain extended keys …","Trait implemented on Descriptors to add a method to …","Unhardened wildcard, e.g. *h","Alias for the type of maps that represent derivation paths …","Trait for types which can be converted into an …","The consensus key associated with the type. Must be a …","Alias type for a map of public key to secret key","Legacy ScriptContext To be used as P2SH scripts For …","Top-level script AST type","No wildcard","Pay-to-PubKey-Hash","The ScriptContext for Miniscript. Additional type …","Segwitv0 ScriptContext","Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)","Single Public Key","Pay-to-Taproot","Unhardened wildcard, e.g. *","Whether a descriptor has a wildcard in it","Pay-to-Witness-PubKey-Hash","Pay-to-Witness-ScriptHash with Segwitv0 context","Xpub","Computes the Bitcoin address of the descriptor, if one …","","","","","Get a reference to the inner AstElem representing the root …","","","","","","","","","","","","","Enumerates all child nodes of the current AST node (self) …","Depending on script Context, some of the Terminals might …","","","Depending on script Context, some of the script resource …","","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","","","Policy rules at the Miniscript satisfaction time. It is …","","","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","","","Check whether the given satisfaction is valid under the …","","","Descriptor checksum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The derivation path","Derives all wildcard keys in the descriptor using the …","Derived descriptor keys","Derive a Descriptor with a concrete bitcoin::PublicKey at …","Get the DescriptorType of Descriptor","","","","","","","","","","Encode as a Bitcoin script","","","","","","","Descriptor errors","Computes the “witness script” of the descriptor, i.e. …","Additional information helpful for extra analysis.","Extract the spending policy","","","","","","","","","","","","","","","","","","","","","","","","","Add type information(Type and Extdata) to Miniscript based …","","","Attempt to parse an insane(scripts don’t clear sanity …","Parse an expression tree into a descriptor","Parse an expression tree into a Miniscript. As a general …","","","","","","","Returns Vec with cloned version of all public keys from …","Returns Vec of PkPkh entries, representing either public …","Returns Vec with hashes of all public keys from the …","Returns child node with given index, if any","Returns Option::Some with cloned n’th public key from …","Returns Option::Some with hash of n’th public key or …","Returns Option::Some with hash of n’th public key from …","Returns satisfying non-malleable witness and scriptSig to …","Returns a possilbly mallable satisfying non-malleable …","Whether the miniscript contains a combination of timelocks","Whether the miniscript has repeated Pk or Pkh","","","","","","","","","","","","","","","","","","","","Extracts the AstElem representing the root of the …",". Convert a Descriptor into …","Convert to wallet descriptor","Whether or not the descriptor has any wildcards","Whether the miniscript is malleable","Creates a new Iter iterator that will iterate over all …","Creates a new PkIter iterator that will iterate over all …","Creates a new PkPkhIter iterator that will iterate over …","Creates a new PkhIter iterator that will iterate over all …","","","Lifting corresponds conversion of miniscript into Policy […","Compares this key with a keysource and returns the …","Depending on script context, the size of a satifaction …","","","Maximum size, in bytes, of a satisfying witness. For …","Computes an upper bound on the weight of a satisfying …","Maximum number of witness elements used to satisfy the …","Local helper function to display error messages with …","","","","","Create a new bare descriptor from witness script Errors …","Create a new pk descriptor","Create a new PkH descriptor","Create a new sh for a given redeem script Errors when …","Create a new sh sortedmulti descriptor with threshold k …","Create a new sh wrapper for the given wpkh descriptor","Create a new sh wrapper for the given wsh descriptor","Create a new sh wrapped wpkh from Pk. Errors when …","Create a new sh wrapped wsh descriptor with witness script …","Create a new sh wrapped wsh sortedmulti descriptor from …","Create new tr descriptor Errors when miniscript exceeds …","Create a new Wpkh descriptor Will return Err if …","Create a new wsh descriptor from witness script Errors …","Create a new wsh sorted multi descriptor Errors when …","A node in the Abstract Syntax Tree(","Origin information","Other top level checks that are context specific","Attempt to parse a Script into Miniscript representation. …","Parse a descriptor that may contain secret keys","Attempt to parse an insane(scripts don’t clear sanity …","","","","","","","Get the len of public key when serialized based on context …","","","Descriptor policy","Whether all spend paths of miniscript require a signature","Whether the descriptor is safe Checks whether all the …","Check whether the underlying Miniscript is safe under the …","Attempt to produce non-malleable satisfying witness for the","Attempt to produce a malleable satisfying witness for the …","Get the scriptCode of a transaction output.","Computes the scriptpubkey of the descriptor","Size, in bytes of the script-pubkey. If this Miniscript is …","","","The type of signature required for satisfaction","","","","","Descriptor templates","","","","","","","","","Serialize a descriptor to string with its secret keys","Check top level consensus rules.","Check whether the top-level is type B","Convert a descriptor using abstract keys to one using …","This will panic if translatefpk returns an uncompressed …","","","","","","","","","","","","","The correctness and malleability type information for the …","","","","","","","Computes the scriptSig that will be in place for an …","","","","","","","Whether the descriptor is wildcard","Whether the miniscript can exceed the resource …","The extended key","","","","","","","","","Compute the checksum of a descriptor","Utilities to derive descriptors","Extended DescriptorPublicKey that has been derived","Derive a descriptor and transform all of its keys to …","Transform the keys into DerivedDescriptorKey.","","","","","","","","","","","","","","","","","","","","Construct a new derived key","","","","","","","","","","","Error during base58 decoding","BIP32 error","The descriptor contains multiple keys with the same BIP32 …","Errors related to the parsing and usage of descriptors","The descriptor contains hardened derivation steps on …","Hex decoding error","Invalid character found in the descriptor checksum","The provided descriptor doesn’t match its checksum","Invalid HD Key path, such as having a wildcard but a …","Error thrown while working with keys","Miniscript error","Key-related error","Error while extracting and manipulating policies","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Absolute timeclock timestamp","Can not add to an item that is Satisfaction::None or …","Can not add to an item that is …","Options to build the satisfaction field in the policy","Can satisfy the policy item","An extra condition that must be satisfied but that is out …","Type for a map of sets of Condition items keyed by each set…","ECDSA Signature for a raw public key","Type for a map of folded sets of Condition items keyed by …","SHA256 then RIPEMD160 preimage hash","Double SHA256 preimage hash","Incompatible conditions (not currently used)","Index out of range for an item to satisfy a …","Can not merge CSV or timelock values unless both are less …","Multi-signature public keys with threshold count","Cannot satisfy or contribute to the policy item","Don’t generate satisfaction field","Not enough items are selected to satisfy a …","Only a partial satisfaction of some kind of threshold …","Can reach the threshold of some kind of threshold policy","Raw public key or extended key fingerprint","Descriptor spending policy","Errors that can happen while extracting and manipulating …","Analyze the given PSBT to check for existing signatures","Like Psbt variant and also check for expired timelocks","Relative timelock locktime","RIPEMD160 preimage hash","Represent if and how much a policy item is satisfied by …","An item that needs to be satisfied","Schnorr Signature for a raw public key","SHA256 preimage hash","Threshold items with threshold count","","","","","","","","","","","","","","","","","","","","","","","","","","","","How the wallet’s descriptor can satisfy this policy node","Optional CheckSequenceVerify condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the conditions that are set by the spending policy …","","","Returns a unique id for the SatisfiableItem","Identifier for this policy node","","","","","","","","","","","","","","","Returns whether the SatisfiableItem is a leaf item","Returns whether the Satisfaction is a leaf item","Returns true if there are no extra conditions to verify","Type of this policy node","","","","Return whether or not a specific path in the policy tree …","How much a given PSBT already satisfies this policy node …","","","","","","Optional timelock condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Current blockchain height","The highest confirmation height between the inputs CSV …","Given PSBT","","","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","The items that can be satisfied by the descriptor or are …","The items that can be satisfied by the descriptor","Threshold","Threshold","Total number of items","Total number of items","Whether the items are sorted in lexicographic order (used …","Whether the items are sorted in lexicographic order (used …","","","The digest value","The digest value","The digest value","The digest value","The policy items","The raw public key or extended key fingerprint","The required threshold count","The required threshold count","The timestamp value","The locktime value","","","","","","","","","","","","","","","","","","","BIP44 template. Expands to pkh(key/44'/0'/0'/{0,1}/*)","BIP44 public template. Expands to pkh(key/{0,1}/*)","BIP49 template. Expands to sh(wpkh(key/49'/0'/0'/{0,1}/*))","BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))","BIP84 template. Expands to wpkh(key/84'/0'/0'/{0,1}/*)","BIP84 public template. Expands to wpkh(key/{0,1}/*)","Trait for descriptor templates that can be built into a …","Type alias for the return type of DescriptorTemplate, …","P2PKH template. Expands to a descriptor pkh(key)","P2WPKH template. Expands to a descriptor wpkh(key)","P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))","","","","","","","","","","","","","","","","","","","Build the complete descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BIP32 error","Trait for keys that can be derived.","Container for public or secret keys","The MiniscriptKey corresponding to Descriptors. This can …","A Secret Key that can be either a single key or an Xprv","A Single Descriptor Secret Key with optional origin …","A Single Descriptor Key with optional origin information","Type specifying the amount of entropy required e.g. [u8;32]","Returned error in case of failure","Trait that adds extra useful methods to ScriptContexts","Enum for extended keys that can be either xprv or xpub","FullKey (compressed or uncompressed)","Trait that allows generating a key with the default options","Trait for keys that can be generated","Output of a GeneratableKey key generation","Trait for objects that can be turned into a public or …","The key has an invalid checksum","The key is not valid for the given network","The key cannot exist in the given script context","The consensus key associated with the type. Must be a …","Errors thrown while working with keys","Alias type for a map of public key to secret key","Legacy scripts","Custom error message","Miniscript error","Extra options required by the generate_with_entropy","A private extended key, aka an xprv","Options for generating a PrivateKey","A public extended key, aka an xpub","The ScriptContext for Miniscript. Additional type …","Enum representation of the known valid ScriptContexts","Segwitv0 scripts","Single Secret Key","Single Public Key","Single public key without any origin or range information","Contents of a “sortedmulti” descriptor","Taproot scripts","Set of valid networks for a key","XOnlyPublicKey","Xprv","Xpub","Create a set containing mainnet, testnet and regtest","Returns the ScriptContext as a ScriptContextEnum","Return the public version of this key, by applying either …","BIP-0039","","","","","","","","","","","","","","","","","","","","","","","","","Depending on script Context, some of the Terminals might …","Depending on script Context, some of the script resource …","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","Policy rules at the Miniscript satisfaction time. It is …","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","Check whether the given satisfaction is valid under the …","","","","","","","","","","","","","","","","","","","Whether the generated key should be “compressed” or not","","","","","","","","","","","","","","","","","","","","","","","","","","","If this public key has a wildcard, replace it by the given …","Computes the public key corresponding to this descriptor …","","","","","","","","","","","","","Encode as a Bitcoin script","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create an instance given a public key and a set of valid …","Create an instance given a secret key and a set of valid …","","","Parse an expression tree into a SortedMultiVec","Full path, from the master key","Generate a key given the options with a random entropy","Generate a key with the default options and a random …","Generate a key given the extra options and the entropy","Generate a key with the default options and a given entropy","","","","","Return whether or not the key contains the private data","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Turn the key into a DescriptorKey within the requested …","Consume self and turn it into a DescriptorKey by adding …","","","","","","Consume self and turn it into an ExtendedKey","","","Consumes self and returns the key","Transform the ExtendedKey into an ExtendedPrivKey for the …","Transform the ExtendedKey into an ExtendedPubKey for the …","Whether or not the key has a wildcards","Returns whether the script context is Legacy","Returns whether the script context is …","Returns whether the script context is Segwitv0","Returns whether the script context is …","Returns whether the script context is Tap, aka Taproot or …","Returns whether the script context is …","","","signatures required","The key","The key","","Create a set only containing mainnet","The fingerprint of the master key associated with this …","Depending on script context, the size of a satifaction …","Maximum size, in bytes, of a satisfying witness. In …","Maximum number of witness elements used to satisfy the …","Compute the intersection of two sets","Local helper function to display error messages with …","","","","","Create a new instance of SortedMultiVec given a list of …","Origin information","Origin information","Other top level checks that are context specific","Override the computed set of valid networks","","","","","Get the len of public key when serialized based on context …","public keys inside sorted Multi","utility function to sanity a sorted multi vec","Attempt to produce a satisfying witness for the witness …","Size, in bytes of the script-pubkey. If this Miniscript is …","The type of signature required for satisfaction","Create Terminal::Multi containing sorted pubkeys","Create a set containing testnet and regtest","","","","","","","","","","","","","Check top level consensus rules.","Check whether the top-level is type B","This will panic if translatefpk returns an uncompressed …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The mnemonic can be interpreted as multiple languages. Use …","Entropy was not a multiple of 32 bits or between 128-256n …","Mnemonic has a word count that is not a multiple of 6.","The English language.","A BIP39 error.","The mnemonic has an invalid checksum.","Language to be used for the mnemonic phrase.","A mnemonic code.","Type for a BIP39 mnemonic with an optional passphrase","Mnemonic contains an unknown word. Error contains the …","Type describing entropy length (aka word count) in the …","12 words mnemonic (128 bits entropy)","15 words mnemonic (160 bits entropy)","18 words mnemonic (192 bits entropy)","21 words mnemonic (224 bits entropy)","24 words mnemonic (256 bits entropy)","The list of supported languages. Language support is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new English Mnemonic from the given entropy. …","Create a new Mnemonic in the specified language from the …","","Generate a new Mnemonic in the given language with the …","","","","","","","","","","","","","","","","Get the language of the Mnemonic.","Determine the language of the mnemonic.","","","Parse a mnemonic and detect the language from the enabled …","Parse a mnemonic in the given language.","Parse a mnemonic in normalized UTF8 in the given language.","Parse a mnemonic in normalized UTF8.","","","","Convert the mnemonic back to the entropy used to generate …","Convert the mnemonic back to the entropy used to generate …","","","","Convert to seed bytes.","Convert to seed bytes with a passphrase in normalized UTF8.","","","","","","","","","","","","","","","","","","","","Get the number of words in the mnemonic.","Get an iterator over the words.","Get words from the word list that start with the given …","","","","","The address index selection strategy to use to derived an …","A derived address and the index it was found at For …","Trait to check if a value is below the dust limit. We are …","Return the address for the current descriptor index if it …","Return a new address after incrementing the current …","Return the address for a specific descriptor index. Does …","Return the address for a specific descriptor index and …","Options to a sync.","A Bitcoin wallet","Add an address validator","Add an external signer","Address","Address validation callbacks","","","","","","","","","Bump the fee of a transaction previously created with this …","Start building a transaction.","Coin selection","Return an immutable reference to the internal database","","","","","","","","","","","Return the checksum of the public descriptor associated to …","","","","","Ensures that there are at least max_addresses addresses …","","Wallet export","Try to finalize a PSBT","","","","","","","","","","Return a derived address using the external descriptor, …","Get the address validators","Return the balance, meaning the sum of this wallet’s …","Returns the descriptor used to create addresses for a …","Return a fake wallet that appears to be funded for testing.","Return a derived address using the internal (change) …","get the corresponding PSBT Input for a LocalUtxo","Get the signers","Return a single transactions made and received by the …","Returns the UTXO owned by this wallet corresponding to …","Child index of this address","","","","","","","","","Check whether or not a value is below dust limit","Return whether or not a script is part of this wallet …","Type of keychain","Return the list of transactions made and received by the …","Return the list of unspent outputs of this wallet","","Get the Bitcoin network the wallet is using.","Create a wallet.","Create a new “offline” wallet","Return the spending policies for the wallet’s descriptor","The progress tracker which may be informed when progress …","Return the “public” version of the wallet’s …","Return the secp256k1 context used for all signing …","Sign a transaction with all the wallet’s signers, in the …","Generalized signers","Sync the internal database with the blockchain","Cross-platform time","","","","","","","","","","Transaction builder","","","","","","","","","Deterministically generate a unique name given the …","","","Trait to build address validators","Errors that can be returned to fail the validation of an …","Network connection error","Invalid script","A custom error message","Network request timeout error","User rejected the address","","","","","","","","","","","","","","","","","","","","Validate or inspect an address","","","Branch and bound coin selection","Trait for generalized coin selection algorithms","Result of a successful coin selection","Default coin selection algorithm used by TxBuilder if not …","Simple and dumb coin selection","OldestFirstCoinSelection always picks the utxo with the …","","","","","","","","","","","","","Perform the coin selection","","","","","","","","","","","","","","","","","","","Total fee amount in satoshi","","","","","","","","","","","","","","","","","The total value of the inputs selected from the local …","Create new instance with target size for change output","List of outputs selected for use as inputs","The total value of the inputs selected.","","","","","","","","","","","","","","","","","","","Structure that contains the export of a wallet","Alias for FullyNodedExport","Earliest block to rescan when looking for the wallet’s …","","","Return the internal descriptor, if present","","","Return the external descriptor","","","Export a wallet","","","","","","Arbitrary label for the wallet","","","","","","","","Dummy identifier","The fingerprint of a BIP32 extended key","Input index is out of range","The private key in use has the right fingerprint but …","The non_witness_utxo specified is invalid","Invalid SIGHASH for the signing context in use","The fingerprint and derivation path are missing from the …","The private key is missing for the required public key","The non_witness_utxo field of the transaction is required …","The witness_script field of the transaction is required to …","The witness_utxo field of the transaction is required to …","The psbt contains a non-SIGHASH_ALL sighash in one of its …","Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA …","Error while computing the hash to sign","Options for a software signer","Trait for signers","Signing error","Identifier of a signer in the SignersContainers. Used as a …","Defines the order in which signers are called","Container for multiple signers","The user canceled the operation","Adds an external signer to the container for the specified …","Whether the signer should use the sighash_type set in the …","Create a map of public keys to secret keys","Whether the wallet should assume a specific height has …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the secret key for the signer","","","","","","","","","Finds the signer with lowest ordering for a given id in …","","","","","","","","","","","","","","","","","","Return the SignerId for this signer","Returns the list of identifiers of all the signers in the …","","","","","","","","","","","","","","Default constructor","","","Removes a signer from the container and returns it","Sign a PSBT","Return whether or not the signer signs the whole …","Returns the list of signers in the container, sorted by …","","","","","","","Whether the signer should trust the witness_utxo, if the …","","","","","","","","","","","","","","","","","","","","","","","","","Return the current timestamp in seconds","BIP69 / Lexicographic","Marker type to indicate the TxBuilder is being used to …","Use both change and non-change outputs (default)","Only use non-change outputs (see …","Policy regarding the use of change outputs when creating a …","Marker type to indicate the TxBuilder is being used to …","Only use change outputs (see TxBuilder::only_spend_change)","Randomized (default)","A transaction builder","Context in which the TxBuilder is valid","Ordering of the transaction’s inputs and outputs","Unchanged","Add data as an output, using OP_RETURN","Add a foreign UTXO i.e. a UTXO not owned by this wallet.","Fill-in the PSBT_GLOBAL_XPUB field with the extended keys …","Add a recipient to the internal list","Add a utxo to the internal list of unspendable utxos","Add a utxo to the internal list of utxos that must be spent","Add the list of outpoints to the internal list of UTXOs …","Explicitly tells the wallet that it is allowed to reduce …","","","","","","","","","","","Set a specific ChangeSpendPolicy. See …","","","","","","","","","","","","","Choose the coin selection algorithm","","","","","","","","","","","","","","","Do not spend change outputs","Sets the address to drain excess coins to.","Spend all the available inputs. This respects filters like …","","","","","","Enable signaling RBF","Enable signaling RBF with a specific nSequence value","","","Set an absolute fee","Set a custom fee rate","Finish the building the transaction.","","","","","","","","","","","","","","","Fill-in the psbt::Output::redeem_script and …","","","","","","","","","","","Only spend utxos added by add_utxo.","Use a specific nLockTime while creating the transaction","Only spend change outputs","Only Fill-in the psbt::Input::witness_utxo field when …","Choose the ordering for inputs and outputs of the …","","","Set the policy path to use while creating the transaction …","Replace the recipients already added with a new list","Sign with a specific sig hash","Sort transaction inputs and outputs by TxOrdering variant","","","","","","","","","","","","","","","","","","","","","Replace the internal list of unspendable utxos with a new …","Build a transaction with a specific version","","","","",""],"i":[1,1,0,1,1,1,1,0,1,1,1,0,1,2,0,1,1,1,3,1,1,1,2,1,1,1,1,1,1,1,1,0,3,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,2,2,4,2,0,1,2,4,5,6,3,7,8,1,2,4,5,6,3,7,8,2,2,4,5,6,3,7,8,2,4,5,6,3,7,8,7,0,4,7,8,4,1,2,4,5,6,3,7,8,1,2,4,5,6,3,7,8,0,0,2,5,7,8,1,2,4,5,6,3,7,8,2,4,5,6,3,7,8,7,4,4,1,1,2,4,5,6,3,7,8,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,5,6,3,7,8,4,4,4,4,2,5,2,5,8,1,2,4,5,6,3,7,8,1,2,4,5,6,3,7,8,9,9,10,11,5,5,0,4,5,6,3,7,8,8,3,5,4,7,6,7,2,5,7,8,4,8,2,4,5,6,3,7,8,1,7,1,2,4,5,6,3,7,8,1,2,4,5,6,3,7,8,7,3,5,1,2,4,5,6,3,7,8,6,12,0,1,2,4,5,6,3,7,8,0,2,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,38,39,40,41,42,43,43,44,0,0,0,45,0,0,44,44,0,0,46,0,0,0,0,0,0,0,44,47,48,44,47,48,49,46,46,44,47,48,44,47,48,0,47,48,44,47,48,44,47,48,44,47,48,0,44,0,49,44,47,48,44,47,48,45,49,44,50,51,44,44,47,48,44,47,48,0,0,0,46,44,47,48,44,47,48,44,47,48,44,47,48,52,47,48,44,47,48,53,53,0,0,54,55,54,55,54,55,54,55,54,55,54,55,55,54,55,54,55,55,54,55,55,54,55,54,54,54,54,55,55,55,55,54,54,54,54,54,55,54,55,55,55,55,54,55,54,55,54,55,54,55,54,54,56,57,58,59,60,61,62,0,0,0,0,62,62,62,62,62,62,62,62,0,62,62,62,0,62,62,62,63,64,63,65,66,64,67,62,63,65,66,64,67,62,66,64,67,64,67,65,65,63,63,65,66,64,67,62,63,65,66,64,67,62,64,67,63,65,66,64,67,62,64,67,66,63,65,66,64,67,62,62,63,65,66,64,67,62,62,62,62,62,62,66,66,66,65,65,63,66,65,63,63,65,66,64,67,62,63,65,66,64,67,62,65,63,64,67,67,63,66,67,65,65,64,67,67,64,64,67,64,67,62,63,65,66,64,67,62,63,65,66,64,67,62,63,65,66,64,67,62,63,65,66,64,67,62,66,68,69,70,71,72,0,0,73,74,73,74,73,74,74,73,74,73,74,74,73,74,74,73,74,73,73,74,73,73,73,73,73,74,73,74,74,74,74,74,74,74,74,73,74,73,74,73,74,74,73,74,73,75,0,0,0,75,75,75,75,75,75,75,75,75,75,76,77,75,76,77,75,76,77,76,76,76,77,75,76,77,75,76,76,77,75,76,76,77,77,75,75,76,77,75,75,75,75,75,75,75,76,77,77,77,77,77,75,76,77,75,76,76,77,76,76,76,76,76,76,75,77,75,76,77,75,76,77,75,76,77,75,76,77,77,77,78,79,80,81,82,83,84,85,86,87,88,0,0,89,0,0,0,0,0,88,90,91,90,91,90,91,92,90,91,91,88,90,90,93,90,93,90,93,90,93,90,93,90,93,90,93,90,90,91,90,91,91,90,91,92,90,90,91,90,91,89,90,92,90,92,90,92,90,92,90,92,90,92,90,92,90,92,90,90,91,90,91,92,90,92,90,92,90,92,90,0,90,90,91,93,90,93,90,93,90,93,90,93,90,93,90,91,90,91,90,91,90,91,90,91,0,0,0,94,95,96,94,95,96,0,94,95,96,0,95,94,95,97,98,96,94,95,97,98,96,95,95,94,95,94,95,94,95,94,95,94,95,94,95,94,95,94,95,97,98,96,94,95,97,98,96,97,98,96,94,95,97,98,96,95,95,97,98,96,94,94,94,94,95,95,95,95,97,98,96,96,96,96,95,95,95,95,95,95,95,95,95,94,95,97,98,96,94,95,97,98,96,95,95,95,95,97,98,97,98,96,94,95,94,95,94,95,94,95,94,95,94,95,97,94,95,97,98,96,94,95,97,98,96,94,95,97,98,96,94,95,97,98,96,99,100,101,102,103,104,105,106,107,0,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,109,0,0,0,0,0,0,110,0,0,111,0,0,0,110,109,0,0,109,112,109,110,0,109,109,112,109,109,109,113,114,115,110,116,109,113,114,115,110,116,109,113,114,115,115,111,113,114,111,114,111,111,113,114,111,113,114,111,111,113,114,111,113,114,0,110,116,109,113,114,115,110,116,109,113,114,115,110,116,109,113,114,115,110,116,109,113,114,115,110,116,109,113,114,115,116,109,0,109,109,116,109,115,110,116,109,113,114,115,115,110,116,109,113,114,115,0,109,115,117,109,115,110,116,109,109,113,114,115,115,109,115,110,116,109,109,109,109,109,109,109,113,114,115,115,109,115,115,109,115,110,116,109,113,114,115,115,115,115,115,115,115,115,109,109,115,115,110,116,109,113,114,115,116,110,116,109,113,114,115,110,116,109,113,114,115,115,109,118,109,115,115,115,115,115,109,115,115,116,111,113,114,115,109,115,111,113,114,116,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,115,116,111,115,109,115,110,116,109,113,114,115,111,113,114,0,115,109,115,115,115,109,109,115,109,115,111,113,114,116,116,0,110,116,109,113,114,115,109,115,109,111,111,109,115,110,116,109,113,114,115,110,116,109,113,114,115,115,110,116,109,113,114,115,109,110,116,109,113,114,115,116,115,116,119,120,121,122,123,124,125,126,0,0,0,127,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,129,129,0,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,130,131,132,133,134,135,136,137,138,139,139,0,140,0,0,138,0,138,138,139,139,139,138,140,141,139,140,140,0,0,0,141,141,138,138,0,0,138,138,138,142,138,140,143,144,139,141,142,138,140,143,144,139,141,142,138,140,143,144,141,142,138,140,143,144,141,144,143,144,142,144,142,138,140,143,144,139,141,142,138,140,143,144,139,141,142,138,140,143,144,139,141,144,139,142,138,140,143,144,139,139,141,142,138,140,140,143,143,144,139,141,143,144,144,138,143,142,138,140,143,144,139,141,142,138,140,143,144,139,141,138,140,144,143,144,139,144,143,143,142,138,140,143,144,144,142,138,140,143,144,141,139,142,138,140,143,144,139,141,142,138,140,143,144,139,141,142,138,140,143,144,139,141,142,138,140,143,144,139,141,145,146,146,146,147,148,149,150,151,150,151,150,151,150,151,150,151,152,153,154,155,156,157,158,159,159,158,160,161,162,163,164,165,166,167,168,169,170,165,166,167,168,169,170,166,168,170,0,0,0,0,0,0,0,0,0,0,0,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,171,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,162,163,164,165,166,167,168,169,170,172,0,0,0,0,0,0,173,173,0,0,174,0,0,0,0,172,172,172,111,0,0,175,172,172,173,176,0,176,0,0,175,177,112,0,0,175,0,174,177,112,0,178,177,0,176,179,180,174,112,181,182,177,183,175,184,172,176,179,180,174,112,181,182,177,183,175,184,172,111,111,111,111,111,111,111,111,179,180,174,112,181,175,184,179,180,174,112,181,175,184,180,174,112,181,184,184,176,179,179,180,174,112,181,182,177,183,175,184,172,176,179,180,174,112,181,182,177,183,175,184,172,112,112,176,179,180,174,112,181,182,177,183,175,184,172,180,180,174,112,181,175,180,180,174,112,112,181,182,177,177,183,175,184,172,172,180,176,176,176,179,180,174,112,181,182,177,183,175,184,172,172,172,183,183,112,177,180,112,173,185,173,185,180,174,112,181,176,180,174,112,181,176,179,180,174,112,181,182,177,183,175,184,172,176,179,180,174,112,181,182,177,183,175,184,172,186,187,179,179,112,177,183,187,176,179,179,176,176,112,178,175,178,175,178,175,112,112,180,181,182,180,0,112,111,180,180,0,111,180,174,112,181,180,181,182,111,183,180,174,112,181,111,180,180,180,180,111,180,0,179,180,174,112,181,175,184,112,180,112,177,172,111,111,180,176,179,180,174,112,181,182,177,183,175,184,172,176,179,180,174,112,181,182,177,183,175,184,172,176,179,180,174,112,181,182,177,183,175,184,172,176,179,180,174,112,181,182,177,183,175,184,172,125,126,188,189,190,191,192,193,194,195,196,197,197,197,198,0,197,0,0,0,197,0,199,199,199,199,199,198,198,197,200,199,198,197,200,199,198,197,200,198,197,200,198,200,198,197,200,199,198,197,200,199,200,198,197,200,199,198,197,200,198,198,197,197,200,200,198,197,200,199,200,200,200,200,200,198,200,198,200,198,197,200,199,198,197,200,199,200,200,200,200,197,200,200,200,200,200,198,200,200,200,200,198,197,200,200,200,198,197,200,198,197,200,199,198,197,200,199,198,197,200,199,198,197,200,199,200,200,198,201,202,203,204,0,0,0,205,205,205,205,0,0,206,206,207,0,206,205,207,208,206,205,207,208,206,206,0,206,208,206,205,207,207,208,206,205,207,208,206,206,205,207,208,206,207,0,206,206,205,207,207,208,206,205,207,208,206,206,206,206,0,206,206,206,206,206,207,206,205,207,208,206,205,207,208,209,206,207,206,206,207,206,206,206,206,208,206,206,206,0,206,0,207,206,205,207,208,206,205,207,208,0,206,205,207,208,206,205,207,208,0,210,211,0,0,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,213,212,214,0,0,0,0,0,0,215,216,217,218,215,216,217,218,216,217,216,217,219,216,217,218,216,217,218,215,216,217,218,215,216,217,218,215,216,217,218,215,215,216,217,218,215,216,217,218,215,216,217,218,215,216,217,218,215,218,215,215,216,217,215,216,217,218,215,216,217,218,215,216,217,218,215,216,217,218,0,0,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,221,222,222,223,223,223,223,223,223,223,223,223,223,222,223,0,0,0,0,0,0,223,224,225,224,225,222,223,221,224,225,222,223,221,224,225,222,223,221,224,225,222,223,221,224,225,222,221,221,224,225,222,223,221,224,225,222,223,221,224,225,226,222,223,221,224,225,222,223,221,224,222,223,223,221,224,225,222,222,222,223,223,221,224,224,225,222,222,226,224,222,223,221,224,225,222,223,221,224,225,222,223,221,224,222,221,224,226,226,224,222,223,221,224,225,223,225,222,223,221,224,225,222,223,221,224,225,222,223,221,224,225,222,223,221,224,225,227,228,229,230,0,231,0,232,232,0,0,232,231,0,0,0,231,233,233,233,233,233,233,233,233,234,235,233,231,232,234,235,233,231,232,233,234,235,233,231,232,234,235,233,231,232,231,232,233,234,235,231,232,234,235,233,231,232,234,235,233,231,232,233,233,233,234,235,233,231,232,233,233,231,232,233,233,233,234,235,233,231,232,234,235,233,231,232,231,232,231,232,233,234,235,233,231,232,234,235,233,231,232,233,233,233,233,233,231,232,233,233,233,231,234,235,233,231,232,234,235,233,231,232,234,235,233,231,232,234,235,233,231,232,233,233,234,235,233,231,232],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["u8",15]],[[]],[[],["f32",15]],[[],["usize",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["vec",3,[["u5",3],["global",3]]]]]],[[],["keychainkind",4]],[[],["feerate",3]],[[],["localutxo",3]],[[],["weightedutxo",3]],[[],["utxo",4]],[[],["transactiondetails",3]],[[],["blocktime",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[]],[[],["transactiondetails",3]],[[],["blocktime",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["keychainkind",4]],["bool",15]],[[["feerate",3]],["bool",15]],[[["localutxo",3]],["bool",15]],[[["weightedutxo",3]],["bool",15]],[[["utxo",4]],["bool",15]],[[["transactiondetails",3]],["bool",15]],[[["blocktime",3]],["bool",15]],null,[[["usize",15]],["u64",15]],[[["usize",15]],["u64",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],null,[[["error",4]]],[[["keyerror",4]],["error",4]],[[["error",4]]],[[["psbtparseerror",4]]],[[["error",4]]],[[["error",4]]],[[["compactfilterserror",4]]],[[["esploraerror",4]]],[[]],[[["addressvalidatorerror",4]]],[[["error",4]]],[[["policyerror",4]]],[[["signererror",4]]],[[["error",4]]],[[["error",4]]],[[["error",3]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["f32",15]]],[[["f32",15]]],[[["u64",15],["usize",15]],["feerate",3]],[[["u64",15],["usize",15]],["feerate",3]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],null,null,null,[[["feerate",3]],["bool",15]],[[["localutxo",3]],["bool",15]],[[["weightedutxo",3]],["bool",15]],[[["utxo",4]],["bool",15]],[[["transactiondetails",3]],["bool",15]],[[["blocktime",3]],["bool",15]],[[["option",4,[["u32",15]]],["option",4,[["u64",15]]]],["option",4]],[[],["outpoint",3]],null,[[["feerate",3]],["option",4,[["ordering",4]]]],null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["feerate",3]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["txout",3]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[],["usize",15]],[[],["str",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",4]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[["str",15],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[["wallet",3],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[],["capability",4]],[[],["noopprogress",3]],[[],["logprogress",3]],[[]],[[]],[[]],null,[[],["noopprogress",3]],[[],["logprogress",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["capability",4]],["bool",15]],null,[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[],["result",4,[["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["u64",15]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[],["logprogress",3]],[[],["noopprogress",3]],[[]],[[["wallet",3],["option",4,[["u32",15]]],["syncoptions",3]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["anyblockchainconfig",4]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["anyblockchainconfig",4]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["compactfiltersblockchain",3]]],[[["electrumblockchain",3]]],[[["esplorablockchain",3]]],[[]],[[]],[[["compactfiltersblockchainconfig",3]]],[[["esplorablockchainconfig",3]]],[[["electrumblockchainconfig",3]]],[[],["result",4,[["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["anyblockchainconfig",4]],["bool",15]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["transaction",3]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["bitcoinpeerconfig",3]],[[],["compactfiltersblockchainconfig",3]],[[]],[[]],[[["tosocketaddrs",8],["arc",3,[["mempool",3]]],["network",4]],["result",4,[["compactfilterserror",4]]]],[[["totargetaddr",8],["tosocketaddrs",8],["option",4],["arc",3,[["mempool",3]]],["network",4]],["result",4,[["compactfilterserror",4]]]],[[],["mempool",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["bitcoinpeerconfig",3]],["bool",15]],[[["compactfiltersblockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[["error",3]]],[[["error",3]]],[[["error",4]]],[[["error",4]]],[[["systemtimeerror",3]]],[[],["result",4,[["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[],["arc",3,[["mempool",3]]]],[[],["network",4]],[[["inventory",4]],["option",4,[["transaction",3]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["versionmessage",3]],[[["txid",3]],["bool",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["vec",3,[["transaction",3]]]],[[["bitcoinpeerconfig",3]],["bool",15]],[[["compactfiltersblockchainconfig",3]],["bool",15]],null,[[]],[[["vec",3,[["peer",3]]],["asref",8,[["path",3]]],["option",4,[["usize",15]]]],["result",4,[["compactfilterserror",4]]]],null,[[["str",15],["option",4,[["duration",3]]]],["result",4,[["option",4,[["networkmessage",4]]],["compactfilterserror",4]]]],[[["networkmessage",4]],["result",4,[["compactfilterserror",4]]]],[[],["result",4]],[[],["result",4]],null,null,null,null,[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["electrumblockchainconfig",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["electrumblockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[]],[[["client",3]]],[[]],[[],["result",4,[["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["electrumblockchainconfig",3]],["bool",15]],null,[[],["result",4]],null,null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["esplorablockchainconfig",3]],[[]],null,[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["esplorablockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["error",4]]],[[["error",4]]],[[["transport",3]]],[[["error",3]]],[[["parseinterror",3]]],[[["error",4]]],[[]],[[],["result",4,[["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[["esplorablockchainconfig",3]],["bool",15]],[[["str",15],["usize",15]]],[[["string",3],["usize",15]]],null,[[],["result",4]],null,null,[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["agent",3]]],[[["u8",15]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],null,[[]],[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["synctime",3]],[[]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],null,[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],null,[[["string",3]]],null,[[],["result",4]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["sqlitedatabase",3]]],[[]],[[["memorydatabase",3]]],[[["tree",3]]],[[]],[[]],[[["sqlitedbconfiguration",3]]],[[]],[[]],[[["sleddbconfiguration",3]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[],["memorydatabase",3]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["network",4]],["result",4,[["address",3],["error",4]]]],[[["u32",15],["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[],["scriptcontextenum",4]],[[],["scriptcontextenum",4]],[[],["terminal",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["vec",3,[["miniscript",3],["global",3]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],null,[[],["wildcard",4]],[[],["descriptorxkey",3]],[[],["descriptor",4]],[[],["legacy",4]],[[],["segwitv0",4]],[[],["miniscript",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["wildcard",4]],["ordering",4]],[[["descriptorxkey",3]],["ordering",4]],[[["descriptor",4]],["ordering",4]],[[["legacy",4]],["ordering",4]],[[["segwitv0",4]],["ordering",4]],[[["miniscript",3]],["ordering",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["u32",15]],["descriptor",4,[["descriptorpublickey",4]]]],null,[[["secp256k1",3],["u32",15]],["result",4,[["descriptor",4,[["publickey",3]]],["conversionerror",4]]]],[[],["descriptortype",4]],[[],["option",4,[["descriptorsecretkey",4]]]],[[],["result",4,[["descriptor",4]]]],[[],["result",4,[["miniscript",3]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["script",3]],[[["wildcard",4]],["bool",15]],[[["descriptorxkey",3]],["bool",15]],[[["descriptor",4]],["bool",15]],[[["legacy",4]],["bool",15]],[[["segwitv0",4]],["bool",15]],[[["miniscript",3]],["bool",15]],null,[[],["result",4,[["script",3],["error",4]]]],null,[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["descriptorerror",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[["wsh",3]],["descriptor",4]],[[["sh",3]],["descriptor",4]],[[["tr",3]],["descriptor",4]],[[["bare",3]],["descriptor",4]],[[["wpkh",3]],["descriptor",4]],[[["pkh",3]],["descriptor",4]],[[]],[[]],[[]],[[["terminal",4]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15]],["result",4,[["descriptor",4],["error",4]]]],[[["str",15]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15]],["result",4,[["miniscript",3],["error",4]]]],[[["tree",3]],["result",4,[["descriptor",4],["error",4]]]],[[["tree",3]],["result",4,[["miniscript",3],["error",4]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["vec",3,[["global",3]]]],[[],["vec",3,[["pkpkh",4],["global",3]]]],[[],["vec",3,[["global",3]]]],[[["usize",15]],["option",4,[["miniscript",3]]]],[[["usize",15]],["option",4]],[[["usize",15]],["option",4,[["pkpkh",4]]]],[[["usize",15]],["option",4]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["secp256k1",3]],["signerid",4]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["terminal",4]],[[],["result",4,[["pretaprootdescriptor",4],["descriptor",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],[[],["bool",15]],[[],["bool",15]],[[],["iter",3]],[[],["pkiter",3]],[[],["pkpkhiter",3]],[[],["pkhiter",3]],[[],["result",4,[["policy",4],["error",4]]]],[[],["result",4,[["policy",4],["error",4]]]],[[],["result",4,[["lifterror",4]]]],[[["secp256k1",3]],["option",4,[["derivationpath",3]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["str",15]],[[],["str",15]],[[],["str",15]],[[["descriptorxkey",3]],["bool",15]],[[["descriptor",4]],["bool",15]],[[["miniscript",3,[["barectx",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["descriptor",4]],[[],["descriptor",4]],[[["miniscript",3,[["legacy",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],[[["wpkh",3]],["descriptor",4]],[[["wsh",3]],["descriptor",4]],[[],["result",4,[["descriptor",4],["error",4]]]],[[["miniscript",3,[["segwitv0",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],[[["option",4,[["taptree",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["result",4,[["descriptor",4],["error",4]]]],[[["miniscript",3,[["segwitv0",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],null,null,[[["miniscript",3]],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["miniscript",3],["error",4]]]],[[["secp256k1",3],["str",15]],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["miniscript",3],["error",4]]]],[[["wildcard",4]],["option",4,[["ordering",4]]]],[[["descriptorxkey",3]],["option",4,[["ordering",4]]]],[[["descriptor",4]],["option",4,[["ordering",4]]]],[[["legacy",4]],["option",4,[["ordering",4]]]],[[["segwitv0",4]],["option",4,[["ordering",4]]]],[[["miniscript",3]],["option",4,[["ordering",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],null,[[],["bool",15]],[[],["result",4,[["error",4]]]],[[],["result",4,[["analysiserror",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["result",4,[["script",3],["error",4]]]],[[],["script",3]],[[],["usize",15]],[[],["result",4]],[[],["result",4]],[[],["sigtype",4]],[[],["sigtype",4]],[[],["sigtype",4]],[[["partiallysignedtransaction",3],["option",4,[["usize",15]]],["secp256k1",3]],["result",4,[["signererror",4]]]],[[],["bool",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[["hashmap",3]],["string",3]],[[["miniscript",3]],["result",4,[["error",4]]]],[[["miniscript",3]],["result",4,[["error",4]]]],[[],["result",4,[["descriptor",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["script",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["bool",15]],null,null,null,null,null,null,null,null,null,[[["str",15]],["result",4,[["string",3],["descriptorerror",4]]]],null,null,[[["u32",15],["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[]],[[]],[[],["deriveddescriptorkey",3]],[[]],[[],["ordering",4]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[],["u64",15]],[[]],[[],["hash",3]],[[],["usize",15]],[[]],[[],["bool",15]],[[["descriptorpublickey",4],["secp256k1",3]],["deriveddescriptorkey",3]],[[],["option",4,[["ordering",4]]]],[[]],[[]],[[],["publickey",3]],[[],["string",3]],[[],["xonlypublickey",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["policyerror",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["keyerror",4]],["error",4]],[[],["usize",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["pkorf",3]],[[],["satisfiableitem",4]],[[],["satisfaction",4]],[[],["policy",3]],[[],["condition",3]],[[],["buildsatisfaction",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[["condition",3]],["ordering",4]],null,null,[[],["pkorf",3]],[[],["condition",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["condition",3]],["bool",15]],[[["policyerror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["bool",15]]],[[]],[[]],[[["satisfiableitem",4]]],[[]],[[]],[[]],[[["btreemap",3]],["result",4,[["condition",3],["policyerror",4]]]],[[],["u64",15]],[[]],[[],["string",3]],null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,[[["condition",3]],["bool",15]],[[["policyerror",4]],["bool",15]],[[["condition",3]],["option",4,[["ordering",4]]]],[[],["bool",15]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["validnetworks",6]],[[],["scriptcontextenum",4]],[[["secp256k1",3]],["result",4,[["descriptorpublickey",4],["descriptorkeyparseerror",3]]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["generatedkey",3]],[[],["sortedmultivec",3]],[[],["singlepubkey",4]],[[],["descriptorpublickey",4]],[[],["descriptorsinglepub",3]],[[],["scriptcontextenum",4]],[[],["privatekeygenerateoptions",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["sortedmultivec",3]],["ordering",4]],[[["singlepubkey",4]],["ordering",4]],[[["descriptorpublickey",4]],["ordering",4]],[[["descriptorsinglepub",3]],["ordering",4]],null,[[]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["u32",15]],["descriptorpublickey",4]],[[["secp256k1",3]],["result",4,[["publickey",3],["conversionerror",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["script",3]],[[["sortedmultivec",3]],["bool",15]],[[["singlepubkey",4]],["bool",15]],[[["descriptorpublickey",4]],["bool",15]],[[["descriptorsinglepub",3]],["bool",15]],[[["scriptcontextenum",4]],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[],["bool",15]],[[["extendedpubkey",3]]],[[]],[[["extendedprivkey",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["error",4]]],[[["error",4]]],[[["descriptorpublickey",4],["validnetworks",6]]],[[["descriptorsecretkey",4],["validnetworks",6]]],[[["str",15]],["result",4,[["descriptorpublickey",4]]]],[[["str",15]],["result",4,[["descriptorsecretkey",4]]]],[[["tree",3]],["result",4,[["sortedmultivec",3],["error",4]]]],[[],["derivationpath",3]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[]],[[["network",4]],["option",4,[["extendedprivkey",3]]]],[[["network",4],["secp256k1",3]],["extendedpubkey",3]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,[[],["result",4,[["policy",4],["error",4]]]],[[],["validnetworks",6]],[[],["fingerprint",3]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[],["usize",15]],[[],["usize",15]],[[["validnetworks",6],["validnetworks",6]],["validnetworks",6]],[[],["str",15]],[[["sortedmultivec",3]],["bool",15]],[[["singlepubkey",4]],["bool",15]],[[["descriptorpublickey",4]],["bool",15]],[[["descriptorsinglepub",3]],["bool",15]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["sortedmultivec",3],["error",4]]]],null,null,[[["miniscript",3]],["result",4,[["error",4]]]],[[["validnetworks",6]]],[[["sortedmultivec",3]],["option",4,[["ordering",4]]]],[[["singlepubkey",4]],["option",4,[["ordering",4]]]],[[["descriptorpublickey",4]],["option",4,[["ordering",4]]]],[[["descriptorsinglepub",3]],["option",4,[["ordering",4]]]],[[],["usize",15]],null,[[],["result",4,[["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["usize",15]],[[],["sigtype",4]],[[],["terminal",4]],[[],["validnetworks",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["descriptorpublickey",4]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[["miniscript",3]],["result",4,[["error",4]]]],[[["miniscript",3]],["result",4,[["error",4]]]],[[],["result",4,[["sortedmultivec",3]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["language",4]],[[],["error",4]],[[],["mnemonic",3]],[[]],[[]],[[]],[[["language",4]],["ordering",4]],[[["mnemonic",3]],["ordering",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["mnemonic",3]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["language",4]],["bool",15]],[[["error",4]],["bool",15]],[[["mnemonic",3]],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[]],[[]],[[],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["result",4,[["mnemonic",3],["error",4]]]],[[["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4],["usize",15]],["result",4,[["mnemonic",3],["error",4]]]],[[],["result",4,[["generatedkey",3]]]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["language",4]],[[],["result",4,[["language",4],["error",4]]]],[[["error",4]],["bool",15]],[[["mnemonic",3]],["bool",15]],[[],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4],["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["option",4,[["ordering",4]]]],[[["mnemonic",3]],["option",4,[["ordering",4]]]],[[],["result",4]],[[],["vec",3,[["u8",15],["global",3]]]],[[]],[[]],[[]],[[]],[[]],[[["str",15]]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[]],[[["str",15]]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[["arc",3,[["addressvalidator",8]]]]],[[["keychainkind",4],["signerordering",3],["arc",3,[["signer",8]]]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["txid",3]],["result",4,[["txbuilder",3,[["defaultcoinselectionalgorithm",6],["bumpfee",3]]],["error",4]]]],[[],["txbuilder",3,[["defaultcoinselectionalgorithm",6],["createtx",3]]]],null,[[]],[[],["syncoptions",3]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["keychainkind",4]],["string",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["u32",15]],["result",4,[["bool",15],["error",4]]]],[[["addressinfo",3]],["bool",15]],null,[[["partiallysignedtransaction",3],["signoptions",3]],["result",4,[["bool",15],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["addressindex",4]],["result",4,[["addressinfo",3],["error",4]]]],[[]],[[],["result",4,[["u64",15],["error",4]]]],[[["keychainkind",4]],["extendeddescriptor",6]],[[["str",15]]],[[["addressindex",4]],["result",4,[["addressinfo",3],["error",4]]]],[[["localutxo",3],["option",4,[["psbtsighashtype",3]]],["bool",15]],["result",4,[["input",3],["error",4]]]],[[["keychainkind",4]],["arc",3,[["signerscontainer",3]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[["script",3]],["bool",15]],[[["script",3]],["result",4,[["bool",15],["error",4]]]],null,[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[["addressinfo",3]],["bool",15]],[[],["network",4]],[[["intowalletdescriptor",8],["option",4,[["intowalletdescriptor",8]]],["network",4]],["result",4,[["error",4]]]],[[["intowalletdescriptor",8],["option",4,[["intowalletdescriptor",8]]],["network",4]],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],null,[[["keychainkind",4]],["result",4,[["option",4,[["extendeddescriptor",6]]],["error",4]]]],[[],["secp256k1",3]],[[["partiallysignedtransaction",3],["signoptions",3]],["result",4,[["bool",15],["error",4]]]],null,[[["syncoptions",3]],["result",4,[["error",4]]]],null,[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[["option",4],["network",4],["secp256k1",3]],["result",4,[["string",3],["error",4]]]],null,null,null,null,null,null,null,null,null,[[]],[[]],[[],["addressvalidatorerror",4]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["addressvalidatorerror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[],["usize",15]],[[]],[[["addressvalidatorerror",4]],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["keychainkind",4],["hdkeypaths",6],["script",3]],["result",4,[["addressvalidatorerror",4]]]],[[]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["largestfirstcoinselection",3]],[[],["oldestfirstcoinselection",3]],[[]],[[]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["u64",15]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["u64",15]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["u64",15]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["u64",15]],["result",4,[["coinselectionresult",3],["error",4]]]],[[],["largestfirstcoinselection",3]],[[],["oldestfirstcoinselection",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[["u64",15]]],null,[[],["u64",15]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[],["option",4,[["string",3]]]],[[["usize",15]]],[[["usize",15]]],[[],["string",3]],[[],["result",4]],[[["usize",15]]],[[["wallet",3],["str",15],["bool",15]],["result",4,[["str",15]]]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],["result",4]],[[],["usize",15]],[[]],null,[[],["result",4]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["signerid",4],["signerordering",3],["arc",3,[["signer",8]]]],["option",4,[["arc",3,[["signer",8]]]]]],null,[[["secp256k1",3]],["keymap",6]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["signerid",4]],[[],["signererror",4]],[[],["signerordering",3]],[[],["signerscontainer",3]],[[],["signoptions",3]],[[]],[[]],[[]],[[]],[[]],[[["signerid",4]],["ordering",4]],[[["signerordering",3]],["ordering",4]],[[]],[[],["signerscontainer",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["signerid",4]],["bool",15]],[[["signererror",4]],["bool",15]],[[["signerordering",3]],["bool",15]],[[["signerid",4]],["option",4,[["arc",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["hash",3]],["signerid",4]],[[["fingerprint",3]],["signerid",4]],[[]],[[["error",4]]],[[]],[[]],[[]],[[["keymap",6]],["signerscontainer",3]],[[]],[[],["u64",15]],[[]],[[["secp256k1",3]],["signerid",4]],[[],["vec",3,[["signerid",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[["signerid",4]],["bool",15]],[[["signererror",4]],["bool",15]],[[["signerordering",3]],["bool",15]],[[]],[[["signerid",4]],["option",4,[["ordering",4]]]],[[["signerordering",3]],["option",4,[["ordering",4]]]],[[["signerid",4],["signerordering",3]],["option",4,[["arc",3,[["signer",8]]]]]],[[["partiallysignedtransaction",3],["option",4,[["usize",15]]],["secp256k1",3]],["result",4,[["signererror",4]]]],[[],["bool",15]],[[],["vec",3,[["arc",3]]]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,[[],["u64",15]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[["outpoint",3],["input",3],["usize",15]],["result",4,[["error",4]]]],[[]],[[["script",3],["u64",15]]],[[["outpoint",3]]],[[["outpoint",3]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["changespendpolicy",4]]],[[],["createtx",3]],[[],["bumpfee",3]],[[]],[[],["txordering",4]],[[],["changespendpolicy",4]],[[]],[[]],[[]],[[]],[[]],[[["txordering",4]],["ordering",4]],[[["changespendpolicy",4]],["ordering",4]],[[["coinselectionalgorithm",8]],["txbuilder",3,[["coinselectionalgorithm",8]]]],[[],["createtx",3]],[[],["bumpfee",3]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["script",3]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["u32",15]]],[[["txordering",4]],["bool",15]],[[["changespendpolicy",4]],["bool",15]],[[["u64",15]]],[[["feerate",3]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["u32",15]]],[[]],[[]],[[["txordering",4]]],[[["txordering",4]],["option",4,[["ordering",4]]]],[[["changespendpolicy",4]],["option",4,[["ordering",4]]]],[[["btreemap",3,[["string",3],["vec",3,[["usize",15]]]]],["keychainkind",4]]],[[["vec",3]]],[[["psbtsighashtype",3]]],[[["transaction",3]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["vec",3,[["outpoint",3]]]]],[[["i32",15]]],[[]],[[]],[[]],[[]],[[]]],"p":[[4,"Error"],[4,"KeychainKind"],[4,"Utxo"],[3,"FeeRate"],[3,"LocalUtxo"],[3,"WeightedUtxo"],[3,"TransactionDetails"],[3,"BlockTime"],[6,"MnemonicWithPassphrase"],[6,"DescriptorTemplateOut"],[6,"ExtendedDescriptor"],[8,"Vbytes"],[13,"InvalidU32Bytes"],[13,"Generic"],[13,"OutputBelowDustLimit"],[13,"MissingKeyOrigin"],[13,"Key"],[13,"SpendingPolicyRequired"],[13,"InvalidPolicyPathError"],[13,"Signer"],[13,"InvalidProgressValue"],[13,"InvalidOutpoint"],[13,"Descriptor"],[13,"AddressValidator"],[13,"Encode"],[13,"Miniscript"],[13,"Bip32"],[13,"Secp256k1"],[13,"Json"],[13,"Hex"],[13,"Psbt"],[13,"PsbtParse"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Sled"],[13,"Rusqlite"],[13,"InsufficientFunds"],[13,"InvalidNetwork"],[13,"FeeRateTooLow"],[13,"FeeTooLow"],[13,"Local"],[13,"Foreign"],[4,"Capability"],[8,"ConfigurableBlockchain"],[8,"BlockchainFactory"],[3,"NoopProgress"],[3,"LogProgress"],[8,"Blockchain"],[8,"GetHeight"],[8,"GetTx"],[8,"Progress"],[8,"WalletSync"],[4,"AnyBlockchain"],[4,"AnyBlockchainConfig"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[4,"CompactFiltersError"],[3,"Mempool"],[3,"BitcoinPeerConfig"],[3,"Peer"],[3,"CompactFiltersBlockchain"],[3,"CompactFiltersBlockchainConfig"],[13,"Db"],[13,"Io"],[13,"Bip158"],[13,"Time"],[13,"Global"],[3,"ElectrumBlockchain"],[3,"ElectrumBlockchainConfig"],[4,"EsploraError"],[3,"EsploraBlockchainConfig"],[3,"EsploraBlockchain"],[13,"Ureq"],[13,"UreqTransport"],[13,"HttpResponse"],[13,"Io"],[13,"Parsing"],[13,"BitcoinEncoding"],[13,"Hex"],[13,"TransactionNotFound"],[13,"HeaderHeightNotFound"],[13,"HeaderHashNotFound"],[8,"BatchDatabase"],[8,"ConfigurableDatabase"],[3,"SqliteDatabase"],[3,"SyncTime"],[8,"Database"],[8,"BatchOperations"],[4,"AnyBatch"],[4,"AnyDatabase"],[4,"AnyDatabaseConfig"],[3,"SledDbConfiguration"],[3,"SqliteDbConfiguration"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[3,"MemoryDatabase"],[4,"Descriptor"],[4,"Wildcard"],[8,"ScriptContext"],[4,"DescriptorPublicKey"],[4,"Legacy"],[4,"Segwitv0"],[3,"Miniscript"],[3,"DescriptorXKey"],[8,"ExtractPolicy"],[8,"IntoWalletDescriptor"],[13,"Bare"],[13,"Pkh"],[13,"Wpkh"],[13,"Sh"],[13,"Wsh"],[13,"Tr"],[13,"SinglePub"],[13,"XPub"],[8,"AsDerived"],[3,"DerivedDescriptorKey"],[4,"Error"],[13,"Key"],[13,"Policy"],[13,"InvalidDescriptorCharacter"],[13,"Bip32"],[13,"Base58"],[13,"Pk"],[13,"Miniscript"],[13,"Hex"],[4,"SatisfiableItem"],[4,"PolicyError"],[4,"Satisfaction"],[4,"BuildSatisfaction"],[3,"PkOrF"],[3,"Policy"],[3,"Condition"],[13,"Psbt"],[13,"PsbtTimelocks"],[13,"NotEnoughItemsSelected"],[13,"IndexOutOfRange"],[13,"Complete"],[13,"Partial"],[13,"PartialComplete"],[13,"EcdsaSignature"],[13,"SchnorrSignature"],[13,"Sha256Preimage"],[13,"Hash256Preimage"],[13,"Ripemd160Preimage"],[13,"Hash160Preimage"],[13,"Thresh"],[13,"Multisig"],[13,"AbsoluteTimelock"],[13,"RelativeTimelock"],[3,"P2Pkh"],[3,"P2Wpkh_P2Sh"],[3,"P2Wpkh"],[3,"Bip44"],[3,"Bip44Public"],[3,"Bip49"],[3,"Bip49Public"],[3,"Bip84"],[3,"Bip84Public"],[8,"DescriptorTemplate"],[4,"KeyError"],[8,"GeneratableKey"],[4,"SinglePubKey"],[4,"ScriptContextEnum"],[4,"ExtendedKey"],[4,"DescriptorSecretKey"],[8,"ExtScriptContext"],[3,"GeneratedKey"],[3,"SortedMultiVec"],[3,"DescriptorSinglePub"],[3,"DescriptorSinglePriv"],[4,"DescriptorKey"],[3,"PrivateKeyGenerateOptions"],[8,"GeneratableDefaultOptions"],[8,"IntoDescriptorKey"],[8,"DerivableKey"],[13,"SinglePriv"],[13,"XPrv"],[13,"Private"],[13,"Public"],[13,"Message"],[13,"Bip32"],[13,"Miniscript"],[13,"FullKey"],[13,"XOnly"],[4,"Error"],[4,"Language"],[4,"WordCount"],[3,"Mnemonic"],[13,"BadWordCount"],[13,"UnknownWord"],[13,"BadEntropyBitCount"],[13,"AmbiguousLanguages"],[4,"AddressIndex"],[3,"Wallet"],[3,"AddressInfo"],[3,"SyncOptions"],[8,"IsDust"],[13,"Peek"],[13,"Reset"],[4,"AddressValidatorError"],[8,"AddressValidator"],[13,"Message"],[3,"CoinSelectionResult"],[3,"LargestFirstCoinSelection"],[3,"OldestFirstCoinSelection"],[3,"BranchAndBoundCoinSelection"],[8,"CoinSelectionAlgorithm"],[3,"FullyNodedExport"],[3,"SignerOrdering"],[4,"SignerId"],[4,"SignerError"],[3,"SignersContainer"],[3,"SignOptions"],[8,"Signer"],[13,"SighashError"],[13,"PkHash"],[13,"Fingerprint"],[13,"Dummy"],[4,"TxOrdering"],[4,"ChangeSpendPolicy"],[3,"TxBuilder"],[3,"CreateTx"],[3,"BumpFee"]]}\ }'); if (window.initSearch) {window.initSearch(searchIndex)}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/peer.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/peer.rs.html index e164163927..b35d5f9c78 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/peer.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/peer.rs.html @@ -577,6 +577,7 @@ 570 571 572 +573
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -589,6 +590,7 @@
 // licenses.
 
 use std::collections::HashMap;
+use std::io::BufReader;
 use std::net::{TcpStream, ToSocketAddrs};
 use std::sync::{Arc, Condvar, Mutex, RwLock};
 use std::thread;
@@ -598,14 +600,13 @@
 
 use rand::{thread_rng, Rng};
 
-use bitcoin::consensus::Encodable;
+use bitcoin::consensus::{Decodable, Encodable};
 use bitcoin::hash_types::BlockHash;
 use bitcoin::network::constants::ServiceFlags;
 use bitcoin::network::message::{NetworkMessage, RawNetworkMessage};
 use bitcoin::network::message_blockdata::*;
 use bitcoin::network::message_filter::*;
 use bitcoin::network::message_network::VersionMessage;
-use bitcoin::network::stream_reader::StreamReader;
 use bitcoin::network::Address;
 use bitcoin::{Block, Network, Transaction, Txid, Wtxid};
 
@@ -906,9 +907,10 @@
             };
         }
 
-        let mut reader = StreamReader::new(connection, None);
+        let mut reader = BufReader::new(connection);
         loop {
-            let raw_message: RawNetworkMessage = check_disconnect!(reader.read_next());
+            let raw_message: RawNetworkMessage =
+                check_disconnect!(Decodable::consensus_decode(&mut reader));
 
             let in_message = if raw_message.magic != network.magic() {
                 continue;
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/api.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/api.rs.html
index fd95608587..cf46c4ecba 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/api.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/api.rs.html
@@ -126,7 +126,7 @@
 //!
 //! see: <https://github.com/Blockstream/esplora/blob/master/API.md>
 use crate::BlockTime;
-use bitcoin::{OutPoint, Script, Transaction, TxIn, TxOut, Txid};
+use bitcoin::{OutPoint, Script, Transaction, TxIn, TxOut, Txid, Witness};
 
 #[derive(serde::Deserialize, Clone, Debug)]
 pub struct PrevOut {
@@ -187,7 +187,7 @@
                     },
                     script_sig: vin.scriptsig,
                     sequence: vin.sequence,
-                    witness: vin.witness,
+                    witness: Witness::from_vec(vin.witness),
                 })
                 .collect(),
             output: self
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/derived.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/derived.rs.html
index 4674ab839d..da5799a0ae 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/derived.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/derived.rs.html
@@ -192,6 +192,29 @@
 185
 186
 187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -246,10 +269,10 @@
 use std::ops::Deref;
 
 use bitcoin::hashes::hash160;
-use bitcoin::PublicKey;
+use bitcoin::{PublicKey, XOnlyPublicKey};
 
-use miniscript::{descriptor::Wildcard, Descriptor, DescriptorPublicKey};
-use miniscript::{MiniscriptKey, ToPublicKey, TranslatePk};
+use miniscript::descriptor::{DescriptorSinglePub, SinglePubKey, Wildcard};
+use miniscript::{Descriptor, DescriptorPublicKey, MiniscriptKey, ToPublicKey, TranslatePk};
 
 use crate::wallet::utils::SecpCtx;
 
@@ -322,21 +345,44 @@
     fn is_uncompressed(&self) -> bool {
         self.0.is_uncompressed()
     }
-    fn serialized_len(&self) -> usize {
-        self.0.serialized_len()
-    }
 }
 
 impl<'s> ToPublicKey for DerivedDescriptorKey<'s> {
     fn to_public_key(&self) -> PublicKey {
         match &self.0 {
-            DescriptorPublicKey::SinglePub(ref spub) => spub.key.to_public_key(),
-            DescriptorPublicKey::XPub(ref xpub) => {
+            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
+                key: SinglePubKey::XOnly(_),
+                ..
+            }) => panic!("Found x-only public key in non-tr descriptor"),
+            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
+                key: SinglePubKey::FullKey(ref pk),
+                ..
+            }) => *pk,
+            DescriptorPublicKey::XPub(ref xpub) => PublicKey::new(
+                xpub.xkey
+                    .derive_pub(self.1, &xpub.derivation_path)
+                    .expect("Shouldn't fail, only normal derivations")
+                    .public_key,
+            ),
+        }
+    }
+
+    fn to_x_only_pubkey(&self) -> XOnlyPublicKey {
+        match &self.0 {
+            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
+                key: SinglePubKey::XOnly(ref pk),
+                ..
+            }) => *pk,
+            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
+                key: SinglePubKey::FullKey(ref pk),
+                ..
+            }) => XOnlyPublicKey::from(pk.inner),
+            DescriptorPublicKey::XPub(ref xpub) => XOnlyPublicKey::from(
                 xpub.xkey
                     .derive_pub(self.1, &xpub.derivation_path)
                     .expect("Shouldn't fail, only normal derivations")
-                    .public_key
-            }
+                    .public_key,
+            ),
         }
     }
 
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/dsl.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/dsl.rs.html
index 6c8fb3c1be..0b4bb89aba 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/dsl.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/dsl.rs.html
@@ -1070,6 +1070,8 @@
 1063
 1064
 1065
+1066
+1067
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -2126,7 +2128,9 @@
     }
 
     #[test]
-    #[should_panic(expected = "Miniscript(ContextError(CompressedOnly))")]
+    #[should_panic(
+        expected = "Miniscript(ContextError(CompressedOnly(\"04b4632d08485ff1df2db55b9dafd23347d1c47a457072a1e87be26896549a87378ec38ff91d43e8c2092ebda601780485263da089465619e0358a5c1be7ac91f4\")))"
+    )]
     fn test_dsl_miniscript_checks() {
         let mut uncompressed_pk =
             PrivateKey::from_wif("L5EZftvrYaSudiozVRzTqLcHLNDoVn7H5HSfM9BAN6tMJX8oTWz6").unwrap();
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/mod.rs.html
index e0395a27d6..471c92d4c6 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/mod.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/mod.rs.html
@@ -778,6 +778,15 @@
 771
 772
 773
+774
+775
+776
+777
+778
+779
+780
+781
+782
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -797,9 +806,10 @@
 use std::collections::{BTreeMap, HashMap, HashSet};
 use std::ops::Deref;
 
+use bitcoin::secp256k1;
 use bitcoin::util::bip32::{ChildNumber, DerivationPath, ExtendedPubKey, Fingerprint, KeySource};
 use bitcoin::util::psbt;
-use bitcoin::{Network, PublicKey, Script, TxOut};
+use bitcoin::{Network, Script, TxOut};
 
 use miniscript::descriptor::{DescriptorType, InnerXKey};
 pub use miniscript::{
@@ -838,7 +848,7 @@
 ///
 /// [`psbt::Input`]: bitcoin::util::psbt::Input
 /// [`psbt::Output`]: bitcoin::util::psbt::Output
-pub type HdKeyPaths = BTreeMap<PublicKey, KeySource>;
+pub type HdKeyPaths = BTreeMap<secp256k1::PublicKey, KeySource>;
 
 /// Trait for types which can be converted into an [`ExtendedDescriptor`] and a [`KeyMap`] usable by a wallet in a specific [`Network`]
 pub trait IntoWalletDescriptor {
@@ -1086,6 +1096,7 @@
 
 pub(crate) trait DescriptorMeta {
     fn is_witness(&self) -> bool;
+    fn is_taproot(&self) -> bool;
     fn get_extended_keys(&self) -> Result<Vec<DescriptorXKey<ExtendedPubKey>>, DescriptorError>;
     fn derive_from_hd_keypaths<'s>(
         &self,
@@ -1108,21 +1119,21 @@
 impl<'s> DescriptorScripts for DerivedDescriptor<'s> {
     fn psbt_redeem_script(&self) -> Option<Script> {
         match self.desc_type() {
-            DescriptorType::ShWpkh => Some(self.explicit_script()),
-            DescriptorType::ShWsh => Some(self.explicit_script().to_v0_p2wsh()),
-            DescriptorType::Sh => Some(self.explicit_script()),
-            DescriptorType::Bare => Some(self.explicit_script()),
-            DescriptorType::ShSortedMulti => Some(self.explicit_script()),
+            DescriptorType::ShWpkh => Some(self.explicit_script().unwrap()),
+            DescriptorType::ShWsh => Some(self.explicit_script().unwrap().to_v0_p2wsh()),
+            DescriptorType::Sh => Some(self.explicit_script().unwrap()),
+            DescriptorType::Bare => Some(self.explicit_script().unwrap()),
+            DescriptorType::ShSortedMulti => Some(self.explicit_script().unwrap()),
             _ => None,
         }
     }
 
     fn psbt_witness_script(&self) -> Option<Script> {
         match self.desc_type() {
-            DescriptorType::Wsh => Some(self.explicit_script()),
-            DescriptorType::ShWsh => Some(self.explicit_script()),
+            DescriptorType::Wsh => Some(self.explicit_script().unwrap()),
+            DescriptorType::ShWsh => Some(self.explicit_script().unwrap()),
             DescriptorType::WshSortedMulti | DescriptorType::ShWshSortedMulti => {
-                Some(self.explicit_script())
+                Some(self.explicit_script().unwrap())
             }
             _ => None,
         }
@@ -1142,6 +1153,10 @@
         )
     }
 
+    fn is_taproot(&self) -> bool {
+        self.desc_type() == DescriptorType::Tr
+    }
+
     fn get_extended_keys(&self) -> Result<Vec<DescriptorXKey<ExtendedPubKey>>, DescriptorError> {
         let mut answer = Vec::new();
 
@@ -1228,7 +1243,10 @@
         let descriptor = self.as_derived_fixed(secp);
         match descriptor.desc_type() {
             // TODO: add pk() here
-            DescriptorType::Pkh | DescriptorType::Wpkh | DescriptorType::ShWpkh
+            DescriptorType::Pkh
+            | DescriptorType::Wpkh
+            | DescriptorType::ShWpkh
+            | DescriptorType::Tr
                 if utxo.is_some()
                     && descriptor.script_pubkey() == utxo.as_ref().unwrap().script_pubkey =>
             {
@@ -1236,7 +1254,7 @@
             }
             DescriptorType::Bare | DescriptorType::Sh | DescriptorType::ShSortedMulti
                 if psbt_input.redeem_script.is_some()
-                    && &descriptor.explicit_script()
+                    && &descriptor.explicit_script().unwrap()
                         == psbt_input.redeem_script.as_ref().unwrap() =>
             {
                 Some(descriptor)
@@ -1246,7 +1264,7 @@
             | DescriptorType::ShWshSortedMulti
             | DescriptorType::WshSortedMulti
                 if psbt_input.witness_script.is_some()
-                    && &descriptor.explicit_script()
+                    && &descriptor.explicit_script().unwrap()
                         == psbt_input.witness_script.as_ref().unwrap() =>
             {
                 Some(descriptor)
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/policy.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/policy.rs.html
index 9e5300d287..e22211c889 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/policy.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/policy.rs.html
@@ -1605,6 +1605,96 @@
 1598
 1599
 1600
+1601
+1602
+1603
+1604
+1605
+1606
+1607
+1608
+1609
+1610
+1611
+1612
+1613
+1614
+1615
+1616
+1617
+1618
+1619
+1620
+1621
+1622
+1623
+1624
+1625
+1626
+1627
+1628
+1629
+1630
+1631
+1632
+1633
+1634
+1635
+1636
+1637
+1638
+1639
+1640
+1641
+1642
+1643
+1644
+1645
+1646
+1647
+1648
+1649
+1650
+1651
+1652
+1653
+1654
+1655
+1656
+1657
+1658
+1659
+1660
+1661
+1662
+1663
+1664
+1665
+1666
+1667
+1668
+1669
+1670
+1671
+1672
+1673
+1674
+1675
+1676
+1677
+1678
+1679
+1680
+1681
+1682
+1683
+1684
+1685
+1686
+1687
+1688
+1689
+1690
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -1650,23 +1740,27 @@
 use serde::{Serialize, Serializer};
 
 use bitcoin::hashes::*;
+use bitcoin::secp256k1;
 use bitcoin::util::bip32::Fingerprint;
-use bitcoin::PublicKey;
+use bitcoin::{PublicKey, XOnlyPublicKey};
 
-use miniscript::descriptor::{DescriptorPublicKey, ShInner, SortedMultiVec, WshInner};
+use miniscript::descriptor::{
+    DescriptorPublicKey, DescriptorSinglePub, ShInner, SinglePubKey, SortedMultiVec, WshInner,
+};
 use miniscript::{Descriptor, Miniscript, MiniscriptKey, Satisfier, ScriptContext, Terminal};
 
 #[allow(unused_imports)]
 use log::{debug, error, info, trace};
 
 use crate::descriptor::ExtractPolicy;
+use crate::keys::ExtScriptContext;
 use crate::wallet::signer::{SignerId, SignersContainer};
 use crate::wallet::utils::{self, After, Older, SecpCtx};
 
 use super::checksum::get_checksum;
 use super::error::Error;
 use super::XKeyUtils;
-use bitcoin::util::psbt::PartiallySignedTransaction as Psbt;
+use bitcoin::util::psbt::{Input as PsbtInput, PartiallySignedTransaction as Psbt};
 use miniscript::psbt::PsbtInputSatisfier;
 
 /// Raw public key or extended key fingerprint
@@ -1675,6 +1769,8 @@
     #[serde(skip_serializing_if = "Option::is_none")]
     pubkey: Option<PublicKey>,
     #[serde(skip_serializing_if = "Option::is_none")]
+    x_only_pubkey: Option<XOnlyPublicKey>,
+    #[serde(skip_serializing_if = "Option::is_none")]
     pubkey_hash: Option<hash160::Hash>,
     #[serde(skip_serializing_if = "Option::is_none")]
     fingerprint: Option<Fingerprint>,
@@ -1683,8 +1779,18 @@
 impl PkOrF {
     fn from_key(k: &DescriptorPublicKey, secp: &SecpCtx) -> Self {
         match k {
-            DescriptorPublicKey::SinglePub(pubkey) => PkOrF {
-                pubkey: Some(pubkey.key),
+            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
+                key: SinglePubKey::FullKey(pk),
+                ..
+            }) => PkOrF {
+                pubkey: Some(*pk),
+                ..Default::default()
+            },
+            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
+                key: SinglePubKey::XOnly(pk),
+                ..
+            }) => PkOrF {
+                x_only_pubkey: Some(*pk),
                 ..Default::default()
             },
             DescriptorPublicKey::XPub(xpub) => PkOrF {
@@ -1700,10 +1806,10 @@
 #[serde(tag = "type", rename_all = "UPPERCASE")]
 pub enum SatisfiableItem {
     // Leaves
-    /// Signature for a raw public key
-    Signature(PkOrF),
-    /// Signature for an extended key fingerprint
-    SignatureKey(PkOrF),
+    /// ECDSA Signature for a raw public key
+    EcdsaSignature(PkOrF),
+    /// Schnorr Signature for a raw public key
+    SchnorrSignature(PkOrF),
     /// SHA256 preimage hash
     Sha256Preimage {
         /// The digest value
@@ -2178,6 +2284,7 @@
         build_sat: BuildSatisfaction,
         threshold: usize,
         sorted: bool,
+        is_ecdsa: bool,
         secp: &SecpCtx,
     ) -> Result<Option<Policy>, PolicyError> {
         if threshold == 0 {
@@ -2206,7 +2313,9 @@
             }
 
             if let Some(psbt) = build_sat.psbt() {
-                if signature_in_psbt(psbt, key, secp) {
+                if is_ecdsa && ecdsa_signature_in_psbt(psbt, key, secp)
+                    || !is_ecdsa && schnorr_signature_in_psbt(psbt, key, secp)
+                {
                     satisfaction.add(
                         &Satisfaction::Complete {
                             condition: Default::default(),
@@ -2322,7 +2431,14 @@
 
 fn signer_id(key: &DescriptorPublicKey, secp: &SecpCtx) -> SignerId {
     match key {
-        DescriptorPublicKey::SinglePub(pubkey) => pubkey.key.to_pubkeyhash().into(),
+        DescriptorPublicKey::SinglePub(DescriptorSinglePub {
+            key: SinglePubKey::FullKey(pk),
+            ..
+        }) => pk.to_pubkeyhash().into(),
+        DescriptorPublicKey::SinglePub(DescriptorSinglePub {
+            key: SinglePubKey::XOnly(pk),
+            ..
+        }) => pk.to_pubkeyhash().into(),
         DescriptorPublicKey::XPub(xpub) => xpub.root_fingerprint(secp).into(),
     }
 }
@@ -2333,7 +2449,7 @@
     build_sat: BuildSatisfaction,
     secp: &SecpCtx,
 ) -> Policy {
-    let mut policy: Policy = SatisfiableItem::Signature(PkOrF::from_key(key, secp)).into();
+    let mut policy: Policy = SatisfiableItem::EcdsaSignature(PkOrF::from_key(key, secp)).into();
 
     policy.contribution = if signers.find(signer_id(key, secp)).is_some() {
         Satisfaction::Complete {
@@ -2344,7 +2460,7 @@
     };
 
     if let Some(psbt) = build_sat.psbt() {
-        policy.satisfaction = if signature_in_psbt(psbt, key, secp) {
+        policy.satisfaction = if ecdsa_signature_in_psbt(psbt, key, secp) {
             Satisfaction::Complete {
                 condition: Default::default(),
             }
@@ -2356,10 +2472,19 @@
     policy
 }
 
-fn signature_in_psbt(psbt: &Psbt, key: &DescriptorPublicKey, secp: &SecpCtx) -> bool {
+fn generic_sig_in_psbt<
+    C: Fn(&PsbtInput, &SinglePubKey) -> bool,
+    M: Fn(&secp256k1::PublicKey) -> SinglePubKey,
+>(
+    psbt: &Psbt,
+    key: &DescriptorPublicKey,
+    secp: &SecpCtx,
+    map: M,
+    check: C,
+) -> bool {
     //TODO check signature validity
     psbt.inputs.iter().all(|input| match key {
-        DescriptorPublicKey::SinglePub(key) => input.partial_sigs.contains_key(&key.key),
+        DescriptorPublicKey::SinglePub(DescriptorSinglePub { key, .. }) => check(input, key),
         DescriptorPublicKey::XPub(xpub) => {
             let pubkey = input
                 .bip32_derivation
@@ -2368,14 +2493,49 @@
                 .map(|(p, _)| p);
             //TODO check actual derivation matches
             match pubkey {
-                Some(pubkey) => input.partial_sigs.contains_key(pubkey),
+                Some(pubkey) => check(input, &map(pubkey)),
                 None => false,
             }
         }
     })
 }
 
-impl<Ctx: ScriptContext> ExtractPolicy for Miniscript<DescriptorPublicKey, Ctx> {
+fn ecdsa_signature_in_psbt(psbt: &Psbt, key: &DescriptorPublicKey, secp: &SecpCtx) -> bool {
+    generic_sig_in_psbt(
+        psbt,
+        key,
+        secp,
+        |pk| SinglePubKey::FullKey(PublicKey::new(*pk)),
+        |input, pk| match pk {
+            SinglePubKey::FullKey(pk) => input.partial_sigs.contains_key(pk),
+            _ => false,
+        },
+    )
+}
+
+fn schnorr_signature_in_psbt(psbt: &Psbt, key: &DescriptorPublicKey, secp: &SecpCtx) -> bool {
+    generic_sig_in_psbt(
+        psbt,
+        key,
+        secp,
+        |pk| SinglePubKey::XOnly((*pk).into()),
+        |input, pk| {
+            let pk = match pk {
+                SinglePubKey::XOnly(pk) => pk,
+                _ => return false,
+            };
+
+            // This assumes the internal key is never used in the script leaves, which I think is
+            // reasonable
+            match &input.tap_internal_key {
+                Some(ik) if ik == pk => input.tap_key_sig.is_some(),
+                _ => input.tap_script_sigs.keys().any(|(sk, _)| sk == pk),
+            }
+        },
+    )
+}
+
+impl<Ctx: ScriptContext + 'static> ExtractPolicy for Miniscript<DescriptorPublicKey, Ctx> {
     fn extract_policy(
         &self,
         signers: &SignersContainer,
@@ -2447,9 +2607,15 @@
             Terminal::Hash160(hash) => {
                 Some(SatisfiableItem::Hash160Preimage { hash: *hash }.into())
             }
-            Terminal::Multi(k, pks) => {
-                Policy::make_multisig(pks, signers, build_sat, *k, false, secp)?
-            }
+            Terminal::Multi(k, pks) | Terminal::MultiA(k, pks) => Policy::make_multisig(
+                pks,
+                signers,
+                build_sat,
+                *k,
+                false,
+                !Ctx::as_enum().is_taproot(),
+                secp,
+            )?,
             // Identities
             Terminal::Alt(inner)
             | Terminal::Swap(inner)
@@ -2551,6 +2717,7 @@
                 build_sat,
                 keys.k,
                 true,
+                true,
                 secp,
             )?)
         }
@@ -2574,6 +2741,19 @@
                 WshInner::SortedMulti(ref keys) => make_sortedmulti(keys, signers, build_sat, secp),
             },
             Descriptor::Bare(ms) => Ok(ms.as_inner().extract_policy(signers, build_sat, secp)?),
+            Descriptor::Tr(tr) => {
+                let mut items = vec![signature(tr.internal_key(), signers, build_sat, secp)];
+                items.append(
+                    &mut tr
+                        .iter_scripts()
+                        .filter_map(|(_, ms)| {
+                            ms.extract_policy(signers, build_sat, secp).transpose()
+                        })
+                        .collect::<Result<Vec<_>, _>>()?,
+                );
+
+                Ok(Policy::make_thresh(items, 1)?)
+            }
         }
     }
 }
@@ -2585,7 +2765,7 @@
 
     use super::*;
     use crate::descriptor::derived::AsDerived;
-    use crate::descriptor::policy::SatisfiableItem::{Multisig, Signature, Thresh};
+    use crate::descriptor::policy::SatisfiableItem::{EcdsaSignature, Multisig, Thresh};
     use crate::keys::{DescriptorKey, IntoDescriptorKey};
     use crate::wallet::signer::SignersContainer;
     use bitcoin::secp256k1::Secp256k1;
@@ -2607,7 +2787,7 @@
     ) -> (DescriptorKey<Ctx>, DescriptorKey<Ctx>, Fingerprint) {
         let path = bip32::DerivationPath::from_str(path).unwrap();
         let tprv = bip32::ExtendedPrivKey::from_str(tprv).unwrap();
-        let tpub = bip32::ExtendedPubKey::from_private(secp, &tprv);
+        let tpub = bip32::ExtendedPubKey::from_priv(secp, &tprv);
         let fingerprint = tprv.fingerprint(secp);
         let prvkey = (tprv, path.clone()).into_descriptor_key().unwrap();
         let pubkey = (tpub, path).into_descriptor_key().unwrap();
@@ -2633,7 +2813,7 @@
             .unwrap();
 
         assert!(
-            matches!(&policy.item, Signature(pk_or_f) if pk_or_f.fingerprint.unwrap() == fingerprint)
+            matches!(&policy.item, EcdsaSignature(pk_or_f) if pk_or_f.fingerprint.unwrap() == fingerprint)
         );
         assert!(matches!(&policy.contribution, Satisfaction::None));
 
@@ -2648,7 +2828,7 @@
             .unwrap();
 
         assert!(
-            matches!(&policy.item, Signature(pk_or_f) if pk_or_f.fingerprint.unwrap() == fingerprint)
+            matches!(&policy.item, EcdsaSignature(pk_or_f) if pk_or_f.fingerprint.unwrap() == fingerprint)
         );
         assert!(
             matches!(&policy.contribution, Satisfaction::Complete {condition} if condition.csv == None && condition.timelock == None)
@@ -2801,7 +2981,7 @@
             .unwrap();
 
         assert!(
-            matches!(&policy.item, Signature(pk_or_f) if pk_or_f.fingerprint.unwrap() == fingerprint)
+            matches!(&policy.item, EcdsaSignature(pk_or_f) if pk_or_f.fingerprint.unwrap() == fingerprint)
         );
         assert!(matches!(&policy.contribution, Satisfaction::None));
 
@@ -2817,7 +2997,7 @@
             .unwrap();
 
         assert!(
-            matches!(&policy.item, Signature(pk_or_f) if pk_or_f.fingerprint.unwrap() == fingerprint)
+            matches!(&policy.item, EcdsaSignature(pk_or_f) if pk_or_f.fingerprint.unwrap() == fingerprint)
         );
         assert!(
             matches!(&policy.contribution, Satisfaction::Complete {condition} if condition.csv == None && condition.timelock == None)
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/keys/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/keys/mod.rs.html
index d91e933b9d..49715bbf65 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/keys/mod.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/keys/mod.rs.html
@@ -987,8 +987,6 @@
 980
 981
 982
-983
-984
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -1011,12 +1009,12 @@
 use bitcoin::secp256k1::{self, Secp256k1, Signing};
 
 use bitcoin::util::bip32;
-use bitcoin::{Network, PrivateKey, PublicKey};
+use bitcoin::{Network, PrivateKey, PublicKey, XOnlyPublicKey};
 
 use miniscript::descriptor::{Descriptor, DescriptorXKey, Wildcard};
 pub use miniscript::descriptor::{
     DescriptorPublicKey, DescriptorSecretKey, DescriptorSinglePriv, DescriptorSinglePub, KeyMap,
-    SortedMultiVec,
+    SinglePubKey, SortedMultiVec,
 };
 pub use miniscript::ScriptContext;
 use miniscript::{Miniscript, Terminal};
@@ -1118,6 +1116,8 @@
     Legacy,
     /// Segwitv0 scripts
     Segwitv0,
+    /// Taproot scripts
+    Tap,
 }
 
 impl ScriptContextEnum {
@@ -1130,6 +1130,11 @@
     pub fn is_segwit_v0(&self) -> bool {
         self == &ScriptContextEnum::Segwitv0
     }
+
+    /// Returns whether the script context is [`ScriptContextEnum::Tap`]
+    pub fn is_taproot(&self) -> bool {
+        self == &ScriptContextEnum::Tap
+    }
 }
 
 /// Trait that adds extra useful methods to [`ScriptContext`]s
@@ -1146,6 +1151,11 @@
     fn is_segwit_v0() -> bool {
         Self::as_enum().is_segwit_v0()
     }
+
+    /// Returns whether the script context is [`Tap`](miniscript::Tap), aka Taproot or Segwit V1
+    fn is_taproot() -> bool {
+        Self::as_enum().is_taproot()
+    }
 }
 
 impl<Ctx: ScriptContext + 'static> ExtScriptContext for Ctx {
@@ -1153,6 +1163,7 @@
         match TypeId::of::<Ctx>() {
             t if t == TypeId::of::<miniscript::Legacy>() => ScriptContextEnum::Legacy,
             t if t == TypeId::of::<miniscript::Segwitv0>() => ScriptContextEnum::Segwitv0,
+            t if t == TypeId::of::<miniscript::Tap>() => ScriptContextEnum::Tap,
             _ => unimplemented!("Unknown ScriptContext type"),
         }
     }
@@ -1203,7 +1214,7 @@
 ///
 /// use bdk::keys::{
 ///     mainnet_network, DescriptorKey, DescriptorPublicKey, DescriptorSinglePub,
-///     IntoDescriptorKey, KeyError, ScriptContext,
+///     IntoDescriptorKey, KeyError, ScriptContext, SinglePubKey,
 /// };
 ///
 /// pub struct MyKeyType {
@@ -1215,7 +1226,7 @@
 ///         Ok(DescriptorKey::from_public(
 ///             DescriptorPublicKey::SinglePub(DescriptorSinglePub {
 ///                 origin: None,
-///                 key: self.pubkey,
+///                 key: SinglePubKey::FullKey(self.pubkey),
 ///             }),
 ///             mainnet_network(),
 ///         ))
@@ -1310,7 +1321,6 @@
         match self {
             ExtendedKey::Private((mut xprv, _)) => {
                 xprv.network = network;
-                xprv.private_key.network = network;
                 Some(xprv)
             }
             ExtendedKey::Public(_) => None,
@@ -1325,7 +1335,7 @@
         secp: &Secp256k1<C>,
     ) -> bip32::ExtendedPubKey {
         let mut xpub = match self {
-            ExtendedKey::Private((xprv, _)) => bip32::ExtendedPubKey::from_private(secp, &xprv),
+            ExtendedKey::Private((xprv, _)) => bip32::ExtendedPubKey::from_priv(secp, &xprv),
             ExtendedKey::Public((xpub, _)) => xpub,
         };
 
@@ -1379,7 +1389,7 @@
 ///             network: self.network,
 ///             depth: 0,
 ///             parent_fingerprint: bip32::Fingerprint::default(),
-///             private_key: self.key_data,
+///             private_key: self.key_data.inner,
 ///             chain_code: bip32::ChainCode::from(self.chain_code.as_ref()),
 ///             child_number: bip32::ChildNumber::Normal { index: 0 },
 ///         };
@@ -1411,7 +1421,7 @@
 ///             network: bitcoin::Network::Bitcoin, // pick an arbitrary network here
 ///             depth: 0,
 ///             parent_fingerprint: bip32::Fingerprint::default(),
-///             private_key: self.key_data,
+///             private_key: self.key_data.inner,
 ///             chain_code: bip32::ChainCode::from(self.chain_code.as_ref()),
 ///             child_number: bip32::ChildNumber::Normal { index: 0 },
 ///         };
@@ -1689,11 +1699,11 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
         entropy: Self::Entropy,
     ) -> Result<GeneratedKey<Self, Ctx>, Self::Error> {
         // pick a arbitrary network here, but say that we support all of them
-        let key = secp256k1::SecretKey::from_slice(&entropy)?;
+        let inner = secp256k1::SecretKey::from_slice(&entropy)?;
         let private_key = PrivateKey {
             compressed: options.compressed,
             network: Network::Bitcoin,
-            key,
+            inner,
         };
 
         Ok(GeneratedKey::new(private_key, any_network()))
@@ -1832,7 +1842,17 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
 impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for PublicKey {
     fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
         DescriptorPublicKey::SinglePub(DescriptorSinglePub {
-            key: self,
+            key: SinglePubKey::FullKey(self),
+            origin: None,
+        })
+        .into_descriptor_key()
+    }
+}
+
+impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for XOnlyPublicKey {
+    fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
+        DescriptorPublicKey::SinglePub(DescriptorSinglePub {
+            key: SinglePubKey::XOnly(self),
             origin: None,
         })
         .into_descriptor_key()
@@ -1934,29 +1954,6 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
         );
     }
 
-    #[test]
-    fn test_keys_wif_network() {
-        // test mainnet wif
-        let generated_xprv: GeneratedKey<_, miniscript::Segwitv0> =
-            bip32::ExtendedPrivKey::generate_with_entropy_default(TEST_ENTROPY).unwrap();
-        let xkey = generated_xprv.into_extended_key().unwrap();
-
-        let network = Network::Bitcoin;
-        let xprv = xkey.into_xprv(network).unwrap();
-        let wif = PrivateKey::from_wif(&xprv.private_key.to_wif()).unwrap();
-        assert_eq!(wif.network, network);
-
-        // test testnet wif
-        let generated_xprv: GeneratedKey<_, miniscript::Segwitv0> =
-            bip32::ExtendedPrivKey::generate_with_entropy_default(TEST_ENTROPY).unwrap();
-        let xkey = generated_xprv.into_extended_key().unwrap();
-
-        let network = Network::Testnet;
-        let xprv = xkey.into_xprv(network).unwrap();
-        let wif = PrivateKey::from_wif(&xprv.private_key.to_wif()).unwrap();
-        assert_eq!(wif.network, network);
-    }
-
     #[cfg(feature = "keys-bip39")]
     #[test]
     fn test_keys_wif_network_bip39() {
@@ -1968,9 +1965,8 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
         .into_extended_key()
         .unwrap();
         let xprv = xkey.into_xprv(Network::Testnet).unwrap();
-        let wif = PrivateKey::from_wif(&xprv.private_key.to_wif()).unwrap();
 
-        assert_eq!(wif.network, Network::Testnet);
+        assert_eq!(xprv.network, Network::Testnet);
     }
 }
 
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/psbt/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/psbt/mod.rs.html index 0ced997b1d..19df1f58b3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/psbt/mod.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/psbt/mod.rs.html @@ -126,7 +126,6 @@ 119 120 121 -122
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -148,7 +147,7 @@
 impl PsbtUtils for Psbt {
     #[allow(clippy::all)] // We want to allow `manual_map` but it is too new.
     fn get_utxo_for(&self, input_index: usize) -> Option<TxOut> {
-        let tx = &self.global.unsigned_tx;
+        let tx = &self.unsigned_tx;
 
         if input_index >= tx.input.len() {
             return None;
@@ -222,7 +221,7 @@
         let mut builder = wallet.build_tx();
         builder.add_recipient(send_to.script_pubkey(), 10_000);
         let (mut psbt, _) = builder.finish().unwrap();
-        psbt.global.unsigned_tx.input.push(TxIn::default());
+        psbt.unsigned_tx.input.push(TxIn::default());
         let options = SignOptions {
             trust_witness_utxo: true,
             ..Default::default()
@@ -241,10 +240,9 @@
 
         // add a finalized input
         psbt.inputs.push(psbt_bip.inputs[0].clone());
-        psbt.global
-            .unsigned_tx
+        psbt.unsigned_tx
             .input
-            .push(psbt_bip.global.unsigned_tx.input[0].clone());
+            .push(psbt_bip.unsigned_tx.input[0].clone());
 
         let _ = wallet.sign(&mut psbt, SignOptions::default()).unwrap();
     }
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/testutils/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/testutils/mod.rs.html
index cbaf44f268..3213ed99bc 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/testutils/mod.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/testutils/mod.rs.html
@@ -237,43 +237,6 @@
 230
 231
 232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -290,11 +253,7 @@
 #[cfg(feature = "test-blockchains")]
 pub mod blockchain_tests;
 
-use bitcoin::secp256k1::{Secp256k1, Verification};
-use bitcoin::{Address, PublicKey, Txid};
-
-use miniscript::descriptor::DescriptorPublicKey;
-use miniscript::{Descriptor, MiniscriptKey, TranslatePk};
+use bitcoin::{Address, Txid};
 
 #[derive(Clone, Debug)]
 pub struct TestIncomingInput {
@@ -372,39 +331,6 @@
     }
 }
 
-#[doc(hidden)]
-pub trait TranslateDescriptor {
-    // derive and translate a `Descriptor<DescriptorPublicKey>` into a `Descriptor<PublicKey>`
-    fn derive_translated<C: Verification>(
-        &self,
-        secp: &Secp256k1<C>,
-        index: u32,
-    ) -> Descriptor<PublicKey>;
-}
-
-impl TranslateDescriptor for Descriptor<DescriptorPublicKey> {
-    fn derive_translated<C: Verification>(
-        &self,
-        secp: &Secp256k1<C>,
-        index: u32,
-    ) -> Descriptor<PublicKey> {
-        let translate = |key: &DescriptorPublicKey| -> PublicKey {
-            match key {
-                DescriptorPublicKey::XPub(xpub) => {
-                    xpub.xkey
-                        .derive_pub(secp, &xpub.derivation_path)
-                        .expect("hardened derivation steps")
-                        .public_key
-                }
-                DescriptorPublicKey::SinglePub(key) => key.key,
-            }
-        };
-
-        self.derive(index)
-            .translate_pk_infallible(|pk| translate(pk), |pkh| translate(pkh).to_pubkeyhash())
-    }
-}
-
 #[doc(hidden)]
 #[macro_export]
 macro_rules! testutils {
@@ -412,23 +338,23 @@
         use $crate::bitcoin::secp256k1::Secp256k1;
         use $crate::miniscript::descriptor::{Descriptor, DescriptorPublicKey, DescriptorTrait};
 
-        use $crate::testutils::TranslateDescriptor;
+        use $crate::descriptor::AsDerived;
 
         let secp = Secp256k1::new();
 
         let parsed = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, &$descriptors.0).expect("Failed to parse descriptor in `testutils!(@external)`").0;
-        parsed.derive_translated(&secp, $child).address(bitcoin::Network::Regtest).expect("No address form")
+        parsed.as_derived($child, &secp).address(bitcoin::Network::Regtest).expect("No address form")
     });
     ( @internal $descriptors:expr, $child:expr ) => ({
         use $crate::bitcoin::secp256k1::Secp256k1;
         use $crate::miniscript::descriptor::{Descriptor, DescriptorPublicKey, DescriptorTrait};
 
-        use $crate::testutils::TranslateDescriptor;
+        use $crate::descriptor::AsDerived;
 
         let secp = Secp256k1::new();
 
         let parsed = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, &$descriptors.1.expect("Missing internal descriptor")).expect("Failed to parse descriptor in `testutils!(@internal)`").0;
-        parsed.derive_translated(&secp, $child).address($crate::bitcoin::Network::Regtest).expect("No address form")
+        parsed.as_derived($child, &secp).address($crate::bitcoin::Network::Regtest).expect("No address form")
     });
     ( @e $descriptors:expr, $child:expr ) => ({ testutils!(@external $descriptors, $child) });
     ( @i $descriptors:expr, $child:expr ) => ({ testutils!(@internal $descriptors, $child) });
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/mod.rs.html
index 006003878d..147c6f2529 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/mod.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/mod.rs.html
@@ -4105,26 +4105,6 @@
 4098
 4099
 4100
-4101
-4102
-4103
-4104
-4105
-4106
-4107
-4108
-4109
-4110
-4111
-4112
-4113
-4114
-4115
-4116
-4117
-4118
-4119
-4120
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -4151,11 +4131,10 @@
 use bitcoin::secp256k1::Secp256k1;
 
 use bitcoin::consensus::encode::serialize;
-use bitcoin::util::base58;
-use bitcoin::util::psbt::raw::Key as PsbtKey;
-use bitcoin::util::psbt::Input;
-use bitcoin::util::psbt::PartiallySignedTransaction as Psbt;
-use bitcoin::{Address, Network, OutPoint, Script, SigHashType, Transaction, TxOut, Txid};
+use bitcoin::util::psbt;
+use bitcoin::{
+    Address, EcdsaSighashType, Network, OutPoint, Script, Transaction, TxOut, Txid, Witness,
+};
 
 use miniscript::descriptor::DescriptorTrait;
 use miniscript::psbt::PsbtInputSatisfier;
@@ -4669,7 +4648,7 @@
         &self,
         coin_selection: Cs,
         params: TxParams,
-    ) -> Result<(Psbt, TransactionDetails), Error> {
+    ) -> Result<(psbt::PartiallySignedTransaction, TransactionDetails), Error> {
         let external_policy = self
             .descriptor
             .extract_policy(&self.signers, BuildSatisfaction::None, &self.secp)?
@@ -4830,7 +4809,7 @@
         let mut outgoing: u64 = 0;
         let mut received: u64 = 0;
 
-        fee_amount += fee_rate.fee_wu(tx.get_weight());
+        fee_amount += fee_rate.fee_wu(tx.weight());
 
         let recipients = params.recipients.iter().map(|(r, v)| (r, *v));
 
@@ -4888,7 +4867,7 @@
                 previous_output: u.outpoint(),
                 script_sig: Script::default(),
                 sequence: n_sequence,
-                witness: vec![],
+                witness: Witness::new(),
             })
             .collect();
 
@@ -5011,10 +4990,7 @@
             return Err(Error::IrreplaceableTransaction);
         }
 
-        let feerate = FeeRate::from_wu(
-            details.fee.ok_or(Error::FeeRateUnavailable)?,
-            tx.get_weight(),
-        );
+        let feerate = FeeRate::from_wu(details.fee.ok_or(Error::FeeRateUnavailable)?, tx.weight());
 
         // remove the inputs from the tx and process them
         let original_txin = tx.input.drain(..).collect::<Vec<_>>();
@@ -5131,7 +5107,11 @@
     /// let  finalized = wallet.sign(&mut psbt, SignOptions::default())?;
     /// assert!(finalized, "we should have signed all the inputs");
     /// # Ok::<(), bdk::Error>(())
-    pub fn sign(&self, psbt: &mut Psbt, sign_options: SignOptions) -> Result<bool, Error> {
+    pub fn sign(
+        &self,
+        psbt: &mut psbt::PartiallySignedTransaction,
+        sign_options: SignOptions,
+    ) -> Result<bool, Error> {
         // this helps us doing our job later
         self.add_input_hd_keypaths(psbt)?;
 
@@ -5150,10 +5130,9 @@
         // If the user hasn't explicitly opted-in, refuse to sign the transaction unless every input
         // is using `SIGHASH_ALL`
         if !sign_options.allow_all_sighashes
-            && !psbt
-                .inputs
-                .iter()
-                .all(|i| i.sighash_type.is_none() || i.sighash_type == Some(SigHashType::All))
+            && !psbt.inputs.iter().all(|i| {
+                i.sighash_type.is_none() || i.sighash_type == Some(EcdsaSighashType::All.into())
+            })
         {
             return Err(Error::Signer(signer::SignerError::NonStandardSighash));
         }
@@ -5212,8 +5191,12 @@
     /// Try to finalize a PSBT
     ///
     /// The [`SignOptions`] can be used to tweak the behavior of the finalizer.
-    pub fn finalize_psbt(&self, psbt: &mut Psbt, sign_options: SignOptions) -> Result<bool, Error> {
-        let tx = &psbt.global.unsigned_tx;
+    pub fn finalize_psbt(
+        &self,
+        psbt: &mut psbt::PartiallySignedTransaction,
+        sign_options: SignOptions,
+    ) -> Result<bool, Error> {
+        let tx = &psbt.unsigned_tx;
         let mut finished = true;
 
         for (n, input) in tx.input.iter().enumerate() {
@@ -5510,10 +5493,8 @@
         tx: Transaction,
         selected: Vec<Utxo>,
         params: TxParams,
-    ) -> Result<Psbt, Error> {
-        use bitcoin::util::psbt::serialize::Serialize;
-
-        let mut psbt = Psbt::from_unsigned_tx(tx)?;
+    ) -> Result<psbt::PartiallySignedTransaction, Error> {
+        let mut psbt = psbt::PartiallySignedTransaction::from_unsigned_tx(tx)?;
 
         if params.add_global_xpubs {
             let mut all_xpubs = self.descriptor.get_extended_keys()?;
@@ -5522,13 +5503,6 @@
             }
 
             for xpub in all_xpubs {
-                let serialized_xpub = base58::from_check(&xpub.xkey.to_string())
-                    .expect("Internal serialization error");
-                let key = PsbtKey {
-                    type_value: 0x01,
-                    key: serialized_xpub,
-                };
-
                 let origin = match xpub.origin {
                     Some(origin) => origin,
                     None if xpub.xkey.depth == 0 => {
@@ -5537,7 +5511,7 @@
                     _ => return Err(Error::MissingKeyOrigin(xpub.xkey.to_string())),
                 };
 
-                psbt.global.unknown.insert(key, origin.serialize());
+                psbt.xpub.insert(xpub.xkey, origin);
             }
         }
 
@@ -5547,11 +5521,7 @@
             .collect::<HashMap<_, _>>();
 
         // add metadata for the inputs
-        for (psbt_input, input) in psbt
-            .inputs
-            .iter_mut()
-            .zip(psbt.global.unsigned_tx.input.iter())
-        {
+        for (psbt_input, input) in psbt.inputs.iter_mut().zip(psbt.unsigned_tx.input.iter()) {
             let utxo = match lookup_output.remove(&input.previous_output) {
                 Some(utxo) => utxo,
                 None => continue,
@@ -5563,9 +5533,9 @@
                         match self.get_psbt_input(utxo, params.sighash, params.only_witness_utxo) {
                             Ok(psbt_input) => psbt_input,
                             Err(e) => match e {
-                                Error::UnknownUtxo => Input {
+                                Error::UnknownUtxo => psbt::Input {
                                     sighash_type: params.sighash,
-                                    ..Input::default()
+                                    ..psbt::Input::default()
                                 },
                                 _ => return Err(e),
                             },
@@ -5590,10 +5560,7 @@
         self.add_input_hd_keypaths(&mut psbt)?;
 
         // add metadata for the outputs
-        for (psbt_output, tx_output) in psbt
-            .outputs
-            .iter_mut()
-            .zip(psbt.global.unsigned_tx.output.iter())
+        for (psbt_output, tx_output) in psbt.outputs.iter_mut().zip(psbt.unsigned_tx.output.iter())
         {
             if let Some((keychain, child)) = self
                 .database
@@ -5618,9 +5585,9 @@
     pub fn get_psbt_input(
         &self,
         utxo: LocalUtxo,
-        sighash_type: Option<SigHashType>,
+        sighash_type: Option<psbt::PsbtSighashType>,
         only_witness_utxo: bool,
-    ) -> Result<Input, Error> {
+    ) -> Result<psbt::Input, Error> {
         // Try to find the prev_script in our db to figure out if this is internal or external,
         // and the derivation index
         let (keychain, child) = self
@@ -5629,9 +5596,9 @@
             .get_path_from_script_pubkey(&utxo.txout.script_pubkey)?
             .ok_or(Error::UnknownUtxo)?;
 
-        let mut psbt_input = Input {
+        let mut psbt_input = psbt::Input {
             sighash_type,
-            ..Input::default()
+            ..psbt::Input::default()
         };
 
         let desc = self.get_descriptor_for_keychain(keychain);
@@ -5653,7 +5620,10 @@
         Ok(psbt_input)
     }
 
-    fn add_input_hd_keypaths(&self, psbt: &mut Psbt) -> Result<(), Error> {
+    fn add_input_hd_keypaths(
+        &self,
+        psbt: &mut psbt::PartiallySignedTransaction,
+    ) -> Result<(), Error> {
         let mut input_utxos = Vec::with_capacity(psbt.inputs.len());
         for n in 0..psbt.inputs.len() {
             input_utxos.push(psbt.get_utxo_for(n).clone());
@@ -5935,7 +5905,7 @@
             $(
                 $( $add_signature )*
                 for txin in &mut tx.input {
-                    txin.witness.push([0x00; 108].to_vec()); // fake signature
+                    txin.witness.push([0x00; 108]); // fake signature
                 }
             )*
 
@@ -5947,7 +5917,7 @@
                 dust_change = true;
             )*
 
-            let tx_fee_rate = FeeRate::from_wu($fees, tx.get_weight());
+            let tx_fee_rate = FeeRate::from_wu($fees, tx.weight());
             let fee_rate = $fee_rate;
 
             if !dust_change {
@@ -6013,7 +5983,7 @@
             .version(42);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.version, 42);
+        assert_eq!(psbt.unsigned_tx.version, 42);
     }
 
     #[test]
@@ -6024,7 +5994,7 @@
         builder.add_recipient(addr.script_pubkey(), 25_000);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.lock_time, 0);
+        assert_eq!(psbt.unsigned_tx.lock_time, 0);
     }
 
     #[test]
@@ -6035,7 +6005,7 @@
         builder.add_recipient(addr.script_pubkey(), 25_000);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.lock_time, 100_000);
+        assert_eq!(psbt.unsigned_tx.lock_time, 100_000);
     }
 
     #[test]
@@ -6048,7 +6018,7 @@
             .nlocktime(630_000);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.lock_time, 630_000);
+        assert_eq!(psbt.unsigned_tx.lock_time, 630_000);
     }
 
     #[test]
@@ -6061,7 +6031,7 @@
             .nlocktime(630_000);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.lock_time, 630_000);
+        assert_eq!(psbt.unsigned_tx.lock_time, 630_000);
     }
 
     #[test]
@@ -6086,7 +6056,7 @@
         builder.add_recipient(addr.script_pubkey(), 25_000);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.input[0].sequence, 6);
+        assert_eq!(psbt.unsigned_tx.input[0].sequence, 6);
     }
 
     #[test]
@@ -6100,7 +6070,7 @@
         let (psbt, _) = builder.finish().unwrap();
         // When CSV is enabled it takes precedence over the rbf value (unless forced by the user).
         // It will be set to the OP_CSV value, in this case 6
-        assert_eq!(psbt.global.unsigned_tx.input[0].sequence, 6);
+        assert_eq!(psbt.unsigned_tx.input[0].sequence, 6);
     }
 
     #[test]
@@ -6125,7 +6095,7 @@
         builder.add_recipient(addr.script_pubkey(), 25_000);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.input[0].sequence, 0xFFFFFFFE);
+        assert_eq!(psbt.unsigned_tx.input[0].sequence, 0xFFFFFFFE);
     }
 
     #[test]
@@ -6150,7 +6120,7 @@
             .enable_rbf_with_sequence(0xDEADBEEF);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.input[0].sequence, 0xDEADBEEF);
+        assert_eq!(psbt.unsigned_tx.input[0].sequence, 0xDEADBEEF);
     }
 
     #[test]
@@ -6161,7 +6131,7 @@
         builder.add_recipient(addr.script_pubkey(), 25_000);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.input[0].sequence, 0xFFFFFFFF);
+        assert_eq!(psbt.unsigned_tx.input[0].sequence, 0xFFFFFFFF);
     }
 
     #[test]
@@ -6186,9 +6156,9 @@
         builder.drain_to(addr.script_pubkey()).drain_wallet();
         let (psbt, details) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.output.len(), 1);
+        assert_eq!(psbt.unsigned_tx.output.len(), 1);
         assert_eq!(
-            psbt.global.unsigned_tx.output[0].value,
+            psbt.unsigned_tx.output[0].value,
             50_000 - details.fee.unwrap_or(0)
         );
     }
@@ -6205,7 +6175,7 @@
             .drain_wallet();
         let (psbt, details) = builder.finish().unwrap();
         dbg!(&psbt);
-        let outputs = psbt.global.unsigned_tx.output;
+        let outputs = psbt.unsigned_tx.output;
 
         assert_eq!(outputs.len(), 2);
         let main_output = outputs
@@ -6256,9 +6226,9 @@
         let (psbt, details) = builder.finish().unwrap();
 
         assert_eq!(details.fee.unwrap_or(0), 100);
-        assert_eq!(psbt.global.unsigned_tx.output.len(), 1);
+        assert_eq!(psbt.unsigned_tx.output.len(), 1);
         assert_eq!(
-            psbt.global.unsigned_tx.output[0].value,
+            psbt.unsigned_tx.output[0].value,
             50_000 - details.fee.unwrap_or(0)
         );
     }
@@ -6275,9 +6245,9 @@
         let (psbt, details) = builder.finish().unwrap();
 
         assert_eq!(details.fee.unwrap_or(0), 0);
-        assert_eq!(psbt.global.unsigned_tx.output.len(), 1);
+        assert_eq!(psbt.unsigned_tx.output.len(), 1);
         assert_eq!(
-            psbt.global.unsigned_tx.output[0].value,
+            psbt.unsigned_tx.output[0].value,
             50_000 - details.fee.unwrap_or(0)
         );
     }
@@ -6307,10 +6277,10 @@
             .ordering(TxOrdering::Untouched);
         let (psbt, details) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.output.len(), 2);
-        assert_eq!(psbt.global.unsigned_tx.output[0].value, 25_000);
+        assert_eq!(psbt.unsigned_tx.output.len(), 2);
+        assert_eq!(psbt.unsigned_tx.output[0].value, 25_000);
         assert_eq!(
-            psbt.global.unsigned_tx.output[1].value,
+            psbt.unsigned_tx.output[1].value,
             25_000 - details.fee.unwrap_or(0)
         );
     }
@@ -6323,8 +6293,8 @@
         builder.add_recipient(addr.script_pubkey(), 49_800);
         let (psbt, details) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.output.len(), 1);
-        assert_eq!(psbt.global.unsigned_tx.output[0].value, 49_800);
+        assert_eq!(psbt.unsigned_tx.output.len(), 1);
+        assert_eq!(psbt.unsigned_tx.output[0].value, 49_800);
         assert_eq!(details.fee.unwrap_or(0), 200);
     }
 
@@ -6353,13 +6323,13 @@
             .ordering(super::tx_builder::TxOrdering::Bip69Lexicographic);
         let (psbt, details) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.output.len(), 3);
+        assert_eq!(psbt.unsigned_tx.output.len(), 3);
         assert_eq!(
-            psbt.global.unsigned_tx.output[0].value,
+            psbt.unsigned_tx.output[0].value,
             10_000 - details.fee.unwrap_or(0)
         );
-        assert_eq!(psbt.global.unsigned_tx.output[1].value, 10_000);
-        assert_eq!(psbt.global.unsigned_tx.output[2].value, 30_000);
+        assert_eq!(psbt.unsigned_tx.output[1].value, 10_000);
+        assert_eq!(psbt.unsigned_tx.output[2].value, 30_000);
     }
 
     #[test]
@@ -6380,12 +6350,12 @@
         let mut builder = wallet.build_tx();
         builder
             .add_recipient(addr.script_pubkey(), 30_000)
-            .sighash(bitcoin::SigHashType::Single);
+            .sighash(bitcoin::EcdsaSighashType::Single.into());
         let (psbt, _) = builder.finish().unwrap();
 
         assert_eq!(
             psbt.inputs[0].sighash_type,
-            Some(bitcoin::SigHashType::Single)
+            Some(bitcoin::EcdsaSighashType::Single.into())
         );
     }
 
@@ -6577,7 +6547,7 @@
         let (psbt, details) = builder.finish().unwrap();
 
         assert_eq!(
-            psbt.global.unsigned_tx.input.len(),
+            psbt.unsigned_tx.input.len(),
             2,
             "should add an additional input since 25_000 < 30_000"
         );
@@ -6634,7 +6604,7 @@
             .policy_path(path, KeychainKind::External);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.input[0].sequence, 0xFFFFFFFF);
+        assert_eq!(psbt.unsigned_tx.input[0].sequence, 0xFFFFFFFF);
     }
 
     #[test]
@@ -6653,14 +6623,13 @@
             .policy_path(path, KeychainKind::External);
         let (psbt, _) = builder.finish().unwrap();
 
-        assert_eq!(psbt.global.unsigned_tx.input[0].sequence, 144);
+        assert_eq!(psbt.unsigned_tx.input[0].sequence, 144);
     }
 
     #[test]
     fn test_create_tx_global_xpubs_with_origin() {
         use bitcoin::hashes::hex::FromHex;
-        use bitcoin::util::base58;
-        use bitcoin::util::psbt::raw::Key;
+        use bitcoin::util::bip32;
 
         let (wallet, _, _) = get_funded_wallet("wpkh([73756c7f/48'/0'/0'/2']tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/0/*)");
         let addr = wallet.get_address(New).unwrap();
@@ -6670,16 +6639,12 @@
             .add_global_xpubs();
         let (psbt, _) = builder.finish().unwrap();
 
-        let type_value = 0x01;
-        let key = base58::from_check("tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3").unwrap();
-
-        let psbt_key = Key { type_value, key };
+        let key = bip32::ExtendedPubKey::from_str("tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3").unwrap();
+        let fingerprint = bip32::Fingerprint::from_hex("73756c7f").unwrap();
+        let path = bip32::DerivationPath::from_str("m/48'/0'/0'/2'").unwrap();
 
-        // This key has an explicit origin, so it will be encoded here
-        let value_bytes = Vec::<u8>::from_hex("73756c7f30000080000000800000008002000080").unwrap();
-
-        assert_eq!(psbt.global.unknown.len(), 1);
-        assert_eq!(psbt.global.unknown.get(&psbt_key), Some(&value_bytes));
+        assert_eq!(psbt.xpub.len(), 1);
+        assert_eq!(psbt.xpub.get(&key), Some(&(fingerprint, path)));
     }
 
     #[test]
@@ -6715,8 +6680,7 @@
         );
 
         assert!(
-            psbt.global
-                .unsigned_tx
+            psbt.unsigned_tx
                 .input
                 .iter()
                 .any(|input| input.previous_output == utxo.outpoint),
@@ -6921,8 +6885,7 @@
     #[test]
     fn test_create_tx_global_xpubs_master_without_origin() {
         use bitcoin::hashes::hex::FromHex;
-        use bitcoin::util::base58;
-        use bitcoin::util::psbt::raw::Key;
+        use bitcoin::util::bip32;
 
         let (wallet, _, _) = get_funded_wallet("wpkh(tpubD6NzVbkrYhZ4Y55A58Gv9RSNF5hy84b5AJqYy7sCcjFrkcLpPre8kmgfit6kY1Zs3BLgeypTDBZJM222guPpdz7Cup5yzaMu62u7mYGbwFL/0/*)");
         let addr = wallet.get_address(New).unwrap();
@@ -6932,17 +6895,14 @@
             .add_global_xpubs();
         let (psbt, _) = builder.finish().unwrap();
 
-        let type_value = 0x01;
-        let key = base58::from_check("tpubD6NzVbkrYhZ4Y55A58Gv9RSNF5hy84b5AJqYy7sCcjFrkcLpPre8kmgfit6kY1Zs3BLgeypTDBZJM222guPpdz7Cup5yzaMu62u7mYGbwFL").unwrap();
-
-        let psbt_key = Key { type_value, key };
-
-        // This key doesn't have an explicit origin, but it's a master key (depth = 0). So we encode
-        // its fingerprint directly and an empty path
-        let value_bytes = Vec::<u8>::from_hex("997a323b").unwrap();
+        let key = bip32::ExtendedPubKey::from_str("tpubD6NzVbkrYhZ4Y55A58Gv9RSNF5hy84b5AJqYy7sCcjFrkcLpPre8kmgfit6kY1Zs3BLgeypTDBZJM222guPpdz7Cup5yzaMu62u7mYGbwFL").unwrap();
+        let fingerprint = bip32::Fingerprint::from_hex("997a323b").unwrap();
 
-        assert_eq!(psbt.global.unknown.len(), 1);
-        assert_eq!(psbt.global.unknown.get(&psbt_key), Some(&value_bytes));
+        assert_eq!(psbt.xpub.len(), 1);
+        assert_eq!(
+            psbt.xpub.get(&key),
+            Some(&(fingerprint, bip32::DerivationPath::default()))
+        );
     }
 
     #[test]
@@ -7064,7 +7024,7 @@
         let txid = tx.txid();
         // skip saving the new utxos, we know they can't be used anyways
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7089,7 +7049,7 @@
         );
         assert!(details.fee.unwrap_or(0) > original_details.fee.unwrap_or(0));
 
-        let tx = &psbt.global.unsigned_tx;
+        let tx = &psbt.unsigned_tx;
         assert_eq!(tx.output.len(), 2);
         assert_eq!(
             tx.output
@@ -7124,7 +7084,7 @@
         let txid = tx.txid();
         // skip saving the new utxos, we know they can't be used anyways
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7155,7 +7115,7 @@
             original_details.fee.unwrap_or(0)
         );
 
-        let tx = &psbt.global.unsigned_tx;
+        let tx = &psbt.unsigned_tx;
         assert_eq!(tx.output.len(), 2);
         assert_eq!(
             tx.output
@@ -7190,7 +7150,7 @@
         let mut tx = psbt.extract_tx();
         let txid = tx.txid();
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7214,7 +7174,7 @@
         assert_eq!(details.sent, original_details.sent);
         assert!(details.fee.unwrap_or(0) > original_details.fee.unwrap_or(0));
 
-        let tx = &psbt.global.unsigned_tx;
+        let tx = &psbt.unsigned_tx;
         assert_eq!(tx.output.len(), 1);
         assert_eq!(tx.output[0].value + details.fee.unwrap_or(0), details.sent);
 
@@ -7234,7 +7194,7 @@
         let mut tx = psbt.extract_tx();
         let txid = tx.txid();
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7258,7 +7218,7 @@
         assert_eq!(details.sent, original_details.sent);
         assert!(details.fee.unwrap_or(0) > original_details.fee.unwrap_or(0));
 
-        let tx = &psbt.global.unsigned_tx;
+        let tx = &psbt.unsigned_tx;
         assert_eq!(tx.output.len(), 1);
         assert_eq!(tx.output[0].value + details.fee.unwrap_or(0), details.sent);
 
@@ -7290,7 +7250,7 @@
         let mut tx = psbt.extract_tx();
         let txid = tx.txid();
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7347,7 +7307,7 @@
         let mut tx = psbt.extract_tx();
         let txid = tx.txid();
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7388,7 +7348,7 @@
         let txid = tx.txid();
         // skip saving the new utxos, we know they can't be used anyways
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7409,7 +7369,7 @@
         assert_eq!(details.sent, original_details.sent + 25_000);
         assert_eq!(details.fee.unwrap_or(0) + details.received, 30_000);
 
-        let tx = &psbt.global.unsigned_tx;
+        let tx = &psbt.unsigned_tx;
         assert_eq!(tx.input.len(), 2);
         assert_eq!(tx.output.len(), 2);
         assert_eq!(
@@ -7451,7 +7411,7 @@
         let txid = tx.txid();
         // skip saving the new utxos, we know they can't be used anyways
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7472,7 +7432,7 @@
         assert_eq!(details.sent, original_details.sent + 25_000);
         assert_eq!(details.fee.unwrap_or(0) + details.received, 30_000);
 
-        let tx = &psbt.global.unsigned_tx;
+        let tx = &psbt.unsigned_tx;
         assert_eq!(tx.input.len(), 2);
         assert_eq!(tx.output.len(), 2);
         assert_eq!(
@@ -7522,7 +7482,7 @@
         let txid = tx.txid();
         // skip saving the new utxos, we know they can't be used anyways
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7549,7 +7509,7 @@
             75_000 - original_send_all_amount - details.fee.unwrap_or(0)
         );
 
-        let tx = &psbt.global.unsigned_tx;
+        let tx = &psbt.unsigned_tx;
         assert_eq!(tx.input.len(), 2);
         assert_eq!(tx.output.len(), 2);
         assert_eq!(
@@ -7593,7 +7553,7 @@
         let txid = tx.txid();
         // skip saving the new utxos, we know they can't be used anyways
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7620,7 +7580,7 @@
         assert_eq!(details.fee.unwrap_or(0), 30_000);
         assert_eq!(details.received, 0);
 
-        let tx = &psbt.global.unsigned_tx;
+        let tx = &psbt.unsigned_tx;
         assert_eq!(tx.input.len(), 2);
         assert_eq!(tx.output.len(), 1);
         assert_eq!(
@@ -7654,7 +7614,7 @@
         let txid = tx.txid();
         // skip saving the new utxos, we know they can't be used anyways
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7683,7 +7643,7 @@
         assert_eq!(details.sent, original_details.sent + 25_000);
         assert_eq!(details.fee.unwrap_or(0) + details.received, 30_000);
 
-        let tx = &psbt.global.unsigned_tx;
+        let tx = &psbt.unsigned_tx;
         assert_eq!(tx.input.len(), 2);
         assert_eq!(tx.output.len(), 2);
         assert_eq!(
@@ -7725,7 +7685,7 @@
         let txid = tx.txid();
         // skip saving the new utxos, we know they can't be used anyways
         for txin in &mut tx.input {
-            txin.witness.push([0x00; 108].to_vec()); // fake signature
+            txin.witness.push([0x00; 108]); // fake signature
             wallet
                 .database
                 .borrow_mut()
@@ -7754,7 +7714,7 @@
         assert_eq!(details.sent, original_details.sent + 25_000);
         assert_eq!(details.fee.unwrap_or(0) + details.received, 30_000);
 
-        let tx = &psbt.global.unsigned_tx;
+        let tx = &psbt.unsigned_tx;
         assert_eq!(tx.input.len(), 2);
         assert_eq!(tx.output.len(), 2);
         assert_eq!(
@@ -7912,7 +7872,7 @@
         };
 
         psbt.inputs.push(dud_input);
-        psbt.global.unsigned_tx.input.push(bitcoin::TxIn::default());
+        psbt.unsigned_tx.input.push(bitcoin::TxIn::default());
         let is_final = wallet
             .sign(
                 &mut psbt,
@@ -7934,14 +7894,14 @@
 
     #[test]
     fn test_sign_nonstandard_sighash() {
-        let sighash = SigHashType::NonePlusAnyoneCanPay;
+        let sighash = EcdsaSighashType::NonePlusAnyoneCanPay;
 
         let (wallet, _, _) = get_funded_wallet("wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)");
         let addr = wallet.get_address(New).unwrap();
         let mut builder = wallet.build_tx();
         builder
             .drain_to(addr.script_pubkey())
-            .sighash(sighash)
+            .sighash(sighash.into())
             .drain_wallet();
         let (mut psbt, _) = builder.finish().unwrap();
 
@@ -7974,8 +7934,8 @@
 
         let extracted = psbt.extract_tx();
         assert_eq!(
-            *extracted.input[0].witness[0].last().unwrap(),
-            sighash.as_u32() as u8,
+            *extracted.input[0].witness.to_vec()[0].last().unwrap(),
+            sighash.to_u32() as u8,
             "The signature should have been made with the right sighash"
         );
     }
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/signer.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/signer.rs.html
index 07a9afa231..a3bd5a9eea 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/signer.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/signer.rs.html
@@ -772,6 +772,31 @@
 765
 766
 767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -865,10 +890,11 @@
 use bitcoin::blockdata::opcodes;
 use bitcoin::blockdata::script::Builder as ScriptBuilder;
 use bitcoin::hashes::{hash160, Hash};
+use bitcoin::secp256k1;
 use bitcoin::secp256k1::{Message, Secp256k1};
 use bitcoin::util::bip32::{ChildNumber, DerivationPath, ExtendedPrivKey, Fingerprint};
-use bitcoin::util::{bip143, psbt};
-use bitcoin::{PrivateKey, Script, SigHash, SigHashType};
+use bitcoin::util::{ecdsa, psbt, sighash};
+use bitcoin::{EcdsaSighashType, PrivateKey, PublicKey, Script, Sighash};
 
 use miniscript::descriptor::{DescriptorSecretKey, DescriptorSinglePriv, DescriptorXKey, KeyMap};
 use miniscript::{Legacy, MiniscriptKey, Segwitv0};
@@ -927,6 +953,16 @@
     /// To enable signing transactions with non-standard sighashes set
     /// [`SignOptions::allow_all_sighashes`] to `true`.
     NonStandardSighash,
+    /// Invalid SIGHASH for the signing context in use
+    InvalidSighash,
+    /// Error while computing the hash to sign
+    SighashError(sighash::Error),
+}
+
+impl From<sighash::Error> for SignerError {
+    fn from(e: sighash::Error) -> Self {
+        SignerError::SighashError(e)
+    }
 }
 
 impl fmt::Display for SignerError {
@@ -1019,10 +1055,16 @@
             None => self.xkey.derive_priv(secp, &full_path).unwrap(),
         };
 
-        if &derived_key.private_key.public_key(secp) != public_key {
+        if &secp256k1::PublicKey::from_secret_key(secp, &derived_key.private_key) != public_key {
             Err(SignerError::InvalidKey)
         } else {
-            derived_key.private_key.sign(psbt, Some(input_index), secp)
+            // HD wallets imply compressed keys
+            PrivateKey {
+                compressed: true,
+                network: self.xkey.network,
+                inner: derived_key.private_key,
+            }
+            .sign(psbt, Some(input_index), secp)
         }
     }
 
@@ -1047,7 +1089,7 @@
         secp: &SecpCtx,
     ) -> Result<(), SignerError> {
         let input_index = input_index.unwrap();
-        if input_index >= psbt.inputs.len() || input_index >= psbt.global.unsigned_tx.input.len() {
+        if input_index >= psbt.inputs.len() || input_index >= psbt.unsigned_tx.input.len() {
             return Err(SignerError::InputIndexOutOfRange);
         }
 
@@ -1057,7 +1099,7 @@
             return Ok(());
         }
 
-        let pubkey = self.public_key(secp);
+        let pubkey = PublicKey::from_private_key(secp, self);
         if psbt.inputs[input_index].partial_sigs.contains_key(&pubkey) {
             return Ok(());
         }
@@ -1071,15 +1113,15 @@
             None => Legacy::sighash(psbt, input_index)?,
         };
 
-        let signature = secp.sign(
+        let sig = secp.sign_ecdsa(
             &Message::from_slice(&hash.into_inner()[..]).unwrap(),
-            &self.key,
+            &self.inner,
         );
 
-        let mut final_signature = Vec::with_capacity(75);
-        final_signature.extend_from_slice(&signature.serialize_der());
-        final_signature.push(sighash.as_u32() as u8);
-
+        let final_signature = ecdsa::EcdsaSig {
+            sig,
+            hash_ty: sighash.ecdsa_hash_ty().unwrap(), // FIXME
+        };
         psbt.inputs[input_index]
             .partial_sigs
             .insert(pubkey, final_signature);
@@ -1268,22 +1310,24 @@
     fn sighash(
         psbt: &psbt::PartiallySignedTransaction,
         input_index: usize,
-    ) -> Result<(SigHash, SigHashType), SignerError>;
+    ) -> Result<(Sighash, psbt::PsbtSighashType), SignerError>;
 }
 
 impl ComputeSighash for Legacy {
     fn sighash(
         psbt: &psbt::PartiallySignedTransaction,
         input_index: usize,
-    ) -> Result<(SigHash, SigHashType), SignerError> {
-        if input_index >= psbt.inputs.len() || input_index >= psbt.global.unsigned_tx.input.len() {
+    ) -> Result<(Sighash, psbt::PsbtSighashType), SignerError> {
+        if input_index >= psbt.inputs.len() || input_index >= psbt.unsigned_tx.input.len() {
             return Err(SignerError::InputIndexOutOfRange);
         }
 
         let psbt_input = &psbt.inputs[input_index];
-        let tx_input = &psbt.global.unsigned_tx.input[input_index];
+        let tx_input = &psbt.unsigned_tx.input[input_index];
 
-        let sighash = psbt_input.sighash_type.unwrap_or(SigHashType::All);
+        let sighash = psbt_input
+            .sighash_type
+            .unwrap_or_else(|| EcdsaSighashType::All.into());
         let script = match psbt_input.redeem_script {
             Some(ref redeem_script) => redeem_script.clone(),
             None => {
@@ -1301,9 +1345,11 @@
         };
 
         Ok((
-            psbt.global
-                .unsigned_tx
-                .signature_hash(input_index, &script, sighash.as_u32()),
+            sighash::SighashCache::new(&psbt.unsigned_tx).legacy_signature_hash(
+                input_index,
+                &script,
+                sighash.to_u32(),
+            )?,
             sighash,
         ))
     }
@@ -1323,15 +1369,19 @@
     fn sighash(
         psbt: &psbt::PartiallySignedTransaction,
         input_index: usize,
-    ) -> Result<(SigHash, SigHashType), SignerError> {
-        if input_index >= psbt.inputs.len() || input_index >= psbt.global.unsigned_tx.input.len() {
+    ) -> Result<(Sighash, psbt::PsbtSighashType), SignerError> {
+        if input_index >= psbt.inputs.len() || input_index >= psbt.unsigned_tx.input.len() {
             return Err(SignerError::InputIndexOutOfRange);
         }
 
         let psbt_input = &psbt.inputs[input_index];
-        let tx_input = &psbt.global.unsigned_tx.input[input_index];
+        let tx_input = &psbt.unsigned_tx.input[input_index];
 
-        let sighash = psbt_input.sighash_type.unwrap_or(SigHashType::All);
+        let sighash = psbt_input
+            .sighash_type
+            .unwrap_or_else(|| EcdsaSighashType::All.into())
+            .ecdsa_hash_ty()
+            .map_err(|_| SignerError::InvalidSighash)?;
 
         // Always try first with the non-witness utxo
         let utxo = if let Some(prev_tx) = &psbt_input.non_witness_utxo {
@@ -1374,13 +1424,13 @@
         };
 
         Ok((
-            bip143::SigHashCache::new(&psbt.global.unsigned_tx).signature_hash(
+            sighash::SighashCache::new(&psbt.unsigned_tx).segwit_signature_hash(
                 input_index,
                 &script,
                 value,
                 sighash,
-            ),
-            sighash,
+            )?,
+            sighash.into(),
         ))
     }
 }
@@ -1531,7 +1581,7 @@
         let secp: Secp256k1<All> = Secp256k1::new();
         let path = bip32::DerivationPath::from_str(PATH).unwrap();
         let tprv = bip32::ExtendedPrivKey::from_str(tprv).unwrap();
-        let tpub = bip32::ExtendedPubKey::from_private(&secp, &tprv);
+        let tpub = bip32::ExtendedPubKey::from_priv(&secp, &tprv);
         let fingerprint = tprv.fingerprint(&secp);
         let prvkey = (tprv, path.clone()).into_descriptor_key().unwrap();
         let pubkey = (tpub, path).into_descriptor_key().unwrap();
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/tx_builder.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/tx_builder.rs.html
index 55bec53d36..270c43e026 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/tx_builder.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/tx_builder.rs.html
@@ -897,9 +897,6 @@
 890
 891
 892
-893
-894
-895
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -944,7 +941,7 @@
 use std::marker::PhantomData;
 
 use bitcoin::util::psbt::{self, PartiallySignedTransaction as Psbt};
-use bitcoin::{OutPoint, Script, SigHashType, Transaction};
+use bitcoin::{OutPoint, Script, Transaction};
 
 use miniscript::descriptor::DescriptorTrait;
 
@@ -1005,10 +1002,7 @@
 ///     builder.finish()?
 /// };
 ///
-/// assert_eq!(
-///     psbt1.global.unsigned_tx.output[..2],
-///     psbt2.global.unsigned_tx.output[..2]
-/// );
+/// assert_eq!(psbt1.unsigned_tx.output[..2], psbt2.unsigned_tx.output[..2]);
 /// # Ok::<(), bdk::Error>(())
 /// ```
 ///
@@ -1042,7 +1036,7 @@
     pub(crate) utxos: Vec<WeightedUtxo>,
     pub(crate) unspendable: HashSet<OutPoint>,
     pub(crate) manually_selected_only: bool,
-    pub(crate) sighash: Option<SigHashType>,
+    pub(crate) sighash: Option<psbt::PsbtSighashType>,
     pub(crate) ordering: TxOrdering,
     pub(crate) locktime: Option<u32>,
     pub(crate) rbf: Option<RbfValue>,
@@ -1314,7 +1308,7 @@
     /// Sign with a specific sig hash
     ///
     /// **Use this option very carefully**
-    pub fn sighash(&mut self, sighash: SigHashType) -> &mut Self {
+    pub fn sighash(&mut self, sighash: psbt::PsbtSighashType) -> &mut Self {
         self.params.sighash = Some(sighash);
         self
     }
-- 
2.49.0