From: github-actions Date: Thu, 9 May 2024 18:22:03 +0000 (+0000) Subject: Publish autogenerated nightly docs X-Git-Url: http://internal-gitweb-vhost/script/%22https:/database/scripts/struct.CheckedData.html?a=commitdiff_plain;h=17dc8658c07f7adf303b66e21a2535cb038caf70;p=bitcoindevkit.org Publish autogenerated nightly docs --- 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 ff260cc841..37edf56b06 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 @@ -173,8 +173,9 @@ default(0x02) y-coordinate.

assert_eq!(result.to_string(), "tr(03cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115)#6qm9h8ym");
Errors

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

-

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 minimum value (in satoshis) at which an output is broadcastable. -Panics if the descriptor wildcard is hardened. 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
Run a predicate on every key in the descriptor, returning whether +

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 minimum value (in satoshis) at which an output is broadcastable. +Panics if the descriptor wildcard is hardened. Read more
Returns the descriptor id, calculated as the sha256 of the descriptor, checksum not +included. 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
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
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
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.

Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
Converts this object into an abstract policy.
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 diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.ApplyBlockError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.ApplyBlockError.html index 66b64910f6..da3f8f1227 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.ApplyBlockError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.ApplyBlockError.html @@ -1,5 +1,5 @@ ApplyBlockError in bdk::wallet - Rust

Enum bdk::wallet::ApplyBlockError

source ·
pub enum ApplyBlockError {
+                    logo

ApplyBlockError

Enum bdk::wallet::ApplyBlockError

source ·
pub enum ApplyBlockError {
     CannotConnect(CannotConnectError),
     UnexpectedConnectedToHash {
         connected_to_hash: BlockHash,
@@ -10,7 +10,7 @@
 
§

UnexpectedConnectedToHash

Fields

§connected_to_hash: BlockHash

Block hash of connected_to.

§expected_hash: BlockHash

Expected block hash of connected_to, as derived from block.

Occurs when the connected_to hash does not match the hash derived from block.

-

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
👎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
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. 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

Returns the argument unchanged.

+

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
👎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
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.InsertTxError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.InsertTxError.html index f396687f04..80e46eb4f9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.InsertTxError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.InsertTxError.html @@ -1,5 +1,5 @@ InsertTxError in bdk::wallet - Rust

Enum bdk::wallet::InsertTxError

source ·
pub enum InsertTxError {
+                    logo

InsertTxError

Enum bdk::wallet::InsertTxError

source ·
pub enum InsertTxError {
     ConfirmationHeightCannotBeGreaterThanTip {
         tip_height: u32,
         tx_height: u32,
@@ -9,7 +9,7 @@
 
§tx_height: u32

The introduced transaction’s confirmation height.

The error variant that occurs when the caller attempts to insert a transaction with a confirmation height that is greater than the internal chain tip.

-

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
👎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
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. 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

Returns the argument unchanged.

+

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
👎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
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.LoadError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.LoadError.html index ad9dde6c9c..c60a073166 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.LoadError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.LoadError.html @@ -1,10 +1,11 @@ LoadError in bdk::wallet - Rust

Enum bdk::wallet::LoadError

source ·
pub enum LoadError {
+                    logo

LoadError

Enum bdk::wallet::LoadError

source ·
pub enum LoadError {
     Descriptor(DescriptorError),
     Persist(Error),
     NotInitialized,
     MissingNetwork,
     MissingGenesis,
+    MissingDescriptor,
 }
Expand description

The error type when loading a Wallet from persistence.

Method load may return this error.

Variants§

§

Descriptor(DescriptorError)

There was a problem with the passed-in descriptor(s).

@@ -12,7 +13,8 @@
§

NotInitialized

Wallet not initialized, persistence backend is empty.

§

MissingNetwork

Data loaded from persistence is missing network type.

§

MissingGenesis

Data loaded from persistence is missing genesis hash.

-

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
👎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
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. 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

Returns the argument unchanged.

+
§

MissingDescriptor

Data loaded from persistence is missing descriptor.

+

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
👎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
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.NewError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.NewError.html index db5f1e2002..8e5b121c93 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.NewError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.NewError.html @@ -1,5 +1,5 @@ NewError in bdk::wallet - Rust

Variants§

§

NonEmptyDatabase

Database already has data.

§

Descriptor(DescriptorError)

There was problem with the passed-in descriptor(s).

§

Persist(Error)

We were unable to write the wallet’s data to the persistence backend.

-

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
👎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
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. 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

Returns the argument unchanged.

+

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
👎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
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.NewOrLoadError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.NewOrLoadError.html index 853a616bd2..11173e243a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.NewOrLoadError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.NewOrLoadError.html @@ -1,5 +1,5 @@ NewOrLoadError in bdk::wallet - Rust

Enum bdk::wallet::NewOrLoadError

source ·
pub enum NewOrLoadError {
+                    logo

NewOrLoadError

Enum bdk::wallet::NewOrLoadError

source ·
pub enum NewOrLoadError {
     Descriptor(DescriptorError),
     Persist(Error),
     NotInitialized,
@@ -11,6 +11,10 @@
         expected: Network,
         got: Option<Network>,
     },
+    LoadedDescriptorDoesNotMatch {
+        got: Option<ExtendedDescriptor>,
+        keychain: KeychainKind,
+    },
 }
Expand description

Error type for when we try load a Wallet from persistence and creating it if non-existent.

Methods new_or_load and new_or_load_with_genesis_hash may return this error.

Variants§

§

Descriptor(DescriptorError)

There is a problem with the passed-in descriptor.

@@ -22,7 +26,10 @@
§

LoadedNetworkDoesNotMatch

Fields

§expected: Network

The expected network type.

§got: Option<Network>

The network type loaded from persistence.

The loaded network type does not match what was provided.

-

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
👎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
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. 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

Returns the argument unchanged.

+
§

LoadedDescriptorDoesNotMatch

Fields

§got: Option<ExtendedDescriptor>

The descriptor loaded from persistence.

+
§keychain: KeychainKind

The keychain of the descriptor not matching

+

The loaded desccriptor does not match what was provided.

+

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
👎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
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

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 f572311cb5..75c43e4283 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 @@ -1,4 +1,4 @@ wallet_name_from_descriptor in bdk::wallet - Rust
pub fn wallet_name_from_descriptor<T>(
    descriptor: T,
    change_descriptor: Option<T>,
    network: Network,
    secp: &Secp256k1<All>
) -> Result<String, DescriptorError>where
    T: IntoWalletDescriptor,
Expand description

Deterministically generate a unique name given the descriptors defining the wallet

+ logo
pub fn wallet_name_from_descriptor<T>(
    descriptor: T,
    change_descriptor: Option<T>,
    network: Network,
    secp: &Secp256k1<All>
) -> Result<String, DescriptorError>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 a50fe8a782..be9571e850 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 @@ -1,5 +1,5 @@ bdk::wallet - Rust

Module bdk::wallet

source ·
Expand description

Wallet

+ logo

Module wallet

Module bdk::wallet

source ·
Expand description

Wallet

This module defines the Wallet.

Modules

Coin selection
Errors that can be thrown by the Wallet
Wallet export
Generalized signers
Transaction builder

Structs

A derived address and the index it was found at. For convenience this automatically derefs to Address
Balance, differentiated into various categories.
The changes made to a wallet by applying an Update.
An update to Wallet.
A Bitcoin wallet

Enums

An error that may occur when applying a block to Wallet.
An error that may occur when inserting a transaction into Wallet.
The error type when loading a Wallet from persistence.
The error type when constructing a fresh Wallet.
Error type for when we try load a Wallet from persistence and creating it if non-existent.

Traits

Trait to check if a value is below the dust limit. 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 0dd349c0a8..960e77bb9a 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 @@ -1,5 +1,5 @@ AddressInfo in bdk::wallet - Rust

Struct bdk::wallet::AddressInfo

source ·
pub struct AddressInfo {
+                    logo

AddressInfo

Struct bdk::wallet::AddressInfo

source ·
pub struct AddressInfo {
     pub index: u32,
     pub address: Address,
     pub keychain: KeychainKind,
@@ -68,9 +68,9 @@ network a simple comparison is not enough anymore. Instead this function can be
 let address: Address<NetworkUnchecked> = "32iVBEu4dxkUQk9dJbZUiBiQdmypcEyJRf".parse().unwrap();
 assert!(address.is_valid_for_network(Network::Bitcoin));
 assert_eq!(address.is_valid_for_network(Network::Testnet), false);
-

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 +

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 !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

+sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Balance.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Balance.html index 53db475fec..e65432832d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Balance.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Balance.html @@ -1,5 +1,5 @@ Balance in bdk::wallet - Rust

Struct bdk::wallet::Balance

source ·
pub struct Balance {
+                    logo

Balance

Struct bdk::wallet::Balance

source ·
pub struct Balance {
     pub immature: Amount,
     pub trusted_pending: Amount,
     pub untrusted_pending: Amount,
@@ -9,13 +9,13 @@
 
§trusted_pending: Amount

Unconfirmed UTXOs generated by a wallet tx

§untrusted_pending: Amount

Unconfirmed UTXOs received from an external wallet

§confirmed: Amount

Confirmed and immediately spendable balance

-

Implementations§

Get sum of trusted_pending and confirmed coins.

+

Implementations§

Get sum of trusted_pending and confirmed coins.

This is the balance you can spend right now that shouldn’t get cancelled via another party double spending it.

-

Get the whole balance visible to the wallet.

-

Trait Implementations§

The resulting type after applying the + operator.
Performs the + operation. 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
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
Formats the value using the given formatter. Read more
This method tests for self and other values to be equal, and is used +

Get the whole balance visible to the wallet.

+

Trait Implementations§

The resulting type after applying the + operator.
Performs the + operation. 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
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
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 !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

+sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.ChangeSet.html index ed5b7e2d4b..700d6a03e0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.ChangeSet.html @@ -1,15 +1,15 @@ ChangeSet in bdk::wallet - Rust

Struct bdk::wallet::ChangeSet

source ·
pub struct ChangeSet {
+                    logo

ChangeSet

Struct bdk::wallet::ChangeSet

source ·
pub struct ChangeSet {
     pub chain: ChangeSet,
-    pub indexed_tx_graph: ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>,
+    pub indexed_tx_graph: ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>,
     pub network: Option<Network>,
 }
Expand description

The changes made to a wallet by applying an Update.

Fields§

§chain: ChangeSet

Changes to the LocalChain.

-
§indexed_tx_graph: ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>

Changes to IndexedTxGraph.

+
§indexed_tx_graph: ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>

Changes to IndexedTxGraph.

§network: Option<Network>

Stores the network type of the wallet.

-

Trait Implementations§

Append another object of the same type onto self.
Returns whether the structure is considered empty.
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
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
Converts to this type from the input type.
This method tests for self and other values to be equal, and is used +

Trait Implementations§

Append another object of the same type onto self.
Returns whether the structure is considered empty.
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
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
Converts to this type from the input type.
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

+sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Update.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Update.html index e638689cc5..c94ab72aa8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Update.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Update.html @@ -1,5 +1,5 @@ Update in bdk::wallet - Rust

Struct bdk::wallet::Update

source ·
pub struct Update {
+                    logo

Update

Struct bdk::wallet::Update

source ·
pub struct Update {
     pub last_active_indices: BTreeMap<KeychainKind, u32>,
     pub graph: TxGraph<ConfirmationTimeHeightAnchor>,
     pub chain: Option<CheckPoint>,
@@ -9,7 +9,7 @@
 KeychainTxOutIndex.

§graph: TxGraph<ConfirmationTimeHeightAnchor>

Update for the wallet’s internal TxGraph.

§chain: Option<CheckPoint>

Update for the wallet’s internal LocalChain.

-

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
Converts to this type from the input type.
Converts to this type from the input type.

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 argument unchanged.

+

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
Converts to this type from the input type.
Converts to this type from the input type.

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 argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

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 5ec72f1adf..309afa772c 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 @@ -1,89 +1,111 @@ Wallet in bdk::wallet - Rust

Struct bdk::wallet::Wallet

source ·
pub struct Wallet { /* private fields */ }
Expand description

A Bitcoin wallet

+ logo

Wallet

Struct bdk::wallet::Wallet

source ·
pub struct Wallet { /* private fields */ }
Expand description

A Bitcoin wallet

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

  1. output descriptors from which it can derive addresses.
  2. signers that can contribute signatures to addresses instantiated from the descriptors.
-

Implementations§

Creates a wallet that does not persist data.

-

Creates a wallet that does not persist data, with a custom genesis hash.

-

Initialize an empty Wallet.

-

Initialize an empty Wallet with a custom genesis hash.

+

Implementations§

Creates a wallet that does not persist data.

+

Creates a wallet that does not persist data, with a custom genesis hash.

+

Initialize an empty Wallet.

+

Initialize an empty Wallet with a custom genesis hash.

This is like Wallet::new with an additional genesis_hash parameter. This is useful for syncing from alternative networks.

-

Load Wallet from the given persistence backend.

-

Either loads Wallet from persistence, or initializes it if it does not exist.

+

Load Wallet from the given persistence backend.

+

Note that the descriptor secret keys are not persisted to the db; this means that after +calling this method the Wallet won’t know the secret keys, and as such, won’t be +able to sign transactions.

+

If you wish to use the wallet to sign transactions, you need to add the secret keys +manually to the Wallet:

+ +
let secp = Secp256k1::new();
+
+let (external_descriptor, external_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)").unwrap();
+let (internal_descriptor, internal_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)").unwrap();
+
+let external_signer_container = SignersContainer::build(external_keymap, &external_descriptor, &secp);
+let internal_signer_container = SignersContainer::build(internal_keymap, &internal_descriptor, &secp);
+
+let mut wallet = Wallet::load(db)?;
+
+external_signer_container.signers().into_iter()
+    .for_each(|s| wallet.add_signer(KeychainKind::External, SignerOrdering::default(), s.clone()));
+internal_signer_container.signers().into_iter()
+    .for_each(|s| wallet.add_signer(KeychainKind::Internal, SignerOrdering::default(), s.clone()));
+

Alternatively, you can call Wallet::new_or_load, which will add the private keys of the +passed-in descriptors to the Wallet.

+

Either loads Wallet from persistence, or initializes it if it does not exist.

This method will fail if the loaded Wallet has different parameters to those provided.

-

Either loads Wallet from persistence, or initializes it if it does not exist (with a -custom genesis hash).

+

Either loads Wallet from persistence, or initializes it if it does not exist, using the +provided descriptor, change descriptor, network, and custom genesis hash.

This method will fail if the loaded Wallet has different parameters to those provided. This is like Wallet::new_or_load with an additional genesis_hash parameter. This is useful for syncing from alternative networks.

-

Get the Bitcoin network the wallet is using.

-

Iterator over all keychains in this wallet

-

Peek an address of the given keychain at index without revealing it.

+

Get the Bitcoin network the wallet is using.

+

Iterator over all keychains in this wallet

+

Peek an address of the given keychain at index without revealing it.

For non-wildcard descriptors this returns the same address at every provided index.

Panics

This panics when the caller requests for an address of derivation index greater than the BIP32 max index.

-

Attempt to reveal the next address of the given keychain.

+

Attempt to reveal the next address of the given keychain.

This will increment the internal derivation index. If the keychain’s descriptor doesn’t contain a wildcard or every address is already revealed up to the maximum derivation index defined in BIP32, then returns the last revealed address.

Errors

If writing to persistent storage fails.

-

Reveal addresses up to and including the target index and return an iterator +

Reveal addresses up to and including the target index and return an iterator of newly revealed addresses.

If the target index is unreachable, we make a best effort to reveal up to the last possible index. If all addresses up to the given index are already revealed, then no new addresses are returned.

Errors

If writing to persistent storage fails.

-

Get the next unused address for the given keychain, i.e. the address with the lowest +

Get the next unused address for the given keychain, i.e. the address with the lowest derivation index that hasn’t been used.

This will attempt to derive and reveal a new address if no newly revealed addresses are available. See also reveal_next_address.

Errors

If writing to persistent storage fails.

-

Marks an address used of the given keychain at index.

+

Marks an address used of the given keychain at index.

Returns whether the given index was present and then removed from the unused set.

-

Undoes the effect of mark_used and returns whether the index was inserted +

Undoes the effect of mark_used and returns whether the index was inserted back into the unused set.

Since this is only a superficial marker, it will have no effect if the address at the given index was actually used, i.e. the wallet has previously indexed a tx output for the derived spk.

-

List addresses that are revealed but unused.

+

List addresses that are revealed but unused.

Note if the returned iterator is empty you can reveal more addresses by using reveal_next_address or reveal_addresses_to.

-

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

-

Finds how the wallet derived the script pubkey spk.

+

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

+

Finds how the wallet derived the script pubkey spk.

Will only return Some(_) if the wallet has given out the spk.

-

Return the list of unspent outputs of this wallet

-

List all relevant outputs (includes both spent and unspent, confirmed and unconfirmed).

+

Return the list of unspent outputs of this wallet

+

List all relevant outputs (includes both spent and unspent, confirmed and unconfirmed).

To list only unspent outputs (UTXOs), use Wallet::list_unspent instead.

-

Get all the checkpoints the wallet is currently storing indexed by height.

-

Returns the latest checkpoint.

-

Get unbounded script pubkey iterators for both Internal and External keychains.

+

Get all the checkpoints the wallet is currently storing indexed by height.

+

Returns the latest checkpoint.

+

Get unbounded script pubkey iterators for both Internal and External keychains.

This is intended to be used when doing a full scan of your addresses (e.g. after restoring from seed words). You pass the BTreeMap of iterators to a blockchain data source (e.g. electrum server) which will go through each address until it reaches a stop gap.

Note carefully that iterators go over all script pubkeys on the keychains (not what script pubkeys the wallet is storing internally).

-

Get an unbounded script pubkey iterator for the given keychain.

+

Get an unbounded script pubkey iterator for the given keychain.

See all_unbounded_spk_iters for more documentation

-

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.

-

Inserts a [TxOut] at [OutPoint] into the wallet’s transaction graph.

+

Inserts a [TxOut] at [OutPoint] into the wallet’s transaction graph.

This is used for providing a previous output’s value so that we can use calculate_fee or calculate_fee_rate on a given transaction. Outputs inserted with this method will not be returned in list_unspent or list_output.

Any inserted TxOuts are not persisted until commit is called.

WARNING: This should only be used to add TxOuts that the wallet does not own. Only insert TxOuts that you trust the values for!

-

Calculates the fee of a given transaction. Returns 0 if tx is a coinbase transaction.

+

Calculates the fee of a given transaction. Returns 0 if tx is a coinbase transaction.

To calculate the fee for a [Transaction] with inputs not owned by this wallet you must manually insert the TxOut(s) into the tx graph using the insert_txout function.

Note tx does not have to be in the graph for this to work.

@@ -93,7 +115,7 @@ manually insert the TxOut(s) into the tx graph using the
let tx = &psbt.clone().extract_tx().expect("tx");
 let fee = wallet.calculate_fee(tx).expect("fee");
-

Calculate the [FeeRate] for a given transaction.

+

Calculate the [FeeRate] for a given transaction.

To calculate the fee rate for a [Transaction] with inputs not owned by this wallet you must manually insert the TxOut(s) into the tx graph using the insert_txout function.

Note tx does not have to be in the graph for this to work.

@@ -103,7 +125,7 @@ manually insert the TxOut(s) into the tx graph using the
let tx = &psbt.clone().extract_tx().expect("tx");
 let fee_rate = wallet.calculate_fee_rate(tx).expect("fee rate");
-

Compute the tx’s sent and received [Amount]s.

+

Compute the tx’s sent and received [Amount]s.

This method returns a tuple (sent, received). Sent is the sum of the txin amounts that spend from previous txouts tracked by this wallet. Received is the summation of this tx’s outputs that send to script pubkeys tracked by this wallet.

@@ -113,7 +135,7 @@ of this tx’s outputs that send to script pubkeys tracked by this wallet.

let tx = &psbt.clone().extract_tx().expect("tx");
 let (sent, received) = wallet.sent_and_received(tx);
-

Get a single transaction from the wallet as a CanonicalTx (if the transaction exists).

+

Get a single transaction from the wallet as a CanonicalTx (if the transaction exists).

CanonicalTx contains the full transaction alongside meta-data such as:

  • Blocks that the transaction is Anchored in. These may or may not be blocks that exist @@ -151,11 +173,11 @@ the transaction was last seen in the mempool is provided.
  • last_seen, ), }
-

Add a new checkpoint to the wallet’s internal view of the chain. +

Add a new checkpoint to the wallet’s internal view of the chain. This stages but does not commit the change.

Returns whether anything changed with the insertion (e.g. false if checkpoint was already there).

-

Add a transaction to the wallet’s internal view of the chain. This stages but does not +

Add a transaction to the wallet’s internal view of the chain. This stages but does not commit the change.

Returns whether anything changed with the transaction insertion (e.g. false if the transaction was already inserted at the same position).

@@ -165,12 +187,12 @@ inserting new transactions.

WARNING: If position is confirmed, we anchor the tx to a the lowest checkpoint that is >= the position’s height. The caller is responsible for ensuring the tx exists in our local view of the best chain’s history.

-

Iterate over the transactions in the wallet.

-

Return the balance, separated into available, trusted-pending, untrusted-pending and immature +

Iterate over the transactions in the wallet.

+

Return the balance, separated into available, trusted-pending, untrusted-pending and immature values.

-

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_no_persist("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet)?;
 for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {
@@ -179,7 +201,7 @@ values.

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

Start building a transaction.

+

Start building a transaction.

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

Example
let psbt = {
@@ -190,7 +212,7 @@ values.

}; // 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.

@@ -215,7 +237,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. This function returns the Result type with an encapsulated bool that has the value true if the PSBT was finalized, or false otherwise.

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 @@ -229,63 +251,63 @@ 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

-

Finalize a PSBT, i.e., for each input determine if sufficient data is available to pass +

Finalize a PSBT, i.e., for each input determine if sufficient data is available to pass validation and construct the respective scriptSig or scriptWitness. Please refer to BIP174 for further information.

Returns true if the PSBT could be finalized, and false otherwise.

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.

-

The derivation index of this wallet. It will return None if it has not derived any addresses. +

Return the secp256k1 context used for all signing operations

+

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

+

The derivation index of this wallet. It will return None if it has not derived any addresses. Otherwise, it will return the index of the highest address it has derived.

-

The index of the next address that you would get if you were to ask the wallet for a new address

-

Informs the wallet that you no longer intend to broadcast a tx that was built from it.

+

The index of the next address that you would get if you were to ask the wallet for a new address

+

Informs the wallet that you no longer intend to broadcast a tx that was built from it.

This frees up the change address used when creating the tx for use in future transactions.

-

get the corresponding PSBT Input for a LocalUtxo

-

Return the checksum of the public descriptor associated to keychain

+

get the corresponding PSBT Input for a LocalUtxo

+

Return the checksum of the public descriptor associated to keychain

Internally calls Self::get_descriptor_for_keychain to fetch the right descriptor

-

Applies an update to the wallet and stages the changes (but does not commit them).

+

Applies an update to the wallet and stages the changes (but does not commit them).

Usually you create an update by interacting with some blockchain data source and inserting transactions related to your wallet into it.

-

Commits all currently staged changed to the persistence backend returning and error when +

Commits all currently staged changed to the persistence backend returning and error when this fails.

This returns whether the update resulted in any changes.

-

Returns the changes that will be committed with the next call to commit.

-

Get a reference to the inner TxGraph.

-

Get a reference to the inner KeychainTxOutIndex.

-

Get a reference to the inner LocalChain.

-

Introduces a block of height to the wallet, and tries to connect it to the +

Returns the changes that will be committed with the next call to commit.

+

Get a reference to the inner TxGraph.

+

Get a reference to the inner KeychainTxOutIndex.

+

Get a reference to the inner LocalChain.

+

Introduces a block of height to the wallet, and tries to connect it to the prev_blockhash of the block’s header.

This is a convenience method that is equivalent to calling apply_block_connected_to with prev_blockhash and height-1 as the connected_to parameter.

-

Applies relevant transactions from block of height to the wallet, and connects the +

Applies relevant transactions from block of height to the wallet, and connects the block to the internal chain.

The connected_to parameter informs the wallet how this block connects to the internal LocalChain. Relevant transactions are filtered from the block and inserted into the internal TxGraph.

-

Apply relevant unconfirmed transactions to the wallet.

+

Apply relevant unconfirmed transactions to the wallet.

Transactions that are not relevant are filtered out.

This method takes in an iterator of (tx, last_seen) where last_seen is the timestamp of when the transaction was last seen in the mempool. This is used for conflict resolution when there is conflicting unconfirmed transactions. The transaction with the later last_seen is prioritized.

-

Methods to construct sync/full-scan requests for spk-based chain sources.

-

Create a partial SyncRequest for this wallet for all revealed spks.

+

Methods to construct sync/full-scan requests for spk-based chain sources.

+

Create a partial SyncRequest for this wallet for all revealed spks.

This is the first step when performing a spk-based wallet partial sync, the returned SyncRequest collects all revealed script pubkeys from the wallet keychain needed to start a blockchain sync with a spk based blockchain client.

-

Create a `FullScanRequest for this wallet.

+

Create a `FullScanRequest for this wallet.

This is the first step when performing a spk-based wallet full scan, the returned `FullScanRequest collects iterators for the wallet’s keychain script pub keys needed to start a blockchain full scan with a spk based blockchain client.

This operation is generally only used when importing or restoring a previously used wallet in which the list of used scripts is not known.

-

Trait Implementations§

Converts this type into a shared reference of the (usually inferred) input type.
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

Returns the argument unchanged.

+

Trait Implementations§

Converts this type into a shared reference of the (usually inferred) input type.
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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html index 325cfb833b..a6e2ef68aa 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/descriptor_ext/struct.DescriptorId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/descriptor_ext/struct.DescriptorId.html new file mode 100644 index 0000000000..69e0c9de7e --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/descriptor_ext/struct.DescriptorId.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../bdk_chain/struct.DescriptorId.html...

+ + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html index ce8a6c162f..c0044f5be6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html @@ -16,5 +16,6 @@ cache or how you retrieve it from persistent storage.

Re-exports

pub extern crate serde_crate as serde;
pub use bitcoin;
pub use indexed_tx_graph::IndexedTxGraph;
pub use tx_graph::TxGraph;
pub use miniscript;

Modules

Contains the IndexedTxGraph and associated types. Refer to the IndexedTxGraph documentation for more.
Module for keychain related structures.
The LocalChain is a local implementation of ChainOracle.
Helper types for spk-based blockchain clients.
Module for structures that store and traverse transactions.

Structs

A reference to a block in the canonical chain.
An Anchor implementation that also records the exact confirmation height of the transaction.
An Anchor implementation that also records the exact confirmation time and height of the -transaction.
A TxOut with as much data as we can retrieve about it
An iterator for derived script pubkeys.
An index storing TxOuts that have a script pubkey that matches those in a list.

Enums

Represents the observed position of some chain data.
Block height and timestamp at which a transaction is confirmed.

Constants

Maximum BIP32 derivation index.
How many confirmations are needed f or a coinbase output to be spent.

Traits

Trait that “anchors” blockchain data to a specific block of height and hash.
An Anchor that can be constructed from a given block, block height and transaction position +transaction.
Represents the ID of a descriptor, defined as the sha256 hash of +the descriptor string, checksum excluded.
A TxOut with as much data as we can retrieve about it
An iterator for derived script pubkeys.
An index storing TxOuts that have a script pubkey that matches those in a list.

Enums

Represents the observed position of some chain data.
Block height and timestamp at which a transaction is confirmed.

Constants

Maximum BIP32 derivation index.
How many confirmations are needed f or a coinbase output to be spent.

Traits

Trait that “anchors” blockchain data to a specific block of height and hash.
An Anchor that can be constructed from a given block, block height and transaction position within the block.
Trait that makes an object appendable.
Represents a service that tracks the blockchain.
A trait to extend the functionality of a miniscript descriptor.
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html index fd0f5295be..b887b507aa 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html @@ -1,12 +1,12 @@ -ChangeSet in bdk_chain::indexed_tx_graph - Rust
pub struct ChangeSet<A, IA> {
+ChangeSet in bdk_chain::indexed_tx_graph - Rust
pub struct ChangeSet<A, IA> {
     pub graph: ChangeSet<A>,
     pub indexer: IA,
 }
Expand description

Represents changes to an IndexedTxGraph.

Fields§

§graph: ChangeSet<A>

TxGraph changeset.

§indexer: IA

Indexer changeset.

-

Trait Implementations§

Append another object of the same type onto self.
Returns whether the structure is considered empty.
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
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
Converts to this type from the input type.
This method tests for self and other values to be equal, and is used +

Trait Implementations§

Append another object of the same type onto self.
Returns whether the structure is considered empty.
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
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
Converts to this type from the input type.
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

+sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html index fb041b5e97..707be30174 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html @@ -1,47 +1,47 @@ -IndexedTxGraph in bdk_chain::indexed_tx_graph - Rust
pub struct IndexedTxGraph<A, I> {
+IndexedTxGraph in bdk_chain::indexed_tx_graph - Rust
pub struct IndexedTxGraph<A, I> {
     pub index: I,
     /* private fields */
 }
Expand description

The IndexedTxGraph combines a TxGraph and an Indexer implementation.

It ensures that TxGraph and Indexer are updated atomically.

Fields§

§index: I

Transaction index.

-

Implementations§

Construct a new IndexedTxGraph with a given index.

-

Get a reference of the internal transaction graph.

-

Applies the ChangeSet to the IndexedTxGraph.

-

Determines the ChangeSet between self and an empty IndexedTxGraph.

-

Apply an update directly.

+

Implementations§

Construct a new IndexedTxGraph with a given index.

+

Get a reference of the internal transaction graph.

+

Applies the ChangeSet to the IndexedTxGraph.

+

Determines the ChangeSet between self and an empty IndexedTxGraph.

+

Apply an update directly.

update is a TxGraph<A> and the resultant changes is returned as ChangeSet.

-

Insert a floating txout of given outpoint.

-

Insert and index a transaction into the graph.

-

Insert an anchor for a given transaction.

-

Insert a unix timestamp of when a transaction is seen in the mempool.

+

Insert a floating txout of given outpoint.

+

Insert and index a transaction into the graph.

+

Insert an anchor for a given transaction.

+

Insert a unix timestamp of when a transaction is seen in the mempool.

This is used for transaction conflict resolution in TxGraph where the transaction with the later last-seen is prioritized.

-

Batch insert transactions, filtering out those that are irrelevant.

+

Batch insert transactions, filtering out those that are irrelevant.

Relevancy is determined by the Indexer::is_tx_relevant implementation of I. Irrelevant transactions in txs will be ignored. txs do not need to be in topological order.

-

Batch insert unconfirmed transactions, filtering out those that are irrelevant.

+

Batch insert unconfirmed transactions, filtering out those that are irrelevant.

Relevancy is determined by the internal Indexer::is_tx_relevant implementation of I. Irrelevant transactions in txs will be ignored.

Items of txs are tuples containing the transaction and a last seen timestamp. The last seen communicates when the transaction is last seen in the mempool which is used for conflict-resolution in TxGraph (refer to TxGraph::insert_seen_at for details).

-

Batch insert unconfirmed transactions.

+

Batch insert unconfirmed transactions.

Items of txs are tuples containing the transaction and a last seen timestamp. The last seen communicates when the transaction is last seen in the mempool which is used for conflict-resolution in TxGraph (refer to TxGraph::insert_seen_at for details).

To filter out irrelevant transactions, use batch_insert_relevant_unconfirmed instead.

-

Methods are available if the anchor (A) implements AnchorFromBlockPosition.

-

Batch insert all transactions of the given block of height, filtering out those that are +

Methods are available if the anchor (A) implements AnchorFromBlockPosition.

+

Batch insert all transactions of the given block of height, filtering out those that are irrelevant.

Each inserted transaction’s anchor will be constructed from AnchorFromBlockPosition::from_block_position.

Relevancy is determined by the internal Indexer::is_tx_relevant implementation of I. Irrelevant transactions in txs will be ignored.

-

Batch insert all transactions of the given block of height.

+

Batch insert all transactions of the given block of height.

Each inserted transaction’s anchor will be constructed from AnchorFromBlockPosition::from_block_position.

To only insert relevant transactions, use apply_block_relevant instead.

-

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

Returns the argument unchanged.

+

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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/trait.Indexer.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/trait.Indexer.html index 4d7d4dbb5a..33ec946e68 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/trait.Indexer.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/trait.Indexer.html @@ -15,4 +15,4 @@ This trait’s methods should rarely be called directly.

Apply changeset to itself.

Determines the ChangeSet between self and an empty Indexer.

Determines whether the transaction should be included in the index.

-

Implementors§

\ No newline at end of file +

Implementors§

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/index.html index bf6c4b0961..f7b11f592f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/index.html @@ -1,4 +1,4 @@ -bdk_chain::keychain - Rust

Module bdk_chain::keychain

source ·
Expand description

Module for keychain related structures.

+bdk_chain::keychain - Rust

Module bdk_chain::keychain

source ·
Expand description

Module for keychain related structures.

A keychain here is a set of application-defined indexes for a miniscript descriptor where we can derive script pubkeys at a particular derivation index. The application’s index is simply anything that implements Ord.

@@ -6,5 +6,5 @@ anything that implements Ord.

has a txout containing an indexed script pubkey). Internally, this uses SpkTxOutIndex, but also maintains “revealed” and “lookahead” index counts per keychain.

Structs

Balance, differentiated into various categories.
Represents updates to the derivation index of a KeychainTxOutIndex. -It maps each keychain K to its last revealed index.
KeychainTxOutIndex controls how script pubkeys are revealed for multiple keychains, and +It maps each keychain K to a descriptor and its last revealed index.
KeychainTxOutIndex controls how script pubkeys are revealed for multiple keychains, and indexes [TxOut]s with them.
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/sidebar-items.js index d0f75d5600..4b01e1a408 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["Balance","Balance, differentiated into various categories."],["ChangeSet","Represents updates to the derivation index of a `KeychainTxOutIndex`. It maps each keychain `K` to its last revealed index."],["KeychainTxOutIndex","[`KeychainTxOutIndex`] controls how script pubkeys are revealed for multiple keychains, and indexes [`TxOut`]s with them."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":[["Balance","Balance, differentiated into various categories."],["ChangeSet","Represents updates to the derivation index of a `KeychainTxOutIndex`. It maps each keychain `K` to a descriptor and its last revealed index."],["KeychainTxOutIndex","[`KeychainTxOutIndex`] controls how script pubkeys are revealed for multiple keychains, and indexes [`TxOut`]s with them."]]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.Balance.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.Balance.html index cf92b8e69f..83d2fa0359 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.Balance.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.Balance.html @@ -1,4 +1,4 @@ -Balance in bdk_chain::keychain - Rust

Struct bdk_chain::keychain::Balance

source ·
pub struct Balance {
+Balance in bdk_chain::keychain - Rust

Struct bdk_chain::keychain::Balance

source ·
pub struct Balance {
     pub immature: Amount,
     pub trusted_pending: Amount,
     pub untrusted_pending: Amount,
@@ -8,13 +8,13 @@
 
§trusted_pending: Amount

Unconfirmed UTXOs generated by a wallet tx

§untrusted_pending: Amount

Unconfirmed UTXOs received from an external wallet

§confirmed: Amount

Confirmed and immediately spendable balance

-

Implementations§

Get sum of trusted_pending and confirmed coins.

+

Implementations§

Get sum of trusted_pending and confirmed coins.

This is the balance you can spend right now that shouldn’t get cancelled via another party double spending it.

-

Get the whole balance visible to the wallet.

-

Trait Implementations§

The resulting type after applying the + operator.
Performs the + operation. 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
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
Formats the value using the given formatter. Read more
This method tests for self and other values to be equal, and is used +

Get the whole balance visible to the wallet.

+

Trait Implementations§

The resulting type after applying the + operator.
Performs the + operation. 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
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
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 !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

+sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.ChangeSet.html index 6d0136e682..429873cd7c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.ChangeSet.html @@ -1,15 +1,21 @@ -ChangeSet in bdk_chain::keychain - Rust

Struct bdk_chain::keychain::ChangeSet

source ·
pub struct ChangeSet<K>(pub BTreeMap<K, u32>);
Expand description

Represents updates to the derivation index of a KeychainTxOutIndex. -It maps each keychain K to its last revealed index.

-

It can be applied to KeychainTxOutIndex with apply_changeset. ChangeSets are +ChangeSet in bdk_chain::keychain - Rust

Struct bdk_chain::keychain::ChangeSet

source ·
pub struct ChangeSet<K> {
+    pub keychains_added: BTreeMap<K, Descriptor<DescriptorPublicKey>>,
+    pub last_revealed: BTreeMap<DescriptorId, u32>,
+}
Expand description

Represents updates to the derivation index of a KeychainTxOutIndex. +It maps each keychain K to a descriptor and its last revealed index.

+

It can be applied to KeychainTxOutIndex with apply_changeset. `ChangeSet are monotone in that they will never decrease the revealed derivation index.

-

Tuple Fields§

§0: BTreeMap<K, u32>

Implementations§

Get the inner map of the keychain to its new derivation index.

-

Trait Implementations§

Append another ChangeSet into self.

-

If the keychain already exists, increase the index when the other’s index > self’s index. -If the keychain did not exist, append the new keychain.

-

Returns whether the changeset are empty.

-
Converts this type into a shared reference of the (usually inferred) input type.
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
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
This method tests for self and other values to be equal, and is used +

Fields§

§keychains_added: BTreeMap<K, Descriptor<DescriptorPublicKey>>

Contains the keychains that have been added and their respective descriptor

+
§last_revealed: BTreeMap<DescriptorId, u32>

Contains for each descriptor_id the last revealed index of derivation

+

Trait Implementations§

Append another ChangeSet into self.

+

For each keychain in keychains_added in the given ChangeSet: +If the keychain already exist with a different descriptor, we overwrite the old descriptor.

+

For each last_revealed in the given ChangeSet: +If the keychain already exists, increase the index when the other’s index > self’s index.

+

Returns whether the changeset are empty.

+
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
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

+sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.KeychainTxOutIndex.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.KeychainTxOutIndex.html index 31a0dd239b..23a70db66f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.KeychainTxOutIndex.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.KeychainTxOutIndex.html @@ -1,4 +1,4 @@ -KeychainTxOutIndex in bdk_chain::keychain - Rust
pub struct KeychainTxOutIndex<K> { /* private fields */ }
Expand description

KeychainTxOutIndex controls how script pubkeys are revealed for multiple keychains, and +KeychainTxOutIndex in bdk_chain::keychain - Rust

pub struct KeychainTxOutIndex<K> { /* private fields */ }
Expand description

KeychainTxOutIndex controls how script pubkeys are revealed for multiple keychains, and indexes [TxOut]s with them.

A single keychain is a chain of script pubkeys derived from a single Descriptor. Keychains are identified using the K generic. Script pubkeys are identified by the keychain that they @@ -25,7 +25,7 @@ unbounded script pubkey iterator is useful to pass to such a chain source.

Call unbounded_spk_iter to get an unbounded script pubkey iterator for a given keychain. Call all_unbounded_spk_iters to get unbounded script pubkey iterators for all keychains.

Change sets

-

Methods that can update the last revealed index will return super::ChangeSet to report +

Methods that can update the last revealed index or add keychains will return super::ChangeSet to report these changes. This can be persisted for future recovery.

Synopsis

use bdk_chain::keychain::KeychainTxOutIndex;
@@ -42,12 +42,35 @@ these changes. This can be persisted for future recovery.

let mut txout_index = KeychainTxOutIndex::<MyKeychain>::default(); -txout_index.add_keychain(MyKeychain::External, external_descriptor); -txout_index.add_keychain(MyKeychain::Internal, internal_descriptor); -txout_index.add_keychain(MyKeychain::MyAppUser { user_id: 42 }, descriptor_for_user_42); +let _ = txout_index.insert_descriptor(MyKeychain::External, external_descriptor); +let _ = txout_index.insert_descriptor(MyKeychain::Internal, internal_descriptor); +let _ = txout_index.insert_descriptor(MyKeychain::MyAppUser { user_id: 42 }, descriptor_42); let new_spk_for_user = txout_index.reveal_next_spk(&MyKeychain::MyAppUser{ user_id: 42 });
-

Implementations§

Construct a KeychainTxOutIndex with the given lookahead.

+

Non-recommend keychain to descriptor assignments

+

A keychain (K) is used to identify a descriptor. However, the following keychain to descriptor +arrangements result in behavior that is harder to reason about and is not recommended.

+

Multiple keychains identifying the same descriptor

+

Although a single keychain variant can only identify a single descriptor, multiple keychain +variants can identify the same descriptor.

+

If multiple keychains identify the same descriptor:

+
    +
  1. Methods that take in a keychain (such as reveal_next_spk) will work normally when any +keychain (that identifies that descriptor) is passed in.
  2. +
  3. Methods that return data which associates with a descriptor (such as outpoints, +txouts, unused_spks, etc.) the method will return the highest-ranked keychain variant +that identifies the descriptor. Rank is determined by the Ord implementation of the keychain +type.
  4. +
+

This arrangement is not recommended since some methods will return a single keychain variant +even though multiple keychain variants identify the same descriptor.

+

Reassigning the descriptor of a single keychain

+

Descriptors added to KeychainTxOutIndex are never removed. However, a keychain that +identifies a descriptor can be reassigned to identify a different descriptor. This may result in +a situation where a descriptor has no associated keychain(s), and relevant [TxOut]s, +[OutPoint]s and [Script]s (of that descriptor) will not be return by KeychainTxOutIndex. +Therefore, reassigning the descriptor of a single keychain is not recommended.

+

Implementations§

Construct a KeychainTxOutIndex with the given lookahead.

The lookahead is the number of script pubkeys to derive and cache from the internal descriptors over and above the last revealed script index. Without a lookahead the index will miss outputs you own when processing transactions whose output script pubkeys lie @@ -55,65 +78,71 @@ beyond the last revealed index. In certain situations, such as when performing a scan of the blockchain during wallet import, it may be uncertain or unknown what the index of the last revealed script pubkey actually is.

Refer to struct-level docs for more about lookahead.

-

Methods that are re-exposed from the internal SpkTxOutIndex.

-

Return a reference to the internal SpkTxOutIndex.

+

Methods that are re-exposed from the internal SpkTxOutIndex.

+

Return a reference to the internal SpkTxOutIndex.

WARNING: The internal index will contain lookahead spks. Refer to struct-level docs for more about lookahead.

-

Get a reference to the set of indexed outpoints.

-

Iterate over known txouts that spend to tracked script pubkeys.

-

Finds all txouts on a transaction that has previously been scanned and indexed.

-

Return the [TxOut] of outpoint if it has been indexed.

+

Get the set of indexed outpoints, corresponding to tracked keychains.

+

Iterate over known txouts that spend to tracked script pubkeys.

+

Finds all txouts on a transaction that has previously been scanned and indexed.

+

Return the [TxOut] of outpoint if it has been indexed, and if it corresponds to a +tracked keychain.

The associated keychain and keychain index of the txout’s spk is also returned.

This calls SpkTxOutIndex::txout internally.

-

Return the script that exists under the given keychain’s index.

+

Return the script that exists under the given keychain’s index.

This calls SpkTxOutIndex::spk_at_index internally.

-

Returns the keychain and keychain index associated with the spk.

+

Returns the keychain and keychain index associated with the spk.

This calls SpkTxOutIndex::index_of_spk internally.

-

Returns whether the spk under the keychain’s index has been used.

+

Returns whether the spk under the keychain’s index has been used.

Here, “unused” means that after the script pubkey was stored in the index, the index has never scanned a transaction output with it.

This calls SpkTxOutIndex::is_used internally.

-

Marks the script pubkey at index as used even though the tracker hasn’t seen an output +

Marks the script pubkey at index as used even though the tracker hasn’t seen an output with it.

This only has an effect when the index had been added to self already and was unused.

-

Returns whether the index was initially present as unused.

+

Returns whether the spk under the given keychain and index is successfully +marked as used. Returns false either when there is no descriptor under the given +keychain, or when the spk is already marked as used.

This is useful when you want to reserve a script pubkey for something but don’t want to add the transaction output using it to the index yet. Other callers will consider index on keychain used until you call unmark_used.

This calls SpkTxOutIndex::mark_used internally.

-

Undoes the effect of mark_used. Returns whether the index is inserted back into +

Undoes the effect of mark_used. Returns whether the index is inserted back into unused.

Note that if self has scanned an output with this script pubkey, then this will have no effect.

This calls SpkTxOutIndex::unmark_used internally.

-

Computes the total value transfer effect tx has on the script pubkeys belonging to the +

Computes the total value transfer effect tx has on the script pubkeys belonging to the keychains in range. Value is sent when a script pubkey in the range is on an input and received when it is on an output. For sent to be computed correctly, the output being spent must have already been scanned by the index. Calculating received just uses the [Transaction] outputs directly, so it will be correct even if it has not been scanned.

-

Computes the net value that this transaction gives to the script pubkeys in the index and +

Computes the net value that this transaction gives to the script pubkeys in the index and takes from the transaction outputs in the index. Shorthand for calling sent_and_received and subtracting sent from received.

This calls SpkTxOutIndex::net_value internally.

-

Return a reference to the internal map of keychain to descriptors.

-

Add a keychain to the tracker’s txout_index with a descriptor to derive addresses.

-

Adding a keychain means you will be able to derive new script pubkeys under that keychain +

Return the map of the keychain to descriptors.

+

Insert a descriptor with a keychain associated to it.

+

Adding a descriptor means you will be able to derive new script pubkeys under it and the txout index will discover transaction outputs with those script pubkeys.

-
Panics
-

This will panic if a different descriptor is introduced to the same keychain.

-

Get the lookahead setting.

+

When trying to add a keychain that already existed under a different descriptor, or a descriptor +that already existed with a different keychain, the old keychain (or descriptor) will be +overwritten.

+

Gets the descriptor associated with the keychain. Returns None if the keychain doesn’t +have a descriptor associated with it.

+

Get the lookahead setting.

Refer to new for more information on the lookahead.

-

Store lookahead scripts until target_index (inclusive).

+

Store lookahead scripts until target_index (inclusive).

This does not change the global lookahead setting.

-

Get an unbounded spk iterator over a given keychain.

-
Panics
-

This will panic if the given keychain’s descriptor does not exist.

-

Get unbounded spk iterators for all keychains.

-

Iterate over revealed spks of keychains in range

-

Iterate over revealed spks of the given keychain.

-

Iterate over revealed, but unused, spks of all keychains.

-

Iterate over revealed, but unused, spks of the given keychain.

-

Get the next derivation index for keychain. The next index is the index after the last revealed +

Get an unbounded spk iterator over a given keychain. Returns None if the provided +keychain doesn’t exist

+

Get unbounded spk iterators for all keychains.

+

Iterate over revealed spks of keychains in range

+

Iterate over revealed spks of the given keychain.

+

Iterate over revealed, but unused, spks of all keychains.

+

Iterate over revealed, but unused, spks of the given keychain. +Returns an empty iterator if the provided keychain doesn’t exist.

+

Get the next derivation index for keychain. The next index is the index after the last revealed derivation index.

The second field in the returned tuple represents whether the next derivation index is new. There are two scenarios where the next derivation index is reused (not new):

@@ -122,13 +151,13 @@ There are two scenarios where the next derivation index is reused (not new):

  • The number of revealed scripts has already reached 2^31 (refer to BIP-32).
  • Not checking the second field of the tuple may result in address reuse.

    -
    Panics
    -

    Panics if the keychain does not exist.

    -

    Get the last derivation index that is revealed for each keychain.

    +

    Returns None if the provided keychain doesn’t exist.

    +

    Get the last derivation index that is revealed for each keychain.

    Keychains with no revealed indices will not be included in the returned BTreeMap.

    -

    Get the last derivation index revealed for keychain.

    -

    Convenience method to call Self::reveal_to_target on multiple keychains.

    -

    Reveals script pubkeys of the keychain’s descriptor up to and including the +

    Get the last derivation index revealed for keychain. Returns None if the keychain doesn’t +exist, or if the keychain doesn’t have any revealed scripts.

    +

    Convenience method to call Self::reveal_to_target on multiple keychains.

    +

    Reveals script pubkeys of the keychain’s descriptor up to and including the target_index.

    If the target_index cannot be reached (due to the descriptor having no wildcard and/or the target_index is in the hardened index range), this method will make a best-effort and @@ -136,38 +165,42 @@ reveal up to the last possible index.

    This returns an iterator of newly revealed indices (alongside their scripts) and a super::ChangeSet, which reports updates to the latest revealed index. If no new script pubkeys are revealed, then both of these will be empty.

    -
    Panics
    -

    Panics if keychain does not exist.

    -

    Attempts to reveal the next script pubkey for keychain.

    +

    Returns None if the provided keychain doesn’t exist.

    +

    Attempts to reveal the next script pubkey for keychain.

    Returns the derivation index of the revealed script pubkey, the revealed script pubkey and a -super::ChangeSet which represents changes in the last revealed index (if any).

    +super::ChangeSet which represents changes in the last revealed index (if any). +Returns None if the provided keychain doesn’t exist.

    When a new script cannot be revealed, we return the last revealed script and an empty super::ChangeSet. There are two scenarios when a new script pubkey cannot be derived:

    1. The descriptor has no wildcard and already has one script revealed.
    2. The descriptor has already revealed scripts up to the numeric bound.
    3. +
    4. There is no descriptor associated with the given keychain.
    -
    Panics
    -

    Panics if the keychain does not exist.

    -

    Gets the next unused script pubkey in the keychain. I.e., the script pubkey with the lowest +

    Gets the next unused script pubkey in the keychain. I.e., the script pubkey with the lowest index that has not been used yet.

    This will derive and reveal a new script pubkey if no more unused script pubkeys exist.

    If the descriptor has no wildcard and already has a used script pubkey or if a descriptor has used all scripts up to the derivation bounds, then the last derived script pubkey will be returned.

    -
    Panics
    -

    Panics if keychain has never been added to the index

    -

    Iterate over all [OutPoint]s that have TxOuts with script pubkeys derived from +

    Returns None if the provided keychain doesn’t exist.

    +

    Iterate over all [OutPoint]s that have TxOuts with script pubkeys derived from keychain.

    -

    Iterate over [OutPoint]s that have script pubkeys derived from keychains in range.

    -

    Returns the highest derivation index of the keychain where KeychainTxOutIndex has +

    Iterate over [OutPoint]s that have script pubkeys derived from keychains in range.

    +

    Returns the highest derivation index of the keychain where KeychainTxOutIndex has found a [TxOut] with it’s script pubkey.

    -

    Returns the highest derivation index of each keychain that KeychainTxOutIndex has found +

    Returns the highest derivation index of each keychain that KeychainTxOutIndex has found a [TxOut] with it’s script pubkey.

    -

    Applies the derivation changeset to the KeychainTxOutIndex, extending the number of -derived scripts per keychain, as specified in the changeset.

    -

    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
    The resultant “changeset” when new transaction data is indexed.
    Scan and index the given outpoint and txout.
    Scans a transaction for relevant outpoints, which are stored and indexed internally.
    Determines the ChangeSet between self and an empty Indexer.
    Apply changeset to itself.
    Determines whether the transaction should be included in the index.

    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 argument unchanged.

    +

    Applies the derivation changeset to the KeychainTxOutIndex, as specified in the +ChangeSet::append documentation:

    +
      +
    • Extends the number of derived scripts per keychain
    • +
    • Adds new descriptors introduced
    • +
    • If a descriptor is introduced for a keychain that already had a descriptor, overwrites +the old descriptor
    • +
    +

    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
    The resultant “changeset” when new transaction data is indexed.
    Scan and index the given outpoint and txout.
    Scans a transaction for relevant outpoints, which are stored and indexed internally.
    Determines the ChangeSet between self and an empty Indexer.
    Apply changeset to itself.
    Determines whether the transaction should be included in the index.

    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 argument unchanged.

    Calls U::from(self).

    That is, this conversion is whatever the implementation of From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    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 +
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    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_chain/keychain/txout_index/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/txout_index/struct.ChangeSet.html new file mode 100644 index 0000000000..e4f37f8766 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/txout_index/struct.ChangeSet.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../bdk_chain/keychain/struct.ChangeSet.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js index c8aa264eb7..196f98791e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["BIP32_MAX_INDEX","Maximum BIP32 derivation index."],["COINBASE_MATURITY","How many confirmations are needed f or a coinbase output to be spent."]],"enum":[["ChainPosition","Represents the observed position of some chain data."],["ConfirmationTime","Block height and timestamp at which a transaction is confirmed."]],"externcrate":[["serde",""]],"mod":[["indexed_tx_graph","Contains the [`IndexedTxGraph`] and associated types. Refer to the [`IndexedTxGraph`] documentation for more."],["keychain","Module for keychain related structures."],["local_chain","The [`LocalChain`] is a local implementation of [`ChainOracle`]."],["spk_client","Helper types for spk-based blockchain clients."],["tx_graph","Module for structures that store and traverse transactions."]],"struct":[["BlockId","A reference to a block in the canonical chain."],["ConfirmationHeightAnchor","An [`Anchor`] implementation that also records the exact confirmation height of the transaction."],["ConfirmationTimeHeightAnchor","An [`Anchor`] implementation that also records the exact confirmation time and height of the transaction."],["FullTxOut","A `TxOut` with as much data as we can retrieve about it"],["SpkIterator","An iterator for derived script pubkeys."],["SpkTxOutIndex","An index storing `TxOut`s that have a script pubkey that matches those in a list."]],"trait":[["Anchor","Trait that “anchors” blockchain data to a specific block of height and hash."],["AnchorFromBlockPosition","An [`Anchor`] that can be constructed from a given block, block height and transaction position within the block."],["Append","Trait that makes an object appendable."],["ChainOracle","Represents a service that tracks the blockchain."],["DescriptorExt","A trait to extend the functionality of a miniscript descriptor."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":[["BIP32_MAX_INDEX","Maximum BIP32 derivation index."],["COINBASE_MATURITY","How many confirmations are needed f or a coinbase output to be spent."]],"enum":[["ChainPosition","Represents the observed position of some chain data."],["ConfirmationTime","Block height and timestamp at which a transaction is confirmed."]],"externcrate":[["serde",""]],"mod":[["indexed_tx_graph","Contains the [`IndexedTxGraph`] and associated types. Refer to the [`IndexedTxGraph`] documentation for more."],["keychain","Module for keychain related structures."],["local_chain","The [`LocalChain`] is a local implementation of [`ChainOracle`]."],["spk_client","Helper types for spk-based blockchain clients."],["tx_graph","Module for structures that store and traverse transactions."]],"struct":[["BlockId","A reference to a block in the canonical chain."],["ConfirmationHeightAnchor","An [`Anchor`] implementation that also records the exact confirmation height of the transaction."],["ConfirmationTimeHeightAnchor","An [`Anchor`] implementation that also records the exact confirmation time and height of the transaction."],["DescriptorId","Represents the ID of a descriptor, defined as the sha256 hash of the descriptor string, checksum excluded."],["FullTxOut","A `TxOut` with as much data as we can retrieve about it"],["SpkIterator","An iterator for derived script pubkeys."],["SpkTxOutIndex","An index storing `TxOut`s that have a script pubkey that matches those in a list."]],"trait":[["Anchor","Trait that “anchors” blockchain data to a specific block of height and hash."],["AnchorFromBlockPosition","An [`Anchor`] that can be constructed from a given block, block height and transaction position within the block."],["Append","Trait that makes an object appendable."],["ChainOracle","Represents a service that tracks the blockchain."],["DescriptorExt","A trait to extend the functionality of a miniscript descriptor."]]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html new file mode 100644 index 0000000000..7a2973b514 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html @@ -0,0 +1,21 @@ +DescriptorId in bdk_chain - Rust

    Struct bdk_chain::DescriptorId

    source ·
    pub struct DescriptorId(pub Hash);
    Expand description

    Represents the ID of a descriptor, defined as the sha256 hash of +the descriptor string, checksum excluded.

    +

    This is useful for having a fixed-length unique representation of a descriptor, +in particular, we use it to persist application state changes related to the +descriptor without having to re-write the whole descriptor each time.

    +

    Tuple Fields§

    §0: Hash

    Implementations§

    Creates this wrapper type from the inner hash type.

    +

    Returns the inner hash (sha256, sh256d etc.).

    +

    Returns a reference to the inner hash (sha256, sh256d etc.).

    +

    Trait Implementations§

    Converts this type into a shared reference of the (usually inferred) input type.
    Converts this type into a shared reference of the (usually inferred) input type.
    Immutably borrows from an owned value. 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
    Deserialize this value from the given Serde deserializer. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    The associated error which can be returned from parsing.
    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
    A hashing engine which bytes can be serialized into. It is expected +to implement the io::Write trait, and to never return errors under +any conditions. Read more
    The byte array that represents the hash internally.
    Length of the hash, in bytes.
    Flag indicating whether user-visible serializations of this hash +should be backward. For some reason Satoshi decided this should be +true for Sha256dHash, so here we are. Read more
    Constructs a new engine.
    Produces a hash from the current state of a given engine.
    Copies a byte slice into a hash object.
    Constructs a hash from the underlying byte array.
    Returns the underlying byte array.
    Returns a reference to the underlying byte array.
    Returns an all zero hash. Read more
    Hashes some bytes.
    The returned type after indexing.
    Performs the indexing (container[index]) operation. Read more
    Formats the value using the given formatter.
    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 !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason. 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
    Size, in bits, of the hash.
    Helper function to turn a deserialized slice into the correct hash type.
    Do serde serialization.
    Do serde deserialization.
    Serialize this value into the given Serde serializer. Read more
    Formats the value using the given formatter.

    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 argument unchanged.

    +

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. 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_chain/trait.Append.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Append.html index 193aa14888..9300715f65 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Append.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Append.html @@ -4,4 +4,4 @@ }
    Expand description

    Trait that makes an object appendable.

    Required Methods§

    Append another object of the same type onto self.

    Returns whether the structure is considered empty.

    -

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file +

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.DescriptorExt.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.DescriptorExt.html index b720b2b97d..6590549902 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.DescriptorExt.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.DescriptorExt.html @@ -1,6 +1,9 @@ -DescriptorExt in bdk_chain - Rust

    Trait bdk_chain::DescriptorExt

    source ·
    pub trait DescriptorExt {
    +DescriptorExt in bdk_chain - Rust

    Trait bdk_chain::DescriptorExt

    source ·
    pub trait DescriptorExt {
         fn dust_value(&self) -> u64;
    +    fn descriptor_id(&self) -> DescriptorId;
     }
    Expand description

    A trait to extend the functionality of a miniscript descriptor.

    -

    Required Methods§

    Returns the minimum value (in satoshis) at which an output is broadcastable. +

    Required Methods§

    Returns the minimum value (in satoshis) at which an output is broadcastable. Panics if the descriptor wildcard is hardened.

    -

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file +

    Returns the descriptor id, calculated as the sha256 of the descriptor, checksum not +included.

    +

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html index e06573eb59..ab39230a70 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html @@ -18,7 +18,7 @@ confirm or exclude these anchors.

    Transform the ChangeSet to have Anchors of another type.

    This takes in a closure of signature FnMut(A) -> A2 which is called for each Anchor to transform it.

    -

    Trait Implementations§

    Append another object of the same type onto self.
    Returns whether the structure is considered empty.
    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
    Deserialize this value from the given Serde deserializer. Read more
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used +

    Trait Implementations§

    Append another object of the same type onto self.
    Returns whether the structure is considered empty.
    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
    Deserialize this value from the given Serde deserializer. Read more
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used by ==. Read more
    This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. 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

    Returns the argument unchanged.

    Calls U::from(self).

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html index cacf4366b1..93c49240ed 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html @@ -1 +1 @@ -ChangeSet in example_bitcoind_rpc_polling - Rust

    Type Definition example_bitcoind_rpc_polling::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<Keychain>>);
    \ No newline at end of file +ChangeSet in example_bitcoind_rpc_polling - Rust
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.create_tx.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.create_tx.html index 2ed1ff2e7e..4649b94070 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.create_tx.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.create_tx.html @@ -1 +1 @@ -create_tx in example_cli - Rust

    Function example_cli::create_tx

    source ·
    pub fn create_tx<A: Anchor, O: ChainOracle>(
        graph: &mut KeychainTxGraph<A>,
        chain: &O,
        keymap: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>,
        cs_algorithm: CoinSelectionAlgo,
        address: Address,
        value: u64
    ) -> Result<(Transaction, Option<CreateTxChange>)>where
        O::Error: Error + Send + Sync + 'static,
    \ No newline at end of file +create_tx in example_cli - Rust

    Function example_cli::create_tx

    source ·
    pub fn create_tx<A: Anchor, O: ChainOracle>(
        graph: &mut KeychainTxGraph<A>,
        chain: &O,
        keymap: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>,
        cs_algorithm: CoinSelectionAlgo,
        address: Address,
        value: u64
    ) -> Result<(Transaction, Option<CreateTxChange>)>where
        O::Error: Error + Send + Sync + 'static,
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.handle_commands.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.handle_commands.html index 0a31c34bd5..4f276f4c26 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.handle_commands.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.handle_commands.html @@ -1 +1 @@ -handle_commands in example_cli - Rust

    Function example_cli::handle_commands

    source ·
    pub fn handle_commands<CS: Subcommand, S: Args, A: Anchor, O: ChainOracle, C>(
        graph: &Mutex<KeychainTxGraph<A>>,
        db: &Mutex<Persist<C>>,
        chain: &Mutex<O>,
        keymap: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>,
        network: Network,
        broadcast: impl FnOnce(S, &Transaction) -> Result<()>,
        cmd: Commands<CS, S>
    ) -> Result<()>where
        O::Error: Error + Send + Sync + 'static,
        C: Default + Append + DeserializeOwned + Serialize + From<KeychainChangeSet<A>>,
    \ No newline at end of file +handle_commands in example_cli - Rust

    Function example_cli::handle_commands

    source ·
    pub fn handle_commands<CS: Subcommand, S: Args, A: Anchor, O: ChainOracle, C>(
        graph: &Mutex<KeychainTxGraph<A>>,
        db: &Mutex<Persist<C>>,
        chain: &Mutex<O>,
        keymap: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>,
        network: Network,
        broadcast: impl FnOnce(S, &Transaction) -> Result<()>,
        cmd: Commands<CS, S>
    ) -> Result<()>where
        O::Error: Error + Send + Sync + 'static,
        C: Default + Append + DeserializeOwned + Serialize + From<KeychainChangeSet<A>>,
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.init.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.init.html index ce258a935a..695a818526 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.init.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.init.html @@ -1,3 +1,3 @@ -init in example_cli - Rust

    Function example_cli::init

    source ·
    pub fn init<CS: Subcommand, S: Args, C>(
        db_magic: &[u8],
        db_default_path: &str
    ) -> Result<Init<CS, S, C>>where
        C: Default + Append + Serialize + DeserializeOwned + Send + Sync + 'static,
    Expand description

    Parses command line arguments and initializes all components, creating +init in example_cli - Rust

    Function example_cli::init

    source ·
    pub fn init<CS: Subcommand, S: Args, C>(
        db_magic: &[u8],
        db_default_path: &str
    ) -> Result<Init<CS, S, C>>where
        C: Default + Append + Serialize + DeserializeOwned + Send + Sync + 'static,
    Expand description

    Parses command line arguments and initializes all components, creating a file store with the given parameters, or loading one if it exists.

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.planned_utxos.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.planned_utxos.html index bbeb908988..a6a5a5e716 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.planned_utxos.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.planned_utxos.html @@ -1 +1 @@ -planned_utxos in example_cli - Rust

    Function example_cli::planned_utxos

    source ·
    pub fn planned_utxos<A: Anchor, O: ChainOracle, K: Clone + CanDerive>(
        graph: &KeychainTxGraph<A>,
        chain: &O,
        assets: &Assets<K>
    ) -> Result<Vec<PlannedUtxo<K, A>>, O::Error>
    \ No newline at end of file +planned_utxos in example_cli - Rust

    Function example_cli::planned_utxos

    source ·
    pub fn planned_utxos<A: Anchor, O: ChainOracle, K: Clone + CanDerive>(
        graph: &KeychainTxGraph<A>,
        chain: &O,
        assets: &Assets<K>
    ) -> Result<Vec<PlannedUtxo<K, A>>, O::Error>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html index 7af8049ab0..65248be987 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html @@ -1,2 +1,2 @@ -example_cli - Rust

    Crate example_cli

    source ·

    Re-exports

    pub use anyhow;
    pub use bdk_file_store;
    pub use clap;

    Structs

    The initial state returned by init.

    Enums

    Functions

    Parses command line arguments and initializes all components, creating +example_cli - Rust

    Crate example_cli

    source ·

    Re-exports

    pub use anyhow;
    pub use bdk_file_store;
    pub use clap;

    Structs

    The initial state returned by init.

    Enums

    Functions

    Parses command line arguments and initializes all components, creating a file store with the given parameters, or loading one if it exists.

    Type Definitions

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html index 69309dc374..0d5bfa7f3d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html @@ -1,8 +1,8 @@ CreateTxChange in example_cli - Rust
    pub struct CreateTxChange {
    -    pub index_changeset: ChangeSet<Keychain>,
    +    pub index_changeset: ChangeSet<Keychain>,
         pub change_keychain: Keychain,
         pub index: u32,
    -}

    Fields§

    §index_changeset: ChangeSet<Keychain>§change_keychain: Keychain§index: u32

    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 argument unchanged.

    +}

    Fields§

    §index_changeset: ChangeSet<Keychain>§change_keychain: Keychain§index: u32

    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 argument unchanged.

    Calls U::from(self).

    That is, this conversion is whatever the implementation of From<T> for U chooses to do.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Init.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Init.html index 49079d2820..f0b9568fa2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Init.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Init.html @@ -1,4 +1,4 @@ -Init in example_cli - Rust

    Struct example_cli::Init

    source ·
    pub struct Init<CS: Subcommand, S: Args, C> {
    +Init in example_cli - Rust

    Struct example_cli::Init

    source ·
    pub struct Init<CS: Subcommand, S: Args, C> {
         pub args: Args<CS, S>,
         pub keymap: KeyMap,
         pub index: KeychainTxOutIndex<Keychain>,
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html
    index ce1d1b7f7e..7f3f8999d1 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html
    @@ -1 +1 @@
    -KeychainChangeSet in example_cli - Rust

    Type Definition example_cli::KeychainChangeSet

    source ·
    pub type KeychainChangeSet<A> = (ChangeSet, ChangeSet<A, ChangeSet<Keychain>>);
    \ No newline at end of file +KeychainChangeSet in example_cli - Rust

    Type Definition example_cli::KeychainChangeSet

    source ·
    pub type KeychainChangeSet<A> = (ChangeSet, ChangeSet<A, ChangeSet<Keychain>>);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.PlannedUtxo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.PlannedUtxo.html index 11ed4c16d7..120288d032 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.PlannedUtxo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.PlannedUtxo.html @@ -1 +1 @@ -PlannedUtxo in example_cli - Rust

    Type Definition example_cli::PlannedUtxo

    source ·
    pub type PlannedUtxo<K, A> = (Plan<K>, FullTxOut<A>);
    \ No newline at end of file +PlannedUtxo in example_cli - Rust

    Type Definition example_cli::PlannedUtxo

    source ·
    pub type PlannedUtxo<K, A> = (Plan<K>, FullTxOut<A>);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/type.ChangeSet.html index b17942f23e..df44683303 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/type.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/type.ChangeSet.html @@ -1 +1 @@ -ChangeSet in example_electrum - Rust

    Type Definition example_electrum::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationHeightAnchor, ChangeSet<Keychain>>);
    \ No newline at end of file +ChangeSet in example_electrum - Rust

    Type Definition example_electrum::ChangeSet

    source ·
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html index 9557ace9cb..e99a895001 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html @@ -1 +1 @@ -ChangeSet in example_esplora - Rust

    Type Definition example_esplora::ChangeSet

    source ·
    \ No newline at end of file +ChangeSet in example_esplora - Rust

    Type Definition example_esplora::ChangeSet

    source ·
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/serde_macros/serde_details/trait.SerdeHash.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/serde_macros/serde_details/trait.SerdeHash.js new file mode 100644 index 0000000000..01ce8781c2 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/serde_macros/serde_details/trait.SerdeHash.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl SerdeHash for DescriptorId"]] +};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/implementors/bitcoin_hashes/trait.Hash.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/trait.Hash.js new file mode 100644 index 0000000000..feda1f6314 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/trait.Hash.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl Hash for DescriptorId"]] +};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/implementors/core/borrow/trait.Borrow.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/borrow/trait.Borrow.js new file mode 100644 index 0000000000..06ec974d68 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/borrow/trait.Borrow.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl Borrow<[u8]> for DescriptorId"]] +};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/implementors/core/clone/trait.Clone.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/clone/trait.Clone.js index 59732a615c..0b20d9b531 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/clone/trait.Clone.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/clone/trait.Clone.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk":[["impl Clone for PkOrF"],["impl Clone for SatisfiableItem"],["impl Clone for Satisfaction"],["impl Clone for Policy"],["impl Clone for Condition"],["impl<'a> Clone for BuildSatisfaction<'a>"],["impl Clone for ScriptContextEnum"],["impl<K: Clone, Ctx: ScriptContext> Clone for GeneratedKey<K, Ctx>"],["impl Clone for PrivateKeyGenerateOptions"],["impl Clone for KeychainKind"],["impl Clone for LocalOutput"],["impl Clone for WeightedUtxo"],["impl Clone for Utxo"],["impl Clone for LargestFirstCoinSelection"],["impl Clone for OldestFirstCoinSelection"],["impl Clone for BranchAndBoundCoinSelection"],["impl Clone for SignerId"],["impl Clone for SignerContext"],["impl<S: Clone + Sized + Debug + Clone> Clone for SignerWrapper<S>"],["impl Clone for SignerOrdering"],["impl Clone for SignersContainer"],["impl Clone for SignOptions"],["impl Clone for TapLeavesOptions"],["impl Clone for CreateTx"],["impl Clone for BumpFee"],["impl<'a, Cs: Clone, Ctx> Clone for TxBuilder<'a, Cs, Ctx>"],["impl Clone for TxOrdering"],["impl Clone for ChangeSpendPolicy"],["impl Clone for MiniscriptPsbtError"],["impl Clone for Update"],["impl Clone for ChangeSet"]], -"bdk_chain":[["impl<I: Clone> Clone for SpkTxOutIndex<I>"],["impl<A: Clone> Clone for ChainPosition<A>"],["impl Clone for ConfirmationTime"],["impl Clone for BlockId"],["impl Clone for ConfirmationHeightAnchor"],["impl Clone for ConfirmationTimeHeightAnchor"],["impl<A: Clone> Clone for FullTxOut<A>"],["impl<A: Clone, IA: Clone> Clone for ChangeSet<A, IA>"],["impl<K: Clone> Clone for KeychainTxOutIndex<K>"],["impl<K: Clone> Clone for ChangeSet<K>"],["impl Clone for Balance"],["impl Clone for CheckPoint"],["impl Clone for LocalChain"],["impl Clone for MissingGenesisError"],["impl Clone for AlterCheckPointError"],["impl Clone for CannotConnectError"],["impl Clone for ApplyHeaderError"],["impl<A: Clone> Clone for TxGraph<A>"],["impl<'a, T: Clone, A: Clone> Clone for TxNode<'a, T, A>"],["impl<'a, T: Clone, A: Clone> Clone for CanonicalTx<'a, T, A>"],["impl<A: Clone> Clone for ChangeSet<A>"],["impl<D: Clone> Clone for SpkIterator<D>"]], +"bdk_chain":[["impl<I: Clone> Clone for SpkTxOutIndex<I>"],["impl<A: Clone> Clone for ChainPosition<A>"],["impl Clone for ConfirmationTime"],["impl Clone for BlockId"],["impl Clone for ConfirmationHeightAnchor"],["impl Clone for ConfirmationTimeHeightAnchor"],["impl<A: Clone> Clone for FullTxOut<A>"],["impl<A: Clone, IA: Clone> Clone for ChangeSet<A, IA>"],["impl<K: Clone> Clone for ChangeSet<K>"],["impl<K: Clone> Clone for KeychainTxOutIndex<K>"],["impl Clone for Balance"],["impl Clone for CheckPoint"],["impl Clone for LocalChain"],["impl Clone for MissingGenesisError"],["impl Clone for AlterCheckPointError"],["impl Clone for CannotConnectError"],["impl Clone for ApplyHeaderError"],["impl<A: Clone> Clone for TxGraph<A>"],["impl<'a, T: Clone, A: Clone> Clone for TxNode<'a, T, A>"],["impl<'a, T: Clone, A: Clone> Clone for CanonicalTx<'a, T, A>"],["impl<A: Clone> Clone for ChangeSet<A>"],["impl Clone for DescriptorId"],["impl<D: Clone> Clone for SpkIterator<D>"]], "bdk_coin_select":[["impl Clone for WeightedValue"],["impl Clone for CoinSelectorOpt"],["impl<'a> Clone for CoinSelector<'a>"],["impl Clone for SelectionError"],["impl Clone for SelectionConstraint"],["impl Clone for Selection"],["impl Clone for ExcessStrategyKind"],["impl Clone for ExcessStrategy"]], "bdk_electrum":[["impl Clone for RelevantTxids"]], "bdk_tmp_plan":[["impl<Ak: Clone> Clone for Requirements<Ak>"],["impl<Ak: Clone> Clone for RequiredSignatures<Ak>"],["impl Clone for SigningError"],["impl<Ak: Clone> Clone for PlanKey<Ak>"],["impl<AK: Clone> Clone for Plan<AK>"],["impl Clone for SatisfactionMaterial"],["impl<K: Clone> Clone for Assets<K>"]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Eq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Eq.js index 3683ac7164..92840f6f30 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Eq.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Eq.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk":[["impl Eq for PkOrF"],["impl Eq for SatisfiableItem"],["impl Eq for Satisfaction"],["impl Eq for Policy"],["impl Eq for Condition"],["impl Eq for PolicyError"],["impl Eq for ScriptContextEnum"],["impl Eq for KeychainKind"],["impl Eq for LocalOutput"],["impl Eq for WeightedUtxo"],["impl Eq for Utxo"],["impl Eq for SignerId"],["impl Eq for SignerContext"],["impl Eq for SignerOrdering"],["impl Eq for TapLeavesOptions"],["impl Eq for TxOrdering"],["impl Eq for ChangeSpendPolicy"],["impl Eq for AddressInfo"]], -"bdk_chain":[["impl<A: Eq> Eq for ChainPosition<A>"],["impl Eq for ConfirmationTime"],["impl Eq for BlockId"],["impl Eq for ConfirmationHeightAnchor"],["impl Eq for ConfirmationTimeHeightAnchor"],["impl<A: Eq> Eq for FullTxOut<A>"],["impl Eq for Balance"],["impl<'a, T: Eq, A: Eq> Eq for TxNode<'a, T, A>"],["impl<'a, T: Eq, A: Eq> Eq for CanonicalTx<'a, T, A>"],["impl Eq for CalculateFeeError"]], +"bdk_chain":[["impl<A: Eq> Eq for ChainPosition<A>"],["impl Eq for ConfirmationTime"],["impl Eq for BlockId"],["impl Eq for ConfirmationHeightAnchor"],["impl Eq for ConfirmationTimeHeightAnchor"],["impl<A: Eq> Eq for FullTxOut<A>"],["impl Eq for Balance"],["impl<'a, T: Eq, A: Eq> Eq for TxNode<'a, T, A>"],["impl<'a, T: Eq, A: Eq> Eq for CanonicalTx<'a, T, A>"],["impl Eq for CalculateFeeError"],["impl Eq for DescriptorId"]], "bdk_coin_select":[["impl Eq for SelectionConstraint"],["impl Eq for ExcessStrategyKind"]], "example_cli":[["impl Eq for Keychain"]] };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/implementors/core/cmp/trait.Ord.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Ord.js index 7ac261cbcc..1cd41834c1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Ord.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Ord.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk":[["impl Ord for KeychainKind"],["impl Ord for SignerId"],["impl Ord for SignerOrdering"],["impl Ord for TxOrdering"],["impl Ord for ChangeSpendPolicy"]], -"bdk_chain":[["impl<A: Ord> Ord for ChainPosition<A>"],["impl Ord for ConfirmationTime"],["impl Ord for BlockId"],["impl Ord for ConfirmationHeightAnchor"],["impl Ord for ConfirmationTimeHeightAnchor"],["impl<A: Ord> Ord for FullTxOut<A>"],["impl<'a, T: Ord, A: Ord> Ord for TxNode<'a, T, A>"],["impl<'a, T: Ord, A: Ord> Ord for CanonicalTx<'a, T, A>"]], +"bdk_chain":[["impl<A: Ord> Ord for ChainPosition<A>"],["impl Ord for ConfirmationTime"],["impl Ord for BlockId"],["impl Ord for ConfirmationHeightAnchor"],["impl Ord for ConfirmationTimeHeightAnchor"],["impl<A: Ord> Ord for FullTxOut<A>"],["impl<'a, T: Ord, A: Ord> Ord for TxNode<'a, T, A>"],["impl<'a, T: Ord, A: Ord> Ord for CanonicalTx<'a, T, A>"],["impl Ord for DescriptorId"]], "bdk_coin_select":[["impl Ord for ExcessStrategyKind"]], "example_cli":[["impl Ord for Keychain"]] };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/implementors/core/cmp/trait.PartialEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialEq.js index 0aa5bf57ee..cfbae58f66 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialEq.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialEq.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk":[["impl PartialEq<PkOrF> for PkOrF"],["impl PartialEq<SatisfiableItem> for SatisfiableItem"],["impl PartialEq<Satisfaction> for Satisfaction"],["impl PartialEq<Policy> for Policy"],["impl PartialEq<Condition> for Condition"],["impl PartialEq<PolicyError> for PolicyError"],["impl PartialEq<ScriptContextEnum> for ScriptContextEnum"],["impl PartialEq<KeychainKind> for KeychainKind"],["impl PartialEq<LocalOutput> for LocalOutput"],["impl PartialEq<WeightedUtxo> for WeightedUtxo"],["impl PartialEq<Utxo> for Utxo"],["impl PartialEq<SignerId> for SignerId"],["impl PartialEq<SignerContext> for SignerContext"],["impl PartialEq<SignerOrdering> for SignerOrdering"],["impl PartialEq<TapLeavesOptions> for TapLeavesOptions"],["impl PartialEq<TxOrdering> for TxOrdering"],["impl PartialEq<ChangeSpendPolicy> for ChangeSpendPolicy"],["impl PartialEq<ChangeSet> for ChangeSet"],["impl PartialEq<AddressInfo> for AddressInfo"]], -"bdk_chain":[["impl<A: PartialEq> PartialEq<ChainPosition<A>> for ChainPosition<A>"],["impl PartialEq<ConfirmationTime> for ConfirmationTime"],["impl PartialEq<BlockId> for BlockId"],["impl PartialEq<ConfirmationHeightAnchor> for ConfirmationHeightAnchor"],["impl PartialEq<ConfirmationTimeHeightAnchor> for ConfirmationTimeHeightAnchor"],["impl<A: PartialEq> PartialEq<FullTxOut<A>> for FullTxOut<A>"],["impl<A: PartialEq, IA: PartialEq> PartialEq<ChangeSet<A, IA>> for ChangeSet<A, IA>"],["impl<K: PartialEq> PartialEq<ChangeSet<K>> for ChangeSet<K>"],["impl PartialEq<Balance> for Balance"],["impl PartialEq<CheckPoint> for CheckPoint"],["impl PartialEq<LocalChain> for LocalChain"],["impl PartialEq<MissingGenesisError> for MissingGenesisError"],["impl PartialEq<AlterCheckPointError> for AlterCheckPointError"],["impl PartialEq<CannotConnectError> for CannotConnectError"],["impl PartialEq<ApplyHeaderError> for ApplyHeaderError"],["impl<A: PartialEq> PartialEq<TxGraph<A>> for TxGraph<A>"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq<TxNode<'a, T, A>> for TxNode<'a, T, A>"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq<CanonicalTx<'a, T, A>> for CanonicalTx<'a, T, A>"],["impl PartialEq<CalculateFeeError> for CalculateFeeError"],["impl<A: PartialEq> PartialEq<ChangeSet<A>> for ChangeSet<A>"]], +"bdk_chain":[["impl<A: PartialEq> PartialEq<ChainPosition<A>> for ChainPosition<A>"],["impl PartialEq<ConfirmationTime> for ConfirmationTime"],["impl PartialEq<BlockId> for BlockId"],["impl PartialEq<ConfirmationHeightAnchor> for ConfirmationHeightAnchor"],["impl PartialEq<ConfirmationTimeHeightAnchor> for ConfirmationTimeHeightAnchor"],["impl<A: PartialEq> PartialEq<FullTxOut<A>> for FullTxOut<A>"],["impl<A: PartialEq, IA: PartialEq> PartialEq<ChangeSet<A, IA>> for ChangeSet<A, IA>"],["impl<K: PartialEq> PartialEq<ChangeSet<K>> for ChangeSet<K>"],["impl PartialEq<Balance> for Balance"],["impl PartialEq<CheckPoint> for CheckPoint"],["impl PartialEq<LocalChain> for LocalChain"],["impl PartialEq<MissingGenesisError> for MissingGenesisError"],["impl PartialEq<AlterCheckPointError> for AlterCheckPointError"],["impl PartialEq<CannotConnectError> for CannotConnectError"],["impl PartialEq<ApplyHeaderError> for ApplyHeaderError"],["impl<A: PartialEq> PartialEq<TxGraph<A>> for TxGraph<A>"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq<TxNode<'a, T, A>> for TxNode<'a, T, A>"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq<CanonicalTx<'a, T, A>> for CanonicalTx<'a, T, A>"],["impl PartialEq<CalculateFeeError> for CalculateFeeError"],["impl<A: PartialEq> PartialEq<ChangeSet<A>> for ChangeSet<A>"],["impl PartialEq<DescriptorId> for DescriptorId"]], "bdk_coin_select":[["impl PartialEq<SelectionConstraint> for SelectionConstraint"],["impl PartialEq<ExcessStrategyKind> for ExcessStrategyKind"]], "example_cli":[["impl PartialEq<Keychain> for Keychain"]], "example_electrum":[["impl PartialEq<ScanOptions> for ScanOptions"]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialOrd.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialOrd.js index cf065f95af..df841417fd 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialOrd.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialOrd.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk":[["impl PartialOrd<Condition> for Condition"],["impl PartialOrd<KeychainKind> for KeychainKind"],["impl PartialOrd<SignerId> for SignerId"],["impl PartialOrd<SignerOrdering> for SignerOrdering"],["impl PartialOrd<TxOrdering> for TxOrdering"],["impl PartialOrd<ChangeSpendPolicy> for ChangeSpendPolicy"]], -"bdk_chain":[["impl<A: PartialOrd> PartialOrd<ChainPosition<A>> for ChainPosition<A>"],["impl PartialOrd<ConfirmationTime> for ConfirmationTime"],["impl PartialOrd<BlockId> for BlockId"],["impl PartialOrd<ConfirmationHeightAnchor> for ConfirmationHeightAnchor"],["impl PartialOrd<ConfirmationTimeHeightAnchor> for ConfirmationTimeHeightAnchor"],["impl<A: PartialOrd> PartialOrd<FullTxOut<A>> for FullTxOut<A>"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd<TxNode<'a, T, A>> for TxNode<'a, T, A>"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd<CanonicalTx<'a, T, A>> for CanonicalTx<'a, T, A>"]], +"bdk_chain":[["impl<A: PartialOrd> PartialOrd<ChainPosition<A>> for ChainPosition<A>"],["impl PartialOrd<ConfirmationTime> for ConfirmationTime"],["impl PartialOrd<BlockId> for BlockId"],["impl PartialOrd<ConfirmationHeightAnchor> for ConfirmationHeightAnchor"],["impl PartialOrd<ConfirmationTimeHeightAnchor> for ConfirmationTimeHeightAnchor"],["impl<A: PartialOrd> PartialOrd<FullTxOut<A>> for FullTxOut<A>"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd<TxNode<'a, T, A>> for TxNode<'a, T, A>"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd<CanonicalTx<'a, T, A>> for CanonicalTx<'a, T, A>"],["impl PartialOrd<DescriptorId> for DescriptorId"]], "bdk_coin_select":[["impl PartialOrd<ExcessStrategyKind> for ExcessStrategyKind"]], "example_cli":[["impl PartialOrd<Keychain> for Keychain"]] };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/implementors/core/convert/trait.AsRef.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.AsRef.js index 2406b8b5aa..7d79a4b9b4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.AsRef.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.AsRef.js @@ -1,4 +1,4 @@ (function() {var implementors = { "bdk":[["impl AsRef<[u8]> for KeychainKind"],["impl AsRef<TxGraph<ConfirmationTimeHeightAnchor>> for Wallet"]], -"bdk_chain":[["impl<K> AsRef<BTreeMap<K, u32, Global>> for ChangeSet<K>"],["impl<A> AsRef<TxGraph<A>> for TxGraph<A>"]] +"bdk_chain":[["impl<A> AsRef<TxGraph<A>> for TxGraph<A>"],["impl AsRef<[u8]> for DescriptorId"],["impl AsRef<[u8; 32]> for DescriptorId"]] };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/implementors/core/convert/trait.From.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.From.js index 7ad08757b2..30b1495233 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,6 +1,6 @@ (function() {var implementors = { -"bdk":[["impl From<KeyError> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<HexToBytesError> for Error"],["impl From<PolicyError> for Error"],["impl From<bool> for Satisfaction"],["impl From<SatisfiableItem> for Policy"],["impl<Ctx: ScriptContext> From<Xpub> for ExtendedKey<Ctx>"],["impl<Ctx: ScriptContext> From<Xpriv> for ExtendedKey<Ctx>"],["impl From<Error> for KeyError"],["impl From<Error> for KeyError"],["impl From<Hash> for SignerId"],["impl From<Fingerprint> for SignerId"],["impl From<Error> for SignerError"],["impl From<Error> for CreateTxError"],["impl From<PolicyError> for CreateTxError"],["impl From<MiniscriptPsbtError> for CreateTxError"],["impl From<Error> for CreateTxError"],["impl From<Error> for CreateTxError"],["impl From<FullScanResult<KeychainKind>> for Update"],["impl From<SyncResult<ConfirmationTimeHeightAnchor>> for Update"],["impl From<BTreeMap<u32, Option<BlockHash>, Global>> for ChangeSet"],["impl From<ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>> for ChangeSet"]], -"bdk_chain":[["impl From<ChainPosition<ConfirmationTimeHeightAnchor>> for ConfirmationTime"],["impl From<(u32, BlockHash)> for BlockId"],["impl From<BlockId> for (u32, BlockHash)"],["impl From<(&u32, &BlockHash)> for BlockId"],["impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>"],["impl<A, K> From<ChangeSet<K>> for ChangeSet<A, ChangeSet<K>>"]], +"bdk":[["impl From<KeyError> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<HexToBytesError> for Error"],["impl From<PolicyError> for Error"],["impl From<bool> for Satisfaction"],["impl From<SatisfiableItem> for Policy"],["impl<Ctx: ScriptContext> From<Xpub> for ExtendedKey<Ctx>"],["impl<Ctx: ScriptContext> From<Xpriv> for ExtendedKey<Ctx>"],["impl From<Error> for KeyError"],["impl From<Error> for KeyError"],["impl From<Hash> for SignerId"],["impl From<Fingerprint> for SignerId"],["impl From<Error> for SignerError"],["impl From<Error> for CreateTxError"],["impl From<PolicyError> for CreateTxError"],["impl From<MiniscriptPsbtError> for CreateTxError"],["impl From<Error> for CreateTxError"],["impl From<Error> for CreateTxError"],["impl From<FullScanResult<KeychainKind>> for Update"],["impl From<SyncResult<ConfirmationTimeHeightAnchor>> for Update"],["impl From<BTreeMap<u32, Option<BlockHash>, Global>> for ChangeSet"],["impl From<ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>> for ChangeSet"]], +"bdk_chain":[["impl From<ChainPosition<ConfirmationTimeHeightAnchor>> for ConfirmationTime"],["impl From<(u32, BlockHash)> for BlockId"],["impl From<BlockId> for (u32, BlockHash)"],["impl From<(&u32, &BlockHash)> for BlockId"],["impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>"],["impl<A, K> From<ChangeSet<K>> for ChangeSet<A, ChangeSet<K>>"],["impl From<Hash> for DescriptorId"],["impl From<DescriptorId> for Hash"]], "bdk_coin_select":[["impl From<usize> for BnbLimit"],["impl From<Duration> for BnbLimit"]], "bdk_file_store":[["impl From<Error> for IterError"],["impl From<Error> for FileError"]], "bdk_tmp_plan":[["impl From<Error> for SigningError"],["impl From<Error> for SigningError"]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/default/trait.Default.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/default/trait.Default.js index cc5f68298a..07e14cb010 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/default/trait.Default.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/default/trait.Default.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk":[["impl Default for Condition"],["impl Default for PrivateKeyGenerateOptions"],["impl Default for LargestFirstCoinSelection"],["impl Default for OldestFirstCoinSelection"],["impl Default for BranchAndBoundCoinSelection"],["impl Default for SignerOrdering"],["impl Default for SignersContainer"],["impl Default for TapLeavesOptions"],["impl Default for SignOptions"],["impl Default for CreateTx"],["impl Default for BumpFee"],["impl Default for TxOrdering"],["impl Default for ChangeSpendPolicy"],["impl Default for Update"],["impl Default for ChangeSet"]], -"bdk_chain":[["impl<I> Default for SpkTxOutIndex<I>"],["impl Default for BlockId"],["impl Default for ConfirmationHeightAnchor"],["impl Default for ConfirmationTimeHeightAnchor"],["impl<A, I: Default> Default for IndexedTxGraph<A, I>"],["impl<A, IA: Default> Default for ChangeSet<A, IA>"],["impl<K> Default for KeychainTxOutIndex<K>"],["impl<K> Default for ChangeSet<K>"],["impl Default for Balance"],["impl<A> Default for TxGraph<A>"],["impl<A> Default for ChangeSet<A>"]], +"bdk_chain":[["impl<I> Default for SpkTxOutIndex<I>"],["impl Default for BlockId"],["impl Default for ConfirmationHeightAnchor"],["impl Default for ConfirmationTimeHeightAnchor"],["impl<A, I: Default> Default for IndexedTxGraph<A, I>"],["impl<A, IA: Default> Default for ChangeSet<A, IA>"],["impl<K> Default for ChangeSet<K>"],["impl<K> Default for KeychainTxOutIndex<K>"],["impl Default for Balance"],["impl<A> Default for TxGraph<A>"],["impl<A> Default for ChangeSet<A>"]], "bdk_electrum":[["impl Default for RelevantTxids"]], "bdk_tmp_plan":[["impl<Ak> Default for RequiredSignatures<Ak>"],["impl<Ak> Default for Requirements<Ak>"],["impl Default for SatisfactionMaterial"],["impl<K> Default for Assets<K>"]], "example_cli":[["impl Default for CoinSelectionAlgo"]] diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Debug.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Debug.js index 691d0a0d25..bfcd8509b6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Debug.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Debug.js @@ -1,7 +1,7 @@ (function() {var implementors = { "bdk":[["impl Debug for Error"],["impl Debug for PkOrF"],["impl Debug for SatisfiableItem"],["impl Debug for Satisfaction"],["impl Debug for Policy"],["impl Debug for Condition"],["impl Debug for PolicyError"],["impl<'a> Debug for BuildSatisfaction<'a>"],["impl<Ctx: Debug + ScriptContext> Debug for DescriptorKey<Ctx>"],["impl Debug for ScriptContextEnum"],["impl Debug for PrivateKeyGenerateOptions"],["impl Debug for KeyError"],["impl Debug for KeychainKind"],["impl Debug for LocalOutput"],["impl Debug for WeightedUtxo"],["impl Debug for Utxo"],["impl Debug for Error"],["impl Debug for Excess"],["impl Debug for CoinSelectionResult"],["impl Debug for LargestFirstCoinSelection"],["impl Debug for OldestFirstCoinSelection"],["impl Debug for BranchAndBoundCoinSelection"],["impl Debug for FullyNodedExport"],["impl Debug for SignerId"],["impl Debug for SignerError"],["impl Debug for SignerContext"],["impl<S: Debug + Sized + Debug + Clone> Debug for SignerWrapper<S>"],["impl Debug for SignerOrdering"],["impl Debug for SignersContainer"],["impl Debug for SignOptions"],["impl Debug for TapLeavesOptions"],["impl Debug for CreateTx"],["impl Debug for BumpFee"],["impl<'a, Cs: Debug, Ctx: Debug> Debug for TxBuilder<'a, Cs, Ctx>"],["impl Debug for AddUtxoError"],["impl Debug for AddForeignUtxoError"],["impl Debug for AllowShrinkingError"],["impl Debug for TxOrdering"],["impl Debug for ChangeSpendPolicy"],["impl Debug for MiniscriptPsbtError"],["impl Debug for CreateTxError"],["impl Debug for BuildFeeBumpError"],["impl Debug for Wallet"],["impl Debug for Update"],["impl Debug for ChangeSet"],["impl Debug for AddressInfo"],["impl Debug for NewError"],["impl Debug for LoadError"],["impl Debug for NewOrLoadError"],["impl Debug for InsertTxError"],["impl Debug for ApplyBlockError"]], "bdk_bitcoind_rpc":[["impl<B: Debug> Debug for BlockEvent<B>"]], -"bdk_chain":[["impl<I: Debug> Debug for SpkTxOutIndex<I>"],["impl<A: Debug> Debug for ChainPosition<A>"],["impl Debug for ConfirmationTime"],["impl Debug for BlockId"],["impl Debug for ConfirmationHeightAnchor"],["impl Debug for ConfirmationTimeHeightAnchor"],["impl<A: Debug> Debug for FullTxOut<A>"],["impl<A: Debug, I: Debug> Debug for IndexedTxGraph<A, I>"],["impl<A: Debug, IA: Debug> Debug for ChangeSet<A, IA>"],["impl<K: Debug> Debug for KeychainTxOutIndex<K>"],["impl<K: Debug> Debug for ChangeSet<K>"],["impl Debug for Balance"],["impl Debug for CheckPoint"],["impl Debug for LocalChain"],["impl Debug for MissingGenesisError"],["impl Debug for AlterCheckPointError"],["impl Debug for CannotConnectError"],["impl Debug for ApplyHeaderError"],["impl<A: Debug> Debug for TxGraph<A>"],["impl<'a, T: Debug, A: Debug> Debug for TxNode<'a, T, A>"],["impl<'a, T: Debug, A: Debug> Debug for CanonicalTx<'a, T, A>"],["impl Debug for CalculateFeeError"],["impl<A: Debug> Debug for ChangeSet<A>"]], +"bdk_chain":[["impl<I: Debug> Debug for SpkTxOutIndex<I>"],["impl<A: Debug> Debug for ChainPosition<A>"],["impl Debug for ConfirmationTime"],["impl Debug for BlockId"],["impl Debug for ConfirmationHeightAnchor"],["impl Debug for ConfirmationTimeHeightAnchor"],["impl<A: Debug> Debug for FullTxOut<A>"],["impl<A: Debug, I: Debug> Debug for IndexedTxGraph<A, I>"],["impl<A: Debug, IA: Debug> Debug for ChangeSet<A, IA>"],["impl<K: Debug> Debug for ChangeSet<K>"],["impl<K: Debug> Debug for KeychainTxOutIndex<K>"],["impl Debug for Balance"],["impl Debug for CheckPoint"],["impl Debug for LocalChain"],["impl Debug for MissingGenesisError"],["impl Debug for AlterCheckPointError"],["impl Debug for CannotConnectError"],["impl Debug for ApplyHeaderError"],["impl<A: Debug> Debug for TxGraph<A>"],["impl<'a, T: Debug, A: Debug> Debug for TxNode<'a, T, A>"],["impl<'a, T: Debug, A: Debug> Debug for CanonicalTx<'a, T, A>"],["impl Debug for CalculateFeeError"],["impl<A: Debug> Debug for ChangeSet<A>"],["impl Debug for DescriptorId"]], "bdk_coin_select":[["impl Debug for WeightedValue"],["impl Debug for CoinSelectorOpt"],["impl<'a> Debug for CoinSelector<'a>"],["impl Debug for SelectionError"],["impl Debug for SelectionConstraint"],["impl Debug for Selection"],["impl Debug for ExcessStrategyKind"],["impl Debug for ExcessStrategy"]], "bdk_electrum":[["impl Debug for RelevantTxids"],["impl Debug for ElectrumUpdate"]], "bdk_file_store":[["impl Debug for IterError"],["impl<C> Debug for Store<C>where
        C: Sync + Send + Debug,
    "],["impl<C: Debug> Debug for AggregateChangesetsError<C>"],["impl Debug for FileError"]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Display.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Display.js index 1b7cdad2ca..61a7d3464d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Display.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Display.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk":[["impl Display for Error"],["impl Display for PolicyError"],["impl Display for KeyError"],["impl Display for Error"],["impl Display for FullyNodedExport"],["impl Display for SignerError"],["impl Display for AddUtxoError"],["impl Display for AddForeignUtxoError"],["impl Display for AllowShrinkingError"],["impl Display for MiniscriptPsbtError"],["impl Display for CreateTxError"],["impl Display for BuildFeeBumpError"],["impl Display for AddressInfo"],["impl Display for NewError"],["impl Display for LoadError"],["impl Display for NewOrLoadError"],["impl Display for InsertTxError"],["impl Display for ApplyBlockError"]], -"bdk_chain":[["impl Display for Balance"],["impl Display for MissingGenesisError"],["impl Display for AlterCheckPointError"],["impl Display for CannotConnectError"],["impl Display for ApplyHeaderError"],["impl Display for CalculateFeeError"]], +"bdk_chain":[["impl Display for Balance"],["impl Display for MissingGenesisError"],["impl Display for AlterCheckPointError"],["impl Display for CannotConnectError"],["impl Display for ApplyHeaderError"],["impl Display for CalculateFeeError"],["impl Display for DescriptorId"]], "bdk_coin_select":[["impl Display for SelectionError"],["impl Display for SelectionConstraint"],["impl Display for ExcessStrategyKind"]], "bdk_file_store":[["impl Display for IterError"],["impl<C> Display for AggregateChangesetsError<C>"],["impl Display for FileError"]], "bdk_tmp_plan":[["impl Display for SigningError"]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.LowerHex.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.LowerHex.js new file mode 100644 index 0000000000..afa0c3fa90 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.LowerHex.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl LowerHex for DescriptorId"]] +};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/implementors/core/fmt/trait.UpperHex.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.UpperHex.js new file mode 100644 index 0000000000..fb5a7a8e66 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.UpperHex.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl UpperHex for DescriptorId"]] +};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/implementors/core/hash/trait.Hash.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/hash/trait.Hash.js index 2fb97e96c8..5b6c109681 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/hash/trait.Hash.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/hash/trait.Hash.js @@ -1,5 +1,5 @@ (function() {var implementors = { "bdk":[["impl Hash for PkOrF"],["impl Hash for Condition"],["impl Hash for KeychainKind"],["impl Hash for LocalOutput"],["impl Hash for SignerId"],["impl Hash for TxOrdering"],["impl Hash for ChangeSpendPolicy"]], -"bdk_chain":[["impl<A: Hash> Hash for ChainPosition<A>"],["impl Hash for ConfirmationTime"],["impl Hash for BlockId"],["impl Hash for ConfirmationHeightAnchor"],["impl Hash for ConfirmationTimeHeightAnchor"]], +"bdk_chain":[["impl<A: Hash> Hash for ChainPosition<A>"],["impl Hash for ConfirmationTime"],["impl Hash for BlockId"],["impl Hash for ConfirmationHeightAnchor"],["impl Hash for ConfirmationTimeHeightAnchor"],["impl Hash for DescriptorId"]], "bdk_coin_select":[["impl Hash for ExcessStrategyKind"]] };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/implementors/core/marker/trait.Copy.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Copy.js index 902da62c39..704da2da20 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Copy.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Copy.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk":[["impl Copy for Condition"],["impl<'a> Copy for BuildSatisfaction<'a>"],["impl Copy for ScriptContextEnum"],["impl Copy for PrivateKeyGenerateOptions"],["impl Copy for KeychainKind"],["impl Copy for LargestFirstCoinSelection"],["impl Copy for OldestFirstCoinSelection"],["impl Copy for SignerContext"],["impl Copy for TxOrdering"],["impl Copy for ChangeSpendPolicy"]], -"bdk_chain":[["impl<A: Copy> Copy for ChainPosition<A>"],["impl Copy for ConfirmationTime"],["impl Copy for BlockId"],["impl Copy for ConfirmationHeightAnchor"],["impl Copy for ConfirmationTimeHeightAnchor"]], +"bdk_chain":[["impl<A: Copy> Copy for ChainPosition<A>"],["impl Copy for ConfirmationTime"],["impl Copy for BlockId"],["impl Copy for ConfirmationHeightAnchor"],["impl Copy for ConfirmationTimeHeightAnchor"],["impl Copy for DescriptorId"]], "bdk_coin_select":[["impl Copy for WeightedValue"],["impl Copy for CoinSelectorOpt"],["impl Copy for SelectionConstraint"],["impl Copy for ExcessStrategyKind"],["impl Copy for ExcessStrategy"]], "example_cli":[["impl Copy for Keychain"]] };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/implementors/core/marker/trait.Freeze.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Freeze.js index eba2e9eb9d..2147387ee6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Freeze.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Freeze.js @@ -1,7 +1,7 @@ (function() {var implementors = { -"bdk":[["impl Freeze for Error",1,["bdk::descriptor::error::Error"]],["impl Freeze for PkOrF",1,["bdk::descriptor::policy::PkOrF"]],["impl Freeze for SatisfiableItem",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl Freeze for Satisfaction",1,["bdk::descriptor::policy::Satisfaction"]],["impl Freeze for Policy",1,["bdk::descriptor::policy::Policy"]],["impl Freeze for Condition",1,["bdk::descriptor::policy::Condition"]],["impl Freeze for PolicyError",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> Freeze for BuildSatisfaction<'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> Freeze for P2Pkh<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> Freeze for P2Wpkh_P2Sh<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> Freeze for P2Wpkh<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> Freeze for P2TR<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::P2TR"]],["impl<K> Freeze for Bip44<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip44"]],["impl<K> Freeze for Bip44Public<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> Freeze for Bip49<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip49"]],["impl<K> Freeze for Bip49Public<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> Freeze for Bip84<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip84"]],["impl<K> Freeze for Bip84Public<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip84Public"]],["impl<K> Freeze for Bip86<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip86"]],["impl<K> Freeze for Bip86Public<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip86Public"]],["impl<Ctx> Freeze for DescriptorKey<Ctx>",1,["bdk::keys::DescriptorKey"]],["impl Freeze for ScriptContextEnum",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> Freeze for ExtendedKey<Ctx>",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> Freeze for GeneratedKey<K, Ctx>where
        K: Freeze,
    ",1,["bdk::keys::GeneratedKey"]],["impl Freeze for PrivateKeyGenerateOptions",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl Freeze for KeyError",1,["bdk::keys::KeyError"]],["impl Freeze for KeychainKind",1,["bdk::types::KeychainKind"]],["impl Freeze for LocalOutput",1,["bdk::types::LocalOutput"]],["impl Freeze for WeightedUtxo",1,["bdk::types::WeightedUtxo"]],["impl Freeze for Utxo",1,["bdk::types::Utxo"]],["impl Freeze for Error",1,["bdk::wallet::coin_selection::Error"]],["impl Freeze for Excess",1,["bdk::wallet::coin_selection::Excess"]],["impl Freeze for CoinSelectionResult",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl Freeze for LargestFirstCoinSelection",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Freeze for OldestFirstCoinSelection",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Freeze for BranchAndBoundCoinSelection",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Freeze for FullyNodedExport",1,["bdk::wallet::export::FullyNodedExport"]],["impl Freeze for SignerId",1,["bdk::wallet::signer::SignerId"]],["impl Freeze for SignerError",1,["bdk::wallet::signer::SignerError"]],["impl Freeze for SignerContext",1,["bdk::wallet::signer::SignerContext"]],["impl<S> Freeze for SignerWrapper<S>where
        S: Freeze,
    ",1,["bdk::wallet::signer::SignerWrapper"]],["impl Freeze for SignerOrdering",1,["bdk::wallet::signer::SignerOrdering"]],["impl Freeze for SignersContainer",1,["bdk::wallet::signer::SignersContainer"]],["impl Freeze for SignOptions",1,["bdk::wallet::signer::SignOptions"]],["impl Freeze for TapLeavesOptions",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl Freeze for CreateTx",1,["bdk::wallet::tx_builder::CreateTx"]],["impl Freeze for BumpFee",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> Freeze for TxBuilder<'a, Cs, Ctx>where
        Cs: Freeze,
    ",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl Freeze for AddUtxoError",1,["bdk::wallet::tx_builder::AddUtxoError"]],["impl Freeze for AddForeignUtxoError",1,["bdk::wallet::tx_builder::AddForeignUtxoError"]],["impl Freeze for AllowShrinkingError",1,["bdk::wallet::tx_builder::AllowShrinkingError"]],["impl Freeze for TxOrdering",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl Freeze for ChangeSpendPolicy",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl Freeze for MiniscriptPsbtError",1,["bdk::wallet::error::MiniscriptPsbtError"]],["impl Freeze for CreateTxError",1,["bdk::wallet::error::CreateTxError"]],["impl Freeze for BuildFeeBumpError",1,["bdk::wallet::error::BuildFeeBumpError"]],["impl Freeze for Wallet",1,["bdk::wallet::Wallet"]],["impl Freeze for Update",1,["bdk::wallet::Update"]],["impl Freeze for ChangeSet",1,["bdk::wallet::ChangeSet"]],["impl Freeze for AddressInfo",1,["bdk::wallet::AddressInfo"]],["impl Freeze for NewError",1,["bdk::wallet::NewError"]],["impl Freeze for LoadError",1,["bdk::wallet::LoadError"]],["impl Freeze for NewOrLoadError",1,["bdk::wallet::NewOrLoadError"]],["impl Freeze for InsertTxError",1,["bdk::wallet::InsertTxError"]],["impl Freeze for ApplyBlockError",1,["bdk::wallet::ApplyBlockError"]]], +"bdk":[["impl Freeze for Error",1,["bdk::descriptor::error::Error"]],["impl Freeze for PkOrF",1,["bdk::descriptor::policy::PkOrF"]],["impl Freeze for SatisfiableItem",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl Freeze for Satisfaction",1,["bdk::descriptor::policy::Satisfaction"]],["impl Freeze for Policy",1,["bdk::descriptor::policy::Policy"]],["impl Freeze for Condition",1,["bdk::descriptor::policy::Condition"]],["impl Freeze for PolicyError",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> Freeze for BuildSatisfaction<'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> Freeze for P2Pkh<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> Freeze for P2Wpkh_P2Sh<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> Freeze for P2Wpkh<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> Freeze for P2TR<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::P2TR"]],["impl<K> Freeze for Bip44<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip44"]],["impl<K> Freeze for Bip44Public<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> Freeze for Bip49<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip49"]],["impl<K> Freeze for Bip49Public<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> Freeze for Bip84<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip84"]],["impl<K> Freeze for Bip84Public<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip84Public"]],["impl<K> Freeze for Bip86<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip86"]],["impl<K> Freeze for Bip86Public<K>where
        K: Freeze,
    ",1,["bdk::descriptor::template::Bip86Public"]],["impl<Ctx> Freeze for DescriptorKey<Ctx>",1,["bdk::keys::DescriptorKey"]],["impl Freeze for ScriptContextEnum",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> Freeze for ExtendedKey<Ctx>",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> Freeze for GeneratedKey<K, Ctx>where
        K: Freeze,
    ",1,["bdk::keys::GeneratedKey"]],["impl Freeze for PrivateKeyGenerateOptions",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl Freeze for KeyError",1,["bdk::keys::KeyError"]],["impl Freeze for KeychainKind",1,["bdk::types::KeychainKind"]],["impl Freeze for LocalOutput",1,["bdk::types::LocalOutput"]],["impl Freeze for WeightedUtxo",1,["bdk::types::WeightedUtxo"]],["impl Freeze for Utxo",1,["bdk::types::Utxo"]],["impl Freeze for Error",1,["bdk::wallet::coin_selection::Error"]],["impl Freeze for Excess",1,["bdk::wallet::coin_selection::Excess"]],["impl Freeze for CoinSelectionResult",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl Freeze for LargestFirstCoinSelection",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Freeze for OldestFirstCoinSelection",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Freeze for BranchAndBoundCoinSelection",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Freeze for FullyNodedExport",1,["bdk::wallet::export::FullyNodedExport"]],["impl Freeze for SignerId",1,["bdk::wallet::signer::SignerId"]],["impl Freeze for SignerError",1,["bdk::wallet::signer::SignerError"]],["impl Freeze for SignerContext",1,["bdk::wallet::signer::SignerContext"]],["impl<S> Freeze for SignerWrapper<S>where
        S: Freeze,
    ",1,["bdk::wallet::signer::SignerWrapper"]],["impl Freeze for SignerOrdering",1,["bdk::wallet::signer::SignerOrdering"]],["impl Freeze for SignersContainer",1,["bdk::wallet::signer::SignersContainer"]],["impl Freeze for SignOptions",1,["bdk::wallet::signer::SignOptions"]],["impl Freeze for TapLeavesOptions",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl Freeze for CreateTx",1,["bdk::wallet::tx_builder::CreateTx"]],["impl Freeze for BumpFee",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> Freeze for TxBuilder<'a, Cs, Ctx>where
        Cs: Freeze,
    ",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl Freeze for AddUtxoError",1,["bdk::wallet::tx_builder::AddUtxoError"]],["impl Freeze for AddForeignUtxoError",1,["bdk::wallet::tx_builder::AddForeignUtxoError"]],["impl Freeze for AllowShrinkingError",1,["bdk::wallet::tx_builder::AllowShrinkingError"]],["impl Freeze for TxOrdering",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl Freeze for ChangeSpendPolicy",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl Freeze for MiniscriptPsbtError",1,["bdk::wallet::error::MiniscriptPsbtError"]],["impl Freeze for CreateTxError",1,["bdk::wallet::error::CreateTxError"]],["impl Freeze for BuildFeeBumpError",1,["bdk::wallet::error::BuildFeeBumpError"]],["impl Freeze for Wallet",1,["bdk::wallet::Wallet"]],["impl Freeze for Update",1,["bdk::wallet::Update"]],["impl Freeze for ChangeSet",1,["bdk::wallet::ChangeSet"]],["impl Freeze for AddressInfo",1,["bdk::wallet::AddressInfo"]],["impl Freeze for NewError",1,["bdk::wallet::NewError"]],["impl Freeze for LoadError",1,["bdk::wallet::LoadError"]],["impl !Freeze for NewOrLoadError",1,["bdk::wallet::NewOrLoadError"]],["impl Freeze for InsertTxError",1,["bdk::wallet::InsertTxError"]],["impl Freeze for ApplyBlockError",1,["bdk::wallet::ApplyBlockError"]]], "bdk_bitcoind_rpc":[["impl<'c, C> Freeze for Emitter<'c, C>",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Freeze for BlockEvent<B>where
        B: Freeze,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> Freeze for SpkTxOutIndex<I>",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Freeze for ChainPosition<A>where
        A: Freeze,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Freeze for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Freeze for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Freeze for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Freeze for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Freeze for FullTxOut<A>where
        A: Freeze,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Freeze for IndexedTxGraph<A, I>where
        I: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Freeze for ChangeSet<A, IA>where
        IA: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Freeze for KeychainTxOutIndex<K>",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K> Freeze for ChangeSet<K>",1,["bdk_chain::keychain::ChangeSet"]],["impl Freeze for Balance",1,["bdk_chain::keychain::Balance"]],["impl Freeze for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Freeze for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Freeze for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Freeze for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Freeze for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Freeze for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Freeze for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Freeze for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Freeze for TxNode<'a, T, A>where
        T: Freeze,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Freeze for CanonicalTx<'a, T, A>where
        T: Freeze,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Freeze for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Freeze for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Freeze for TxAncestors<'g, A, F>where
        F: Freeze,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Freeze for TxDescendants<'g, A, F>where
        F: Freeze,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<D> Freeze for SpkIterator<D>where
        D: Freeze,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl Freeze for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Freeze for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> Freeze for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Freeze for FullScanResult<K>",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_chain":[["impl<I> Freeze for SpkTxOutIndex<I>",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Freeze for ChainPosition<A>where
        A: Freeze,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Freeze for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Freeze for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Freeze for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Freeze for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Freeze for FullTxOut<A>where
        A: Freeze,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Freeze for IndexedTxGraph<A, I>where
        I: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Freeze for ChangeSet<A, IA>where
        IA: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Freeze for ChangeSet<K>",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Freeze for KeychainTxOutIndex<K>",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl Freeze for Balance",1,["bdk_chain::keychain::Balance"]],["impl Freeze for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Freeze for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Freeze for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Freeze for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Freeze for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Freeze for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Freeze for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Freeze for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Freeze for TxNode<'a, T, A>where
        T: Freeze,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Freeze for CanonicalTx<'a, T, A>where
        T: Freeze,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Freeze for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Freeze for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Freeze for TxAncestors<'g, A, F>where
        F: Freeze,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Freeze for TxDescendants<'g, A, F>where
        F: Freeze,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl Freeze for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> Freeze for SpkIterator<D>where
        D: Freeze,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl Freeze for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Freeze for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> Freeze for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Freeze for FullScanResult<K>",1,["bdk_chain::spk_client::FullScanResult"]]], "bdk_coin_select":[["impl Freeze for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl Freeze for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> Freeze for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl Freeze for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Freeze for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Freeze for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Freeze for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Freeze for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Freeze for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> Freeze for Bnb<'c, S>where
        S: Freeze,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> Freeze for BnbIter<'c, 'f, S>where
        S: Freeze,
    ",1,["bdk_coin_select::bnb::BnbIter"]],["impl Freeze for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], "bdk_electrum":[["impl Freeze for RelevantTxids",1,["bdk_electrum::electrum_ext::RelevantTxids"]],["impl Freeze for ElectrumUpdate",1,["bdk_electrum::electrum_ext::ElectrumUpdate"]]], "bdk_file_store":[["impl<'t, T> Freeze for EntryIter<'t, T>",1,["bdk_file_store::entry_iter::EntryIter"]],["impl Freeze for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> Freeze for Store<C>",1,["bdk_file_store::store::Store"]],["impl<C> Freeze for AggregateChangesetsError<C>where
        C: Freeze,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl Freeze for FileError",1,["bdk_file_store::FileError"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Send.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Send.js index 373c3a153f..a1a2fd61e9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Send.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Send.js @@ -1,7 +1,7 @@ (function() {var implementors = { "bdk":[["impl Send for Error",1,["bdk::descriptor::error::Error"]],["impl Send for PkOrF",1,["bdk::descriptor::policy::PkOrF"]],["impl Send for SatisfiableItem",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl Send for Satisfaction",1,["bdk::descriptor::policy::Satisfaction"]],["impl Send for Policy",1,["bdk::descriptor::policy::Policy"]],["impl Send for Condition",1,["bdk::descriptor::policy::Condition"]],["impl Send for PolicyError",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> Send for BuildSatisfaction<'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> Send for P2Pkh<K>where
        K: Send,
    ",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> Send for P2Wpkh_P2Sh<K>where
        K: Send,
    ",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> Send for P2Wpkh<K>where
        K: Send,
    ",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> Send for P2TR<K>where
        K: Send,
    ",1,["bdk::descriptor::template::P2TR"]],["impl<K> Send for Bip44<K>where
        K: Send,
    ",1,["bdk::descriptor::template::Bip44"]],["impl<K> Send for Bip44Public<K>where
        K: Send,
    ",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> Send for Bip49<K>where
        K: Send,
    ",1,["bdk::descriptor::template::Bip49"]],["impl<K> Send for Bip49Public<K>where
        K: Send,
    ",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> Send for Bip84<K>where
        K: Send,
    ",1,["bdk::descriptor::template::Bip84"]],["impl<K> Send for Bip84Public<K>where
        K: Send,
    ",1,["bdk::descriptor::template::Bip84Public"]],["impl<K> Send for Bip86<K>where
        K: Send,
    ",1,["bdk::descriptor::template::Bip86"]],["impl<K> Send for Bip86Public<K>where
        K: Send,
    ",1,["bdk::descriptor::template::Bip86Public"]],["impl<Ctx> Send for DescriptorKey<Ctx>where
        Ctx: Send,
    ",1,["bdk::keys::DescriptorKey"]],["impl Send for ScriptContextEnum",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> Send for ExtendedKey<Ctx>where
        Ctx: Send,
    ",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> Send for GeneratedKey<K, Ctx>where
        Ctx: Send,
        K: Send,
    ",1,["bdk::keys::GeneratedKey"]],["impl Send for PrivateKeyGenerateOptions",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl Send for KeyError",1,["bdk::keys::KeyError"]],["impl Send for KeychainKind",1,["bdk::types::KeychainKind"]],["impl Send for LocalOutput",1,["bdk::types::LocalOutput"]],["impl Send for WeightedUtxo",1,["bdk::types::WeightedUtxo"]],["impl Send for Utxo",1,["bdk::types::Utxo"]],["impl Send for Error",1,["bdk::wallet::coin_selection::Error"]],["impl Send for Excess",1,["bdk::wallet::coin_selection::Excess"]],["impl Send for CoinSelectionResult",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl Send for LargestFirstCoinSelection",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Send for OldestFirstCoinSelection",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Send for BranchAndBoundCoinSelection",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Send for FullyNodedExport",1,["bdk::wallet::export::FullyNodedExport"]],["impl Send for SignerId",1,["bdk::wallet::signer::SignerId"]],["impl Send for SignerError",1,["bdk::wallet::signer::SignerError"]],["impl Send for SignerContext",1,["bdk::wallet::signer::SignerContext"]],["impl<S> Send for SignerWrapper<S>where
        S: Send,
    ",1,["bdk::wallet::signer::SignerWrapper"]],["impl Send for SignerOrdering",1,["bdk::wallet::signer::SignerOrdering"]],["impl Send for SignersContainer",1,["bdk::wallet::signer::SignersContainer"]],["impl Send for SignOptions",1,["bdk::wallet::signer::SignOptions"]],["impl Send for TapLeavesOptions",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl Send for CreateTx",1,["bdk::wallet::tx_builder::CreateTx"]],["impl Send for BumpFee",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> !Send for TxBuilder<'a, Cs, Ctx>",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl Send for AddUtxoError",1,["bdk::wallet::tx_builder::AddUtxoError"]],["impl Send for AddForeignUtxoError",1,["bdk::wallet::tx_builder::AddForeignUtxoError"]],["impl Send for AllowShrinkingError",1,["bdk::wallet::tx_builder::AllowShrinkingError"]],["impl Send for TxOrdering",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl Send for ChangeSpendPolicy",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl Send for MiniscriptPsbtError",1,["bdk::wallet::error::MiniscriptPsbtError"]],["impl Send for CreateTxError",1,["bdk::wallet::error::CreateTxError"]],["impl Send for BuildFeeBumpError",1,["bdk::wallet::error::BuildFeeBumpError"]],["impl Send for Wallet",1,["bdk::wallet::Wallet"]],["impl Send for Update",1,["bdk::wallet::Update"]],["impl Send for ChangeSet",1,["bdk::wallet::ChangeSet"]],["impl Send for AddressInfo",1,["bdk::wallet::AddressInfo"]],["impl Send for NewError",1,["bdk::wallet::NewError"]],["impl Send for LoadError",1,["bdk::wallet::LoadError"]],["impl Send for NewOrLoadError",1,["bdk::wallet::NewOrLoadError"]],["impl Send for InsertTxError",1,["bdk::wallet::InsertTxError"]],["impl Send for ApplyBlockError",1,["bdk::wallet::ApplyBlockError"]]], "bdk_bitcoind_rpc":[["impl<'c, C> Send for Emitter<'c, C>where
        C: Sync,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Send for BlockEvent<B>where
        B: Send,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> Send for SpkTxOutIndex<I>where
        I: Send,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Send for ChainPosition<A>where
        A: Send,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Send for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Send for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Send for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Send for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Send for FullTxOut<A>where
        A: Send,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Send for IndexedTxGraph<A, I>where
        A: Send,
        I: Send,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Send for ChangeSet<A, IA>where
        A: Send,
        IA: Send,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Send for KeychainTxOutIndex<K>where
        K: Send,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K> Send for ChangeSet<K>where
        K: Send,
    ",1,["bdk_chain::keychain::ChangeSet"]],["impl Send for Balance",1,["bdk_chain::keychain::Balance"]],["impl Send for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Send for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Send for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Send for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Send for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Send for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Send for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Send for TxGraph<A>where
        A: Send,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Send for TxNode<'a, T, A>where
        A: Sync,
        T: Send,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Send for CanonicalTx<'a, T, A>where
        A: Sync,
        T: Send,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Send for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Send for ChangeSet<A>where
        A: Send,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Send for TxAncestors<'g, A, F>where
        A: Sync,
        F: Send,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Send for TxDescendants<'g, A, F>where
        A: Sync,
        F: Send,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<D> Send for SpkIterator<D>where
        D: Send,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl Send for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Send for SyncResult<A>where
        A: Send,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> Send for FullScanRequest<K>where
        K: Send,
    ",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Send for FullScanResult<K>where
        K: Send,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_chain":[["impl<I> Send for SpkTxOutIndex<I>where
        I: Send,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Send for ChainPosition<A>where
        A: Send,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Send for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Send for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Send for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Send for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Send for FullTxOut<A>where
        A: Send,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Send for IndexedTxGraph<A, I>where
        A: Send,
        I: Send,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Send for ChangeSet<A, IA>where
        A: Send,
        IA: Send,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Send for ChangeSet<K>where
        K: Send,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Send for KeychainTxOutIndex<K>where
        K: Send,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl Send for Balance",1,["bdk_chain::keychain::Balance"]],["impl Send for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Send for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Send for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Send for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Send for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Send for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Send for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Send for TxGraph<A>where
        A: Send,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Send for TxNode<'a, T, A>where
        A: Sync,
        T: Send,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Send for CanonicalTx<'a, T, A>where
        A: Sync,
        T: Send,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Send for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Send for ChangeSet<A>where
        A: Send,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Send for TxAncestors<'g, A, F>where
        A: Sync,
        F: Send,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Send for TxDescendants<'g, A, F>where
        A: Sync,
        F: Send,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl Send for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> Send for SpkIterator<D>where
        D: Send,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl Send for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Send for SyncResult<A>where
        A: Send,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> Send for FullScanRequest<K>where
        K: Send,
    ",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Send for FullScanResult<K>where
        K: Send,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], "bdk_coin_select":[["impl Send for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl Send for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> Send for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl Send for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Send for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Send for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Send for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Send for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Send for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> Send for Bnb<'c, S>where
        S: Send,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> !Send for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl Send for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], "bdk_electrum":[["impl Send for RelevantTxids",1,["bdk_electrum::electrum_ext::RelevantTxids"]],["impl Send for ElectrumUpdate",1,["bdk_electrum::electrum_ext::ElectrumUpdate"]]], "bdk_file_store":[["impl<'t, T> Send for EntryIter<'t, T>where
        T: Send,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl Send for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> Send for Store<C>",1,["bdk_file_store::store::Store"]],["impl<C> Send for AggregateChangesetsError<C>where
        C: Send,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl Send for FileError",1,["bdk_file_store::FileError"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralEq.js index 187ff4b204..c13297aba7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralEq.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralEq.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk":[["impl StructuralEq for PkOrF"],["impl StructuralEq for SatisfiableItem"],["impl StructuralEq for Satisfaction"],["impl StructuralEq for Policy"],["impl StructuralEq for Condition"],["impl StructuralEq for PolicyError"],["impl StructuralEq for ScriptContextEnum"],["impl StructuralEq for KeychainKind"],["impl StructuralEq for LocalOutput"],["impl StructuralEq for WeightedUtxo"],["impl StructuralEq for Utxo"],["impl StructuralEq for SignerId"],["impl StructuralEq for SignerContext"],["impl StructuralEq for SignerOrdering"],["impl StructuralEq for TapLeavesOptions"],["impl StructuralEq for TxOrdering"],["impl StructuralEq for ChangeSpendPolicy"],["impl StructuralEq for AddressInfo"]], -"bdk_chain":[["impl<A> StructuralEq for ChainPosition<A>"],["impl StructuralEq for ConfirmationTime"],["impl StructuralEq for BlockId"],["impl StructuralEq for ConfirmationHeightAnchor"],["impl StructuralEq for ConfirmationTimeHeightAnchor"],["impl<A> StructuralEq for FullTxOut<A>"],["impl StructuralEq for Balance"],["impl<'a, T, A> StructuralEq for TxNode<'a, T, A>"],["impl<'a, T, A> StructuralEq for CanonicalTx<'a, T, A>"],["impl StructuralEq for CalculateFeeError"]], +"bdk_chain":[["impl<A> StructuralEq for ChainPosition<A>"],["impl StructuralEq for ConfirmationTime"],["impl StructuralEq for BlockId"],["impl StructuralEq for ConfirmationHeightAnchor"],["impl StructuralEq for ConfirmationTimeHeightAnchor"],["impl<A> StructuralEq for FullTxOut<A>"],["impl StructuralEq for Balance"],["impl<'a, T, A> StructuralEq for TxNode<'a, T, A>"],["impl<'a, T, A> StructuralEq for CanonicalTx<'a, T, A>"],["impl StructuralEq for CalculateFeeError"],["impl StructuralEq for DescriptorId"]], "bdk_coin_select":[["impl StructuralEq for SelectionConstraint"],["impl StructuralEq for ExcessStrategyKind"]], "example_cli":[["impl StructuralEq for Keychain"]] };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/implementors/core/marker/trait.StructuralPartialEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralPartialEq.js index 1967ec6fac..e6efc0ee0f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralPartialEq.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralPartialEq.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk":[["impl StructuralPartialEq for PkOrF"],["impl StructuralPartialEq for SatisfiableItem"],["impl StructuralPartialEq for Satisfaction"],["impl StructuralPartialEq for Policy"],["impl StructuralPartialEq for Condition"],["impl StructuralPartialEq for PolicyError"],["impl StructuralPartialEq for ScriptContextEnum"],["impl StructuralPartialEq for KeychainKind"],["impl StructuralPartialEq for LocalOutput"],["impl StructuralPartialEq for WeightedUtxo"],["impl StructuralPartialEq for Utxo"],["impl StructuralPartialEq for SignerId"],["impl StructuralPartialEq for SignerContext"],["impl StructuralPartialEq for SignerOrdering"],["impl StructuralPartialEq for TapLeavesOptions"],["impl StructuralPartialEq for TxOrdering"],["impl StructuralPartialEq for ChangeSpendPolicy"],["impl StructuralPartialEq for ChangeSet"],["impl StructuralPartialEq for AddressInfo"]], -"bdk_chain":[["impl<A> StructuralPartialEq for ChainPosition<A>"],["impl StructuralPartialEq for ConfirmationTime"],["impl StructuralPartialEq for BlockId"],["impl StructuralPartialEq for ConfirmationHeightAnchor"],["impl StructuralPartialEq for ConfirmationTimeHeightAnchor"],["impl<A> StructuralPartialEq for FullTxOut<A>"],["impl<A, IA> StructuralPartialEq for ChangeSet<A, IA>"],["impl<K> StructuralPartialEq for ChangeSet<K>"],["impl StructuralPartialEq for Balance"],["impl StructuralPartialEq for LocalChain"],["impl StructuralPartialEq for MissingGenesisError"],["impl StructuralPartialEq for AlterCheckPointError"],["impl StructuralPartialEq for CannotConnectError"],["impl StructuralPartialEq for ApplyHeaderError"],["impl<A> StructuralPartialEq for TxGraph<A>"],["impl<'a, T, A> StructuralPartialEq for TxNode<'a, T, A>"],["impl<'a, T, A> StructuralPartialEq for CanonicalTx<'a, T, A>"],["impl StructuralPartialEq for CalculateFeeError"],["impl<A> StructuralPartialEq for ChangeSet<A>"]], +"bdk_chain":[["impl<A> StructuralPartialEq for ChainPosition<A>"],["impl StructuralPartialEq for ConfirmationTime"],["impl StructuralPartialEq for BlockId"],["impl StructuralPartialEq for ConfirmationHeightAnchor"],["impl StructuralPartialEq for ConfirmationTimeHeightAnchor"],["impl<A> StructuralPartialEq for FullTxOut<A>"],["impl<A, IA> StructuralPartialEq for ChangeSet<A, IA>"],["impl<K> StructuralPartialEq for ChangeSet<K>"],["impl StructuralPartialEq for Balance"],["impl StructuralPartialEq for LocalChain"],["impl StructuralPartialEq for MissingGenesisError"],["impl StructuralPartialEq for AlterCheckPointError"],["impl StructuralPartialEq for CannotConnectError"],["impl StructuralPartialEq for ApplyHeaderError"],["impl<A> StructuralPartialEq for TxGraph<A>"],["impl<'a, T, A> StructuralPartialEq for TxNode<'a, T, A>"],["impl<'a, T, A> StructuralPartialEq for CanonicalTx<'a, T, A>"],["impl StructuralPartialEq for CalculateFeeError"],["impl<A> StructuralPartialEq for ChangeSet<A>"],["impl StructuralPartialEq for DescriptorId"]], "bdk_coin_select":[["impl StructuralPartialEq for SelectionConstraint"],["impl StructuralPartialEq for ExcessStrategyKind"]], "example_cli":[["impl StructuralPartialEq for Keychain"]], "example_electrum":[["impl StructuralPartialEq for ScanOptions"]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Sync.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Sync.js index 85278dde73..2a8b93dbae 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Sync.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Sync.js @@ -1,7 +1,7 @@ (function() {var implementors = { "bdk":[["impl Sync for Error",1,["bdk::descriptor::error::Error"]],["impl Sync for PkOrF",1,["bdk::descriptor::policy::PkOrF"]],["impl Sync for SatisfiableItem",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl Sync for Satisfaction",1,["bdk::descriptor::policy::Satisfaction"]],["impl Sync for Policy",1,["bdk::descriptor::policy::Policy"]],["impl Sync for Condition",1,["bdk::descriptor::policy::Condition"]],["impl Sync for PolicyError",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> Sync for BuildSatisfaction<'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> Sync for P2Pkh<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> Sync for P2Wpkh_P2Sh<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> Sync for P2Wpkh<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> Sync for P2TR<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::P2TR"]],["impl<K> Sync for Bip44<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::Bip44"]],["impl<K> Sync for Bip44Public<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> Sync for Bip49<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::Bip49"]],["impl<K> Sync for Bip49Public<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> Sync for Bip84<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::Bip84"]],["impl<K> Sync for Bip84Public<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::Bip84Public"]],["impl<K> Sync for Bip86<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::Bip86"]],["impl<K> Sync for Bip86Public<K>where
        K: Sync,
    ",1,["bdk::descriptor::template::Bip86Public"]],["impl<Ctx> Sync for DescriptorKey<Ctx>where
        Ctx: Sync,
    ",1,["bdk::keys::DescriptorKey"]],["impl Sync for ScriptContextEnum",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> Sync for ExtendedKey<Ctx>where
        Ctx: Sync,
    ",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> Sync for GeneratedKey<K, Ctx>where
        Ctx: Sync,
        K: Sync,
    ",1,["bdk::keys::GeneratedKey"]],["impl Sync for PrivateKeyGenerateOptions",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl Sync for KeyError",1,["bdk::keys::KeyError"]],["impl Sync for KeychainKind",1,["bdk::types::KeychainKind"]],["impl Sync for LocalOutput",1,["bdk::types::LocalOutput"]],["impl Sync for WeightedUtxo",1,["bdk::types::WeightedUtxo"]],["impl Sync for Utxo",1,["bdk::types::Utxo"]],["impl Sync for Error",1,["bdk::wallet::coin_selection::Error"]],["impl Sync for Excess",1,["bdk::wallet::coin_selection::Excess"]],["impl Sync for CoinSelectionResult",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl Sync for LargestFirstCoinSelection",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Sync for OldestFirstCoinSelection",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Sync for BranchAndBoundCoinSelection",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Sync for FullyNodedExport",1,["bdk::wallet::export::FullyNodedExport"]],["impl Sync for SignerId",1,["bdk::wallet::signer::SignerId"]],["impl Sync for SignerError",1,["bdk::wallet::signer::SignerError"]],["impl Sync for SignerContext",1,["bdk::wallet::signer::SignerContext"]],["impl<S> Sync for SignerWrapper<S>where
        S: Sync,
    ",1,["bdk::wallet::signer::SignerWrapper"]],["impl Sync for SignerOrdering",1,["bdk::wallet::signer::SignerOrdering"]],["impl Sync for SignersContainer",1,["bdk::wallet::signer::SignersContainer"]],["impl Sync for SignOptions",1,["bdk::wallet::signer::SignOptions"]],["impl Sync for TapLeavesOptions",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl Sync for CreateTx",1,["bdk::wallet::tx_builder::CreateTx"]],["impl Sync for BumpFee",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> !Sync for TxBuilder<'a, Cs, Ctx>",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl Sync for AddUtxoError",1,["bdk::wallet::tx_builder::AddUtxoError"]],["impl Sync for AddForeignUtxoError",1,["bdk::wallet::tx_builder::AddForeignUtxoError"]],["impl Sync for AllowShrinkingError",1,["bdk::wallet::tx_builder::AllowShrinkingError"]],["impl Sync for TxOrdering",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl Sync for ChangeSpendPolicy",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl Sync for MiniscriptPsbtError",1,["bdk::wallet::error::MiniscriptPsbtError"]],["impl Sync for CreateTxError",1,["bdk::wallet::error::CreateTxError"]],["impl Sync for BuildFeeBumpError",1,["bdk::wallet::error::BuildFeeBumpError"]],["impl Sync for Wallet",1,["bdk::wallet::Wallet"]],["impl Sync for Update",1,["bdk::wallet::Update"]],["impl Sync for ChangeSet",1,["bdk::wallet::ChangeSet"]],["impl Sync for AddressInfo",1,["bdk::wallet::AddressInfo"]],["impl Sync for NewError",1,["bdk::wallet::NewError"]],["impl Sync for LoadError",1,["bdk::wallet::LoadError"]],["impl Sync for NewOrLoadError",1,["bdk::wallet::NewOrLoadError"]],["impl Sync for InsertTxError",1,["bdk::wallet::InsertTxError"]],["impl Sync for ApplyBlockError",1,["bdk::wallet::ApplyBlockError"]]], "bdk_bitcoind_rpc":[["impl<'c, C> Sync for Emitter<'c, C>where
        C: Sync,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Sync for BlockEvent<B>where
        B: Sync,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> Sync for SpkTxOutIndex<I>where
        I: Sync,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Sync for ChainPosition<A>where
        A: Sync,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Sync for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Sync for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Sync for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Sync for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Sync for FullTxOut<A>where
        A: Sync,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Sync for IndexedTxGraph<A, I>where
        A: Sync,
        I: Sync,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Sync for ChangeSet<A, IA>where
        A: Sync,
        IA: Sync,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Sync for KeychainTxOutIndex<K>where
        K: Sync,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K> Sync for ChangeSet<K>where
        K: Sync,
    ",1,["bdk_chain::keychain::ChangeSet"]],["impl Sync for Balance",1,["bdk_chain::keychain::Balance"]],["impl Sync for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Sync for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Sync for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Sync for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Sync for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Sync for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Sync for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Sync for TxGraph<A>where
        A: Sync,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Sync for TxNode<'a, T, A>where
        A: Sync,
        T: Sync,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Sync for CanonicalTx<'a, T, A>where
        A: Sync,
        T: Sync,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Sync for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Sync for ChangeSet<A>where
        A: Sync,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Sync for TxAncestors<'g, A, F>where
        A: Sync,
        F: Sync,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Sync for TxDescendants<'g, A, F>where
        A: Sync,
        F: Sync,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<D> Sync for SpkIterator<D>where
        D: Sync,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl !Sync for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Sync for SyncResult<A>where
        A: Sync,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> !Sync for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Sync for FullScanResult<K>where
        K: Sync,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_chain":[["impl<I> Sync for SpkTxOutIndex<I>where
        I: Sync,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Sync for ChainPosition<A>where
        A: Sync,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Sync for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Sync for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Sync for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Sync for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Sync for FullTxOut<A>where
        A: Sync,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Sync for IndexedTxGraph<A, I>where
        A: Sync,
        I: Sync,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Sync for ChangeSet<A, IA>where
        A: Sync,
        IA: Sync,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Sync for ChangeSet<K>where
        K: Sync,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Sync for KeychainTxOutIndex<K>where
        K: Sync,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl Sync for Balance",1,["bdk_chain::keychain::Balance"]],["impl Sync for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Sync for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Sync for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Sync for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Sync for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Sync for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Sync for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Sync for TxGraph<A>where
        A: Sync,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Sync for TxNode<'a, T, A>where
        A: Sync,
        T: Sync,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Sync for CanonicalTx<'a, T, A>where
        A: Sync,
        T: Sync,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Sync for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Sync for ChangeSet<A>where
        A: Sync,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Sync for TxAncestors<'g, A, F>where
        A: Sync,
        F: Sync,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Sync for TxDescendants<'g, A, F>where
        A: Sync,
        F: Sync,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl Sync for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> Sync for SpkIterator<D>where
        D: Sync,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl !Sync for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Sync for SyncResult<A>where
        A: Sync,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> !Sync for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Sync for FullScanResult<K>where
        K: Sync,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], "bdk_coin_select":[["impl Sync for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl Sync for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> Sync for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl Sync for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Sync for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Sync for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Sync for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Sync for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Sync for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> Sync for Bnb<'c, S>where
        S: Sync,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> !Sync for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl Sync for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], "bdk_electrum":[["impl Sync for RelevantTxids",1,["bdk_electrum::electrum_ext::RelevantTxids"]],["impl Sync for ElectrumUpdate",1,["bdk_electrum::electrum_ext::ElectrumUpdate"]]], "bdk_file_store":[["impl<'t, T> Sync for EntryIter<'t, T>where
        T: Sync,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl Sync for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> Sync for Store<C>",1,["bdk_file_store::store::Store"]],["impl<C> Sync for AggregateChangesetsError<C>where
        C: Sync,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl Sync for FileError",1,["bdk_file_store::FileError"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Unpin.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Unpin.js index 1ee76b31db..a3fc643a0b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Unpin.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Unpin.js @@ -1,7 +1,7 @@ (function() {var implementors = { "bdk":[["impl Unpin for Error",1,["bdk::descriptor::error::Error"]],["impl Unpin for PkOrF",1,["bdk::descriptor::policy::PkOrF"]],["impl Unpin for SatisfiableItem",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl Unpin for Satisfaction",1,["bdk::descriptor::policy::Satisfaction"]],["impl Unpin for Policy",1,["bdk::descriptor::policy::Policy"]],["impl Unpin for Condition",1,["bdk::descriptor::policy::Condition"]],["impl Unpin for PolicyError",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> Unpin for BuildSatisfaction<'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> Unpin for P2Pkh<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> Unpin for P2Wpkh_P2Sh<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> Unpin for P2Wpkh<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> Unpin for P2TR<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::P2TR"]],["impl<K> Unpin for Bip44<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::Bip44"]],["impl<K> Unpin for Bip44Public<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> Unpin for Bip49<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::Bip49"]],["impl<K> Unpin for Bip49Public<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> Unpin for Bip84<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::Bip84"]],["impl<K> Unpin for Bip84Public<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::Bip84Public"]],["impl<K> Unpin for Bip86<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::Bip86"]],["impl<K> Unpin for Bip86Public<K>where
        K: Unpin,
    ",1,["bdk::descriptor::template::Bip86Public"]],["impl<Ctx> Unpin for DescriptorKey<Ctx>where
        Ctx: Unpin,
    ",1,["bdk::keys::DescriptorKey"]],["impl Unpin for ScriptContextEnum",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> Unpin for ExtendedKey<Ctx>where
        Ctx: Unpin,
    ",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> Unpin for GeneratedKey<K, Ctx>where
        Ctx: Unpin,
        K: Unpin,
    ",1,["bdk::keys::GeneratedKey"]],["impl Unpin for PrivateKeyGenerateOptions",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl Unpin for KeyError",1,["bdk::keys::KeyError"]],["impl Unpin for KeychainKind",1,["bdk::types::KeychainKind"]],["impl Unpin for LocalOutput",1,["bdk::types::LocalOutput"]],["impl Unpin for WeightedUtxo",1,["bdk::types::WeightedUtxo"]],["impl Unpin for Utxo",1,["bdk::types::Utxo"]],["impl Unpin for Error",1,["bdk::wallet::coin_selection::Error"]],["impl Unpin for Excess",1,["bdk::wallet::coin_selection::Excess"]],["impl Unpin for CoinSelectionResult",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl Unpin for LargestFirstCoinSelection",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Unpin for OldestFirstCoinSelection",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Unpin for BranchAndBoundCoinSelection",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Unpin for FullyNodedExport",1,["bdk::wallet::export::FullyNodedExport"]],["impl Unpin for SignerId",1,["bdk::wallet::signer::SignerId"]],["impl Unpin for SignerError",1,["bdk::wallet::signer::SignerError"]],["impl Unpin for SignerContext",1,["bdk::wallet::signer::SignerContext"]],["impl<S> Unpin for SignerWrapper<S>where
        S: Unpin,
    ",1,["bdk::wallet::signer::SignerWrapper"]],["impl Unpin for SignerOrdering",1,["bdk::wallet::signer::SignerOrdering"]],["impl Unpin for SignersContainer",1,["bdk::wallet::signer::SignersContainer"]],["impl Unpin for SignOptions",1,["bdk::wallet::signer::SignOptions"]],["impl Unpin for TapLeavesOptions",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl Unpin for CreateTx",1,["bdk::wallet::tx_builder::CreateTx"]],["impl Unpin for BumpFee",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> Unpin for TxBuilder<'a, Cs, Ctx>where
        Cs: Unpin,
        Ctx: Unpin,
    ",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl Unpin for AddUtxoError",1,["bdk::wallet::tx_builder::AddUtxoError"]],["impl Unpin for AddForeignUtxoError",1,["bdk::wallet::tx_builder::AddForeignUtxoError"]],["impl Unpin for AllowShrinkingError",1,["bdk::wallet::tx_builder::AllowShrinkingError"]],["impl Unpin for TxOrdering",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl Unpin for ChangeSpendPolicy",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl Unpin for MiniscriptPsbtError",1,["bdk::wallet::error::MiniscriptPsbtError"]],["impl Unpin for CreateTxError",1,["bdk::wallet::error::CreateTxError"]],["impl Unpin for BuildFeeBumpError",1,["bdk::wallet::error::BuildFeeBumpError"]],["impl Unpin for Wallet",1,["bdk::wallet::Wallet"]],["impl Unpin for Update",1,["bdk::wallet::Update"]],["impl Unpin for ChangeSet",1,["bdk::wallet::ChangeSet"]],["impl Unpin for AddressInfo",1,["bdk::wallet::AddressInfo"]],["impl Unpin for NewError",1,["bdk::wallet::NewError"]],["impl Unpin for LoadError",1,["bdk::wallet::LoadError"]],["impl Unpin for NewOrLoadError",1,["bdk::wallet::NewOrLoadError"]],["impl Unpin for InsertTxError",1,["bdk::wallet::InsertTxError"]],["impl Unpin for ApplyBlockError",1,["bdk::wallet::ApplyBlockError"]]], "bdk_bitcoind_rpc":[["impl<'c, C> Unpin for Emitter<'c, C>",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Unpin for BlockEvent<B>where
        B: Unpin,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> Unpin for SpkTxOutIndex<I>where
        I: Unpin,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Unpin for ChainPosition<A>where
        A: Unpin,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Unpin for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Unpin for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Unpin for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Unpin for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Unpin for FullTxOut<A>where
        A: Unpin,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Unpin for IndexedTxGraph<A, I>where
        I: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Unpin for ChangeSet<A, IA>where
        IA: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Unpin for KeychainTxOutIndex<K>where
        K: Unpin,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K> Unpin for ChangeSet<K>",1,["bdk_chain::keychain::ChangeSet"]],["impl Unpin for Balance",1,["bdk_chain::keychain::Balance"]],["impl Unpin for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Unpin for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Unpin for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Unpin for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Unpin for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Unpin for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Unpin for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Unpin for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Unpin for TxNode<'a, T, A>where
        T: Unpin,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Unpin for CanonicalTx<'a, T, A>where
        T: Unpin,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Unpin for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Unpin for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Unpin for TxAncestors<'g, A, F>where
        F: Unpin,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Unpin for TxDescendants<'g, A, F>where
        F: Unpin,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<D> Unpin for SpkIterator<D>where
        D: Unpin,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl Unpin for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Unpin for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> Unpin for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Unpin for FullScanResult<K>",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_chain":[["impl<I> Unpin for SpkTxOutIndex<I>where
        I: Unpin,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Unpin for ChainPosition<A>where
        A: Unpin,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Unpin for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Unpin for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Unpin for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Unpin for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Unpin for FullTxOut<A>where
        A: Unpin,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Unpin for IndexedTxGraph<A, I>where
        I: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Unpin for ChangeSet<A, IA>where
        IA: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Unpin for ChangeSet<K>",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Unpin for KeychainTxOutIndex<K>",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl Unpin for Balance",1,["bdk_chain::keychain::Balance"]],["impl Unpin for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Unpin for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Unpin for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Unpin for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Unpin for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Unpin for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Unpin for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Unpin for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Unpin for TxNode<'a, T, A>where
        T: Unpin,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Unpin for CanonicalTx<'a, T, A>where
        T: Unpin,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Unpin for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Unpin for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Unpin for TxAncestors<'g, A, F>where
        F: Unpin,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Unpin for TxDescendants<'g, A, F>where
        F: Unpin,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl Unpin for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> Unpin for SpkIterator<D>where
        D: Unpin,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl Unpin for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Unpin for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> Unpin for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Unpin for FullScanResult<K>",1,["bdk_chain::spk_client::FullScanResult"]]], "bdk_coin_select":[["impl Unpin for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl Unpin for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> Unpin for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl Unpin for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Unpin for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Unpin for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Unpin for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Unpin for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Unpin for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> Unpin for Bnb<'c, S>where
        S: Unpin,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> Unpin for BnbIter<'c, 'f, S>where
        S: Unpin,
        'c: 'f,
    ",1,["bdk_coin_select::bnb::BnbIter"]],["impl Unpin for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], "bdk_electrum":[["impl Unpin for RelevantTxids",1,["bdk_electrum::electrum_ext::RelevantTxids"]],["impl Unpin for ElectrumUpdate",1,["bdk_electrum::electrum_ext::ElectrumUpdate"]]], "bdk_file_store":[["impl<'t, T> Unpin for EntryIter<'t, T>where
        T: Unpin,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl Unpin for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> Unpin for Store<C>where
        C: Unpin,
    ",1,["bdk_file_store::store::Store"]],["impl<C> Unpin for AggregateChangesetsError<C>where
        C: Unpin,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl Unpin for FileError",1,["bdk_file_store::FileError"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/index/trait.Index.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/index/trait.Index.js new file mode 100644 index 0000000000..14b0d708e6 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/index/trait.Index.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl<I: SliceIndex<[u8]>> Index<I> for DescriptorId"]] +};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/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js index cd3fa7e1d9..1135959af8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,7 +1,7 @@ (function() {var implementors = { "bdk":[["impl RefUnwindSafe for Error",1,["bdk::descriptor::error::Error"]],["impl RefUnwindSafe for PkOrF",1,["bdk::descriptor::policy::PkOrF"]],["impl RefUnwindSafe for SatisfiableItem",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl RefUnwindSafe for Satisfaction",1,["bdk::descriptor::policy::Satisfaction"]],["impl RefUnwindSafe for Policy",1,["bdk::descriptor::policy::Policy"]],["impl RefUnwindSafe for Condition",1,["bdk::descriptor::policy::Condition"]],["impl RefUnwindSafe for PolicyError",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> RefUnwindSafe for BuildSatisfaction<'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> RefUnwindSafe for P2Pkh<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> RefUnwindSafe for P2Wpkh_P2Sh<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> RefUnwindSafe for P2Wpkh<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> RefUnwindSafe for P2TR<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::P2TR"]],["impl<K> RefUnwindSafe for Bip44<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::Bip44"]],["impl<K> RefUnwindSafe for Bip44Public<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> RefUnwindSafe for Bip49<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::Bip49"]],["impl<K> RefUnwindSafe for Bip49Public<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> RefUnwindSafe for Bip84<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::Bip84"]],["impl<K> RefUnwindSafe for Bip84Public<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::Bip84Public"]],["impl<K> RefUnwindSafe for Bip86<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::Bip86"]],["impl<K> RefUnwindSafe for Bip86Public<K>where
        K: RefUnwindSafe,
    ",1,["bdk::descriptor::template::Bip86Public"]],["impl<Ctx> RefUnwindSafe for DescriptorKey<Ctx>where
        Ctx: RefUnwindSafe,
    ",1,["bdk::keys::DescriptorKey"]],["impl RefUnwindSafe for ScriptContextEnum",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> RefUnwindSafe for ExtendedKey<Ctx>where
        Ctx: RefUnwindSafe,
    ",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> RefUnwindSafe for GeneratedKey<K, Ctx>where
        Ctx: RefUnwindSafe,
        K: RefUnwindSafe,
    ",1,["bdk::keys::GeneratedKey"]],["impl RefUnwindSafe for PrivateKeyGenerateOptions",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl RefUnwindSafe for KeyError",1,["bdk::keys::KeyError"]],["impl RefUnwindSafe for KeychainKind",1,["bdk::types::KeychainKind"]],["impl RefUnwindSafe for LocalOutput",1,["bdk::types::LocalOutput"]],["impl RefUnwindSafe for WeightedUtxo",1,["bdk::types::WeightedUtxo"]],["impl RefUnwindSafe for Utxo",1,["bdk::types::Utxo"]],["impl RefUnwindSafe for Error",1,["bdk::wallet::coin_selection::Error"]],["impl RefUnwindSafe for Excess",1,["bdk::wallet::coin_selection::Excess"]],["impl RefUnwindSafe for CoinSelectionResult",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl RefUnwindSafe for LargestFirstCoinSelection",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl RefUnwindSafe for OldestFirstCoinSelection",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl RefUnwindSafe for BranchAndBoundCoinSelection",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl RefUnwindSafe for FullyNodedExport",1,["bdk::wallet::export::FullyNodedExport"]],["impl RefUnwindSafe for SignerId",1,["bdk::wallet::signer::SignerId"]],["impl RefUnwindSafe for SignerError",1,["bdk::wallet::signer::SignerError"]],["impl RefUnwindSafe for SignerContext",1,["bdk::wallet::signer::SignerContext"]],["impl<S> RefUnwindSafe for SignerWrapper<S>where
        S: RefUnwindSafe,
    ",1,["bdk::wallet::signer::SignerWrapper"]],["impl RefUnwindSafe for SignerOrdering",1,["bdk::wallet::signer::SignerOrdering"]],["impl !RefUnwindSafe for SignersContainer",1,["bdk::wallet::signer::SignersContainer"]],["impl RefUnwindSafe for SignOptions",1,["bdk::wallet::signer::SignOptions"]],["impl RefUnwindSafe for TapLeavesOptions",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl RefUnwindSafe for CreateTx",1,["bdk::wallet::tx_builder::CreateTx"]],["impl RefUnwindSafe for BumpFee",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> !RefUnwindSafe for TxBuilder<'a, Cs, Ctx>",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl RefUnwindSafe for AddUtxoError",1,["bdk::wallet::tx_builder::AddUtxoError"]],["impl RefUnwindSafe for AddForeignUtxoError",1,["bdk::wallet::tx_builder::AddForeignUtxoError"]],["impl RefUnwindSafe for AllowShrinkingError",1,["bdk::wallet::tx_builder::AllowShrinkingError"]],["impl RefUnwindSafe for TxOrdering",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl RefUnwindSafe for ChangeSpendPolicy",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl RefUnwindSafe for MiniscriptPsbtError",1,["bdk::wallet::error::MiniscriptPsbtError"]],["impl !RefUnwindSafe for CreateTxError",1,["bdk::wallet::error::CreateTxError"]],["impl RefUnwindSafe for BuildFeeBumpError",1,["bdk::wallet::error::BuildFeeBumpError"]],["impl !RefUnwindSafe for Wallet",1,["bdk::wallet::Wallet"]],["impl RefUnwindSafe for Update",1,["bdk::wallet::Update"]],["impl RefUnwindSafe for ChangeSet",1,["bdk::wallet::ChangeSet"]],["impl RefUnwindSafe for AddressInfo",1,["bdk::wallet::AddressInfo"]],["impl !RefUnwindSafe for NewError",1,["bdk::wallet::NewError"]],["impl !RefUnwindSafe for LoadError",1,["bdk::wallet::LoadError"]],["impl !RefUnwindSafe for NewOrLoadError",1,["bdk::wallet::NewOrLoadError"]],["impl RefUnwindSafe for InsertTxError",1,["bdk::wallet::InsertTxError"]],["impl RefUnwindSafe for ApplyBlockError",1,["bdk::wallet::ApplyBlockError"]]], "bdk_bitcoind_rpc":[["impl<'c, C> RefUnwindSafe for Emitter<'c, C>where
        C: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> RefUnwindSafe for BlockEvent<B>where
        B: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> RefUnwindSafe for SpkTxOutIndex<I>where
        I: RefUnwindSafe,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> RefUnwindSafe for ChainPosition<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl RefUnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl RefUnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl RefUnwindSafe for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl RefUnwindSafe for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> RefUnwindSafe for FullTxOut<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> RefUnwindSafe for IndexedTxGraph<A, I>where
        A: RefUnwindSafe,
        I: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> RefUnwindSafe for ChangeSet<A, IA>where
        A: RefUnwindSafe,
        IA: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> RefUnwindSafe for KeychainTxOutIndex<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K> RefUnwindSafe for ChangeSet<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::ChangeSet"]],["impl RefUnwindSafe for Balance",1,["bdk_chain::keychain::Balance"]],["impl RefUnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl RefUnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl RefUnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl RefUnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl RefUnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl RefUnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl RefUnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> RefUnwindSafe for TxGraph<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> RefUnwindSafe for TxNode<'a, T, A>where
        A: RefUnwindSafe,
        T: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> RefUnwindSafe for CanonicalTx<'a, T, A>where
        A: RefUnwindSafe,
        T: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl RefUnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> RefUnwindSafe for ChangeSet<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> RefUnwindSafe for TxAncestors<'g, A, F>where
        A: RefUnwindSafe,
        F: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> RefUnwindSafe for TxDescendants<'g, A, F>where
        A: RefUnwindSafe,
        F: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<D> RefUnwindSafe for SpkIterator<D>where
        D: RefUnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl !RefUnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> RefUnwindSafe for SyncResult<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> !RefUnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> RefUnwindSafe for FullScanResult<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_chain":[["impl<I> RefUnwindSafe for SpkTxOutIndex<I>where
        I: RefUnwindSafe,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> RefUnwindSafe for ChainPosition<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl RefUnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl RefUnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl RefUnwindSafe for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl RefUnwindSafe for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> RefUnwindSafe for FullTxOut<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> RefUnwindSafe for IndexedTxGraph<A, I>where
        A: RefUnwindSafe,
        I: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> RefUnwindSafe for ChangeSet<A, IA>where
        A: RefUnwindSafe,
        IA: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> RefUnwindSafe for ChangeSet<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> RefUnwindSafe for KeychainTxOutIndex<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl RefUnwindSafe for Balance",1,["bdk_chain::keychain::Balance"]],["impl RefUnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl RefUnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl RefUnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl RefUnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl RefUnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl RefUnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl RefUnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> RefUnwindSafe for TxGraph<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> RefUnwindSafe for TxNode<'a, T, A>where
        A: RefUnwindSafe,
        T: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> RefUnwindSafe for CanonicalTx<'a, T, A>where
        A: RefUnwindSafe,
        T: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl RefUnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> RefUnwindSafe for ChangeSet<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> RefUnwindSafe for TxAncestors<'g, A, F>where
        A: RefUnwindSafe,
        F: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> RefUnwindSafe for TxDescendants<'g, A, F>where
        A: RefUnwindSafe,
        F: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl RefUnwindSafe for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> RefUnwindSafe for SpkIterator<D>where
        D: RefUnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl !RefUnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> RefUnwindSafe for SyncResult<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> !RefUnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> RefUnwindSafe for FullScanResult<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], "bdk_coin_select":[["impl RefUnwindSafe for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl RefUnwindSafe for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> RefUnwindSafe for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl RefUnwindSafe for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl RefUnwindSafe for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl RefUnwindSafe for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl RefUnwindSafe for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl RefUnwindSafe for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl RefUnwindSafe for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> RefUnwindSafe for Bnb<'c, S>where
        S: RefUnwindSafe,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> !RefUnwindSafe for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl RefUnwindSafe for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], "bdk_electrum":[["impl RefUnwindSafe for RelevantTxids",1,["bdk_electrum::electrum_ext::RelevantTxids"]],["impl RefUnwindSafe for ElectrumUpdate",1,["bdk_electrum::electrum_ext::ElectrumUpdate"]]], "bdk_file_store":[["impl<'t, T> RefUnwindSafe for EntryIter<'t, T>where
        T: RefUnwindSafe,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl !RefUnwindSafe for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> RefUnwindSafe for Store<C>where
        C: RefUnwindSafe,
    ",1,["bdk_file_store::store::Store"]],["impl<C> !RefUnwindSafe for AggregateChangesetsError<C>",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl !RefUnwindSafe for FileError",1,["bdk_file_store::FileError"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.UnwindSafe.js index 33e67e8beb..218aabbf59 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,7 +1,7 @@ (function() {var implementors = { "bdk":[["impl UnwindSafe for Error",1,["bdk::descriptor::error::Error"]],["impl UnwindSafe for PkOrF",1,["bdk::descriptor::policy::PkOrF"]],["impl UnwindSafe for SatisfiableItem",1,["bdk::descriptor::policy::SatisfiableItem"]],["impl UnwindSafe for Satisfaction",1,["bdk::descriptor::policy::Satisfaction"]],["impl UnwindSafe for Policy",1,["bdk::descriptor::policy::Policy"]],["impl UnwindSafe for Condition",1,["bdk::descriptor::policy::Condition"]],["impl UnwindSafe for PolicyError",1,["bdk::descriptor::policy::PolicyError"]],["impl<'a> UnwindSafe for BuildSatisfaction<'a>",1,["bdk::descriptor::policy::BuildSatisfaction"]],["impl<K> UnwindSafe for P2Pkh<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::P2Pkh"]],["impl<K> UnwindSafe for P2Wpkh_P2Sh<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> UnwindSafe for P2Wpkh<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::P2Wpkh"]],["impl<K> UnwindSafe for P2TR<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::P2TR"]],["impl<K> UnwindSafe for Bip44<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::Bip44"]],["impl<K> UnwindSafe for Bip44Public<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::Bip44Public"]],["impl<K> UnwindSafe for Bip49<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::Bip49"]],["impl<K> UnwindSafe for Bip49Public<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::Bip49Public"]],["impl<K> UnwindSafe for Bip84<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::Bip84"]],["impl<K> UnwindSafe for Bip84Public<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::Bip84Public"]],["impl<K> UnwindSafe for Bip86<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::Bip86"]],["impl<K> UnwindSafe for Bip86Public<K>where
        K: UnwindSafe,
    ",1,["bdk::descriptor::template::Bip86Public"]],["impl<Ctx> UnwindSafe for DescriptorKey<Ctx>where
        Ctx: UnwindSafe,
    ",1,["bdk::keys::DescriptorKey"]],["impl UnwindSafe for ScriptContextEnum",1,["bdk::keys::ScriptContextEnum"]],["impl<Ctx> UnwindSafe for ExtendedKey<Ctx>where
        Ctx: UnwindSafe,
    ",1,["bdk::keys::ExtendedKey"]],["impl<K, Ctx> UnwindSafe for GeneratedKey<K, Ctx>where
        Ctx: UnwindSafe,
        K: UnwindSafe,
    ",1,["bdk::keys::GeneratedKey"]],["impl UnwindSafe for PrivateKeyGenerateOptions",1,["bdk::keys::PrivateKeyGenerateOptions"]],["impl UnwindSafe for KeyError",1,["bdk::keys::KeyError"]],["impl UnwindSafe for KeychainKind",1,["bdk::types::KeychainKind"]],["impl UnwindSafe for LocalOutput",1,["bdk::types::LocalOutput"]],["impl UnwindSafe for WeightedUtxo",1,["bdk::types::WeightedUtxo"]],["impl UnwindSafe for Utxo",1,["bdk::types::Utxo"]],["impl UnwindSafe for Error",1,["bdk::wallet::coin_selection::Error"]],["impl UnwindSafe for Excess",1,["bdk::wallet::coin_selection::Excess"]],["impl UnwindSafe for CoinSelectionResult",1,["bdk::wallet::coin_selection::CoinSelectionResult"]],["impl UnwindSafe for LargestFirstCoinSelection",1,["bdk::wallet::coin_selection::LargestFirstCoinSelection"]],["impl UnwindSafe for OldestFirstCoinSelection",1,["bdk::wallet::coin_selection::OldestFirstCoinSelection"]],["impl UnwindSafe for BranchAndBoundCoinSelection",1,["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl UnwindSafe for FullyNodedExport",1,["bdk::wallet::export::FullyNodedExport"]],["impl UnwindSafe for SignerId",1,["bdk::wallet::signer::SignerId"]],["impl UnwindSafe for SignerError",1,["bdk::wallet::signer::SignerError"]],["impl UnwindSafe for SignerContext",1,["bdk::wallet::signer::SignerContext"]],["impl<S> UnwindSafe for SignerWrapper<S>where
        S: UnwindSafe,
    ",1,["bdk::wallet::signer::SignerWrapper"]],["impl UnwindSafe for SignerOrdering",1,["bdk::wallet::signer::SignerOrdering"]],["impl !UnwindSafe for SignersContainer",1,["bdk::wallet::signer::SignersContainer"]],["impl UnwindSafe for SignOptions",1,["bdk::wallet::signer::SignOptions"]],["impl UnwindSafe for TapLeavesOptions",1,["bdk::wallet::signer::TapLeavesOptions"]],["impl UnwindSafe for CreateTx",1,["bdk::wallet::tx_builder::CreateTx"]],["impl UnwindSafe for BumpFee",1,["bdk::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> !UnwindSafe for TxBuilder<'a, Cs, Ctx>",1,["bdk::wallet::tx_builder::TxBuilder"]],["impl UnwindSafe for AddUtxoError",1,["bdk::wallet::tx_builder::AddUtxoError"]],["impl UnwindSafe for AddForeignUtxoError",1,["bdk::wallet::tx_builder::AddForeignUtxoError"]],["impl UnwindSafe for AllowShrinkingError",1,["bdk::wallet::tx_builder::AllowShrinkingError"]],["impl UnwindSafe for TxOrdering",1,["bdk::wallet::tx_builder::TxOrdering"]],["impl UnwindSafe for ChangeSpendPolicy",1,["bdk::wallet::tx_builder::ChangeSpendPolicy"]],["impl UnwindSafe for MiniscriptPsbtError",1,["bdk::wallet::error::MiniscriptPsbtError"]],["impl !UnwindSafe for CreateTxError",1,["bdk::wallet::error::CreateTxError"]],["impl UnwindSafe for BuildFeeBumpError",1,["bdk::wallet::error::BuildFeeBumpError"]],["impl !UnwindSafe for Wallet",1,["bdk::wallet::Wallet"]],["impl UnwindSafe for Update",1,["bdk::wallet::Update"]],["impl UnwindSafe for ChangeSet",1,["bdk::wallet::ChangeSet"]],["impl UnwindSafe for AddressInfo",1,["bdk::wallet::AddressInfo"]],["impl !UnwindSafe for NewError",1,["bdk::wallet::NewError"]],["impl !UnwindSafe for LoadError",1,["bdk::wallet::LoadError"]],["impl !UnwindSafe for NewOrLoadError",1,["bdk::wallet::NewOrLoadError"]],["impl UnwindSafe for InsertTxError",1,["bdk::wallet::InsertTxError"]],["impl UnwindSafe for ApplyBlockError",1,["bdk::wallet::ApplyBlockError"]]], "bdk_bitcoind_rpc":[["impl<'c, C> UnwindSafe for Emitter<'c, C>where
        C: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> UnwindSafe for BlockEvent<B>where
        B: UnwindSafe,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> UnwindSafe for SpkTxOutIndex<I>where
        I: UnwindSafe + RefUnwindSafe,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> UnwindSafe for ChainPosition<A>where
        A: UnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl UnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl UnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl UnwindSafe for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl UnwindSafe for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> UnwindSafe for FullTxOut<A>where
        A: UnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> UnwindSafe for IndexedTxGraph<A, I>where
        A: RefUnwindSafe,
        I: UnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> UnwindSafe for ChangeSet<A, IA>where
        A: RefUnwindSafe,
        IA: UnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> UnwindSafe for KeychainTxOutIndex<K>where
        K: UnwindSafe + RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K> UnwindSafe for ChangeSet<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::ChangeSet"]],["impl UnwindSafe for Balance",1,["bdk_chain::keychain::Balance"]],["impl UnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl UnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl UnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl UnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl UnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl UnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl UnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> UnwindSafe for TxGraph<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> UnwindSafe for TxNode<'a, T, A>where
        A: RefUnwindSafe,
        T: UnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> UnwindSafe for CanonicalTx<'a, T, A>where
        A: RefUnwindSafe,
        T: UnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl UnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> UnwindSafe for ChangeSet<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> UnwindSafe for TxAncestors<'g, A, F>where
        A: RefUnwindSafe,
        F: UnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> UnwindSafe for TxDescendants<'g, A, F>where
        A: RefUnwindSafe,
        F: UnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<D> UnwindSafe for SpkIterator<D>where
        D: UnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl !UnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> UnwindSafe for SyncResult<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> !UnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> UnwindSafe for FullScanResult<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_chain":[["impl<I> UnwindSafe for SpkTxOutIndex<I>where
        I: UnwindSafe + RefUnwindSafe,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> UnwindSafe for ChainPosition<A>where
        A: UnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl UnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl UnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl UnwindSafe for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl UnwindSafe for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> UnwindSafe for FullTxOut<A>where
        A: UnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> UnwindSafe for IndexedTxGraph<A, I>where
        A: RefUnwindSafe,
        I: UnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> UnwindSafe for ChangeSet<A, IA>where
        A: RefUnwindSafe,
        IA: UnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> UnwindSafe for ChangeSet<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> UnwindSafe for KeychainTxOutIndex<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl UnwindSafe for Balance",1,["bdk_chain::keychain::Balance"]],["impl UnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl UnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl UnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl UnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl UnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl UnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl UnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> UnwindSafe for TxGraph<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> UnwindSafe for TxNode<'a, T, A>where
        A: RefUnwindSafe,
        T: UnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> UnwindSafe for CanonicalTx<'a, T, A>where
        A: RefUnwindSafe,
        T: UnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl UnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> UnwindSafe for ChangeSet<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> UnwindSafe for TxAncestors<'g, A, F>where
        A: RefUnwindSafe,
        F: UnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> UnwindSafe for TxDescendants<'g, A, F>where
        A: RefUnwindSafe,
        F: UnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl UnwindSafe for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> UnwindSafe for SpkIterator<D>where
        D: UnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl !UnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> UnwindSafe for SyncResult<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> !UnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> UnwindSafe for FullScanResult<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], "bdk_coin_select":[["impl UnwindSafe for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl UnwindSafe for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> UnwindSafe for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl UnwindSafe for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl UnwindSafe for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl UnwindSafe for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl UnwindSafe for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl UnwindSafe for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl UnwindSafe for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> UnwindSafe for Bnb<'c, S>where
        S: UnwindSafe,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> !UnwindSafe for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl UnwindSafe for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], "bdk_electrum":[["impl UnwindSafe for RelevantTxids",1,["bdk_electrum::electrum_ext::RelevantTxids"]],["impl UnwindSafe for ElectrumUpdate",1,["bdk_electrum::electrum_ext::ElectrumUpdate"]]], "bdk_file_store":[["impl<'t, T> !UnwindSafe for EntryIter<'t, T>",1,["bdk_file_store::entry_iter::EntryIter"]],["impl !UnwindSafe for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> UnwindSafe for Store<C>where
        C: UnwindSafe,
    ",1,["bdk_file_store::store::Store"]],["impl<C> !UnwindSafe for AggregateChangesetsError<C>",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl !UnwindSafe for FileError",1,["bdk_file_store::FileError"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/str/traits/trait.FromStr.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/str/traits/trait.FromStr.js index 9ec6b1958f..0700517520 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/str/traits/trait.FromStr.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/str/traits/trait.FromStr.js @@ -1,4 +1,5 @@ (function() {var implementors = { "bdk":[["impl FromStr for FullyNodedExport"]], +"bdk_chain":[["impl FromStr for DescriptorId"]], "example_cli":[["impl FromStr for CoinSelectionAlgo"]] };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/implementors/serde/de/trait.Deserialize.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/de/trait.Deserialize.js index 9660a21bac..f2696e5cfd 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/de/trait.Deserialize.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/de/trait.Deserialize.js @@ -1,5 +1,5 @@ (function() {var implementors = { "bdk":[["impl<'de> Deserialize<'de> for KeychainKind"],["impl<'de> Deserialize<'de> for LocalOutput"],["impl<'de> Deserialize<'de> for FullyNodedExport"],["impl<'de> Deserialize<'de> for ChangeSet"]], -"bdk_chain":[["impl<'de> Deserialize<'de> for ConfirmationTime"],["impl<'de> Deserialize<'de> for BlockId"],["impl<'de> Deserialize<'de> for ConfirmationHeightAnchor"],["impl<'de> Deserialize<'de> for ConfirmationTimeHeightAnchor"],["impl<'de, A, IA> Deserialize<'de> for ChangeSet<A, IA>where
        A: Ord + Deserialize<'de>,
        IA: Deserialize<'de>,
    "],["impl<'de, K> Deserialize<'de> for ChangeSet<K>where
        K: Ord + Deserialize<'de>,
    "],["impl<'de> Deserialize<'de> for Balance"],["impl<'de, A> Deserialize<'de> for ChangeSet<A>where
        A: Ord + Deserialize<'de>,
    "]], +"bdk_chain":[["impl<'de> Deserialize<'de> for ConfirmationTime"],["impl<'de> Deserialize<'de> for BlockId"],["impl<'de> Deserialize<'de> for ConfirmationHeightAnchor"],["impl<'de> Deserialize<'de> for ConfirmationTimeHeightAnchor"],["impl<'de, A, IA> Deserialize<'de> for ChangeSet<A, IA>where
        A: Ord + Deserialize<'de>,
        IA: Deserialize<'de>,
    "],["impl<'de, K> Deserialize<'de> for ChangeSet<K>where
        K: Ord + Deserialize<'de>,
    "],["impl<'de> Deserialize<'de> for Balance"],["impl<'de, A> Deserialize<'de> for ChangeSet<A>where
        A: Ord + Deserialize<'de>,
    "],["impl<'de> Deserialize<'de> for DescriptorId"]], "example_cli":[["impl<'de> Deserialize<'de> for Keychain"]] };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/implementors/serde/ser/trait.Serialize.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/ser/trait.Serialize.js index b7d335c94e..66b5354d9a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/ser/trait.Serialize.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/ser/trait.Serialize.js @@ -1,5 +1,5 @@ (function() {var implementors = { "bdk":[["impl Serialize for PkOrF"],["impl Serialize for SatisfiableItem"],["impl Serialize for Satisfaction"],["impl Serialize for Policy"],["impl Serialize for Condition"],["impl Serialize for KeychainKind"],["impl Serialize for LocalOutput"],["impl Serialize for FullyNodedExport"],["impl Serialize for ChangeSet"]], -"bdk_chain":[["impl Serialize for ConfirmationTime"],["impl Serialize for BlockId"],["impl Serialize for ConfirmationHeightAnchor"],["impl Serialize for ConfirmationTimeHeightAnchor"],["impl<A, IA> Serialize for ChangeSet<A, IA>where
        A: Ord + Serialize,
        IA: Serialize,
    "],["impl<K> Serialize for ChangeSet<K>where
        K: Ord + Serialize,
    "],["impl Serialize for Balance"],["impl<A> Serialize for ChangeSet<A>where
        A: Ord + Serialize,
    "]], +"bdk_chain":[["impl Serialize for ConfirmationTime"],["impl Serialize for BlockId"],["impl Serialize for ConfirmationHeightAnchor"],["impl Serialize for ConfirmationTimeHeightAnchor"],["impl<A, IA> Serialize for ChangeSet<A, IA>where
        A: Ord + Serialize,
        IA: Serialize,
    "],["impl<K> Serialize for ChangeSet<K>where
        K: Ord + Serialize,
    "],["impl Serialize for Balance"],["impl<A> Serialize for ChangeSet<A>where
        A: Ord + Serialize,
    "],["impl Serialize for DescriptorId"]], "example_cli":[["impl Serialize for Keychain"]] };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 9aefdcf081..9e66f156de 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,7 +1,7 @@ var searchIndex = JSON.parse('{\ -"bdk":{"doc":"bdk","t":[13,13,2,13,4,13,3,2,2,4,2,3,11,11,11,11,11,11,11,11,11,11,2,11,11,11,11,11,11,11,11,11,12,12,0,14,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,12,12,0,11,12,11,0,12,11,11,11,2,2,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,12,5,11,11,11,11,0,12,12,12,13,6,4,2,4,6,8,6,8,16,4,3,13,13,2,8,4,13,13,6,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,2,11,11,11,11,11,11,11,11,11,11,11,11,11,10,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,0,11,12,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,10,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,11,11,12,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,10,11,11,11,0,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,5,5,13,13,4,13,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,13,13,13,4,13,3,6,13,13,6,13,13,13,13,13,13,13,13,13,13,13,4,3,4,13,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,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,11,11,11,11,11,11,11,11,11,11,12,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,3,3,3,3,3,3,3,3,8,6,3,3,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,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,13,8,4,4,4,16,16,8,4,13,8,8,3,8,13,13,13,16,4,6,13,13,13,13,13,16,13,3,13,8,4,13,13,13,3,3,4,3,13,6,13,13,13,5,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,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,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,10,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,11,11,11,11,12,12,12,11,5,11,10,11,11,5,10,11,11,12,12,11,11,11,11,11,11,10,12,11,11,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,11,11,8,10,10,10,3,4,3,13,3,13,13,13,13,4,8,4,13,13,13,13,4,4,13,13,13,13,13,13,13,3,3,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,12,12,11,11,11,11,11,11,11,0,11,12,11,11,11,11,11,11,11,11,11,11,11,11,0,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,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,12,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,11,11,11,11,11,11,11,0,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,0,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,5,12,12,12,12,12,12,12,12,13,13,3,13,8,3,6,4,4,13,3,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,5,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,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,12,12,12,12,12,12,12,4,13,13,13,4,13,13,13,13,13,13,13,13,4,13,13,13,13,13,13,13,13,13,13,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,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,3,6,12,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,13,13,13,13,13,13,13,8,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,8,4,4,4,3,3,3,13,4,8,13,11,12,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,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,10,11,11,11,10,11,12,11,12,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,12,4,4,4,13,3,13,13,4,3,13,13,13,13,13,13,3,8,4,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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],"n":["External","Foreign","HdKeyPaths","Internal","KeychainKind","Local","LocalOutput","SignOptions","TxBuilder","Utxo","Wallet","WeightedUtxo","as_byte","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","confirmation_time","derivation_index","descriptor","descriptor","deserialize","deserialize","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fragment","from","from","from","from","hash","hash","into","into","into","into","is_spent","keychain","keys","outpoint","outpoint","partial_cmp","psbt","satisfaction_weight","sequence","serialize","serialize","signer","template","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","txout","txout","type_id","type_id","type_id","type_id","utxo","version","vzip","vzip","vzip","vzip","wallet","outpoint","psbt_input","sequence","Bare","DerivedDescriptor","Descriptor","DescriptorError","DescriptorPublicKey","ExtendedDescriptor","ExtractPolicy","HdKeyPaths","IntoWalletDescriptor","Key","Legacy","Miniscript","MultiXPub","Pkh","Policy","ScriptContext","Segwitv0","Sh","Single","TapKeyOrigins","Tr","Wpkh","Wsh","XPub","address","as_enum","as_enum","as_inner","as_node","at_derivation_index","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","build_template","build_template_mall","calc_checksum","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_pk","check_pk","check_pk","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","contains_raw_pkh","derive","derived_descriptor","derived_descriptor","desc_type","deserialize","deserialize","dust_value","encode","eq","eq","eq","eq","error","explicit_script","ext","ext_check","extract_policy","extract_policy","extract_policy","find_derivation_index_for_spk","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from_ast","from_components_unchecked","from_str","from_str","from_str_ext","from_str_insane","from_tree","from_tree","get_nth_child","get_nth_pk","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","has_wildcard","hash","hash","hash","hash","into","into","into","into","into_inner","into_single_descriptors","into_wallet_descriptor","into_wallet_descriptor","is_deriveable","is_multipath","is_non_malleable","iter","iter_pk","lift","lift","lift_check","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","max_weight_to_satisfy","name_str","name_str","name_str","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","other_top_level_checks","parse","parse_descriptor","parse_insane","parse_with_ext","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","plan","plan_mall","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","substitute_raw_pkh","template","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_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","within_resource_limits","calc_checksum","calc_checksum_bytes","Base58","Bip32","Error","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","MultiPath","Pk","Policy","borrow","borrow_mut","fmt","fmt","from","from","from","from","from","from","from","from","into","provide","to_string","try_from","try_into","type_id","vzip","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","Fingerprint","FoldedConditionMap","Hash160Preimage","Hash256Preimage","IncompatibleConditions","IndexOutOfRange","MixedTimelockUnits","Multisig","None","None","NotEnoughItemsSelected","Partial","PartialComplete","PkOrF","Policy","PolicyError","Psbt","PsbtTimelocks","Pubkey","RelativeTimelock","Ripemd160Preimage","Satisfaction","SatisfiableItem","SchnorrSignature","Sha256Preimage","Thresh","XOnlyPubkey","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","contribution","csv","default","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","hash","hash","id","id","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","partial_cmp","provide","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","current_height","input_max_height","psbt","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","Bip86","Bip86Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2TR","P2Wpkh","P2Wpkh_P2Sh","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","build","build","build","build","build","build","build","build","build","build","build","build","build","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","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","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_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","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","MultiXPrv","MultiXPub","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","Single","Single","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","at_derivation_index","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","build_template","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_pk","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","derive","deserialize","encode","eq","eq","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","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","full_derivation_paths","generate","generate_default","generate_with_entropy","generate_with_entropy_default","has_secret","has_wildcard","hash","hash","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into_assets","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_single_keys","into_single_keys","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_multipath","is_multipath","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","new","num_der_paths","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","provide","sanity_check","satisfy","script_size","serialize","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_public","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","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressInfo","ApplyBlockError","Balance","CannotConnect","ChangeSet","ConfirmationHeightCannotBeGreaterThanTip","Descriptor","Descriptor","Descriptor","InsertTxError","IsDust","LoadError","LoadedGenesisDoesNotMatch","LoadedNetworkDoesNotMatch","MissingGenesis","MissingNetwork","NewError","NewOrLoadError","NonEmptyDatabase","NotInitialized","NotInitialized","Persist","Persist","Persist","UnexpectedConnectedToHash","Update","Wallet","add","add_signer","address","all_unbounded_spk_iters","append","apply_block","apply_block_connected_to","apply_unconfirmed_txs","apply_update","as_ref","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","build_fee_bump","build_tx","calculate_fee","calculate_fee_rate","cancel_tx","chain","chain","checkpoints","clone","clone","clone","clone_into","clone_into","clone_into","coin_selection","commit","confirmed","default","default","default","deref","derivation_index","derivation_of_spk","descriptor_checksum","deserialize","deserialize","eq","eq","eq","error","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_balance","get_descriptor_for_keychain","get_psbt_input","get_signers","get_tx","get_utxo","graph","immature","index","indexed_tx_graph","insert_checkpoint","insert_tx","insert_txout","into","into","into","into","into","into","into","into","into","into","is_dust","is_empty","is_mine","keychain","keychains","last_active_indices","latest_checkpoint","list_output","list_unspent","list_unused_addresses","load","local_chain","mark_used","network","network","new","new_no_persist","new_no_persist_with_genesis_hash","new_or_load","new_or_load_with_genesis_hash","new_with_genesis_hash","next_derivation_index","next_unused_address","peek_address","policies","provide","provide","provide","provide","provide","public_descriptor","reveal_addresses_to","reveal_next_address","secp_ctx","sent_and_received","serialize","serialize","sign","signer","spk_index","staged","start_full_scan","start_sync_with_revealed_spks","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","to_string","total","transactions","trusted_pending","trusted_spendable","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","tx_builder","tx_graph","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","untrusted_pending","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","connected_to_hash","expected_hash","tip_height","tx_height","expected","expected","got","got","BnBNoExactMatch","BnBTotalTriesExceeded","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Error","Excess","InsufficientFunds","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","local_selected_amount","new","provide","selected","selected_amount","to_owned","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","available","needed","amount","change_fee","dust_threshold","fee","remaining_amount","BuildFeeBumpError","ChangePolicyDescriptor","CoinSelection","Conversion","CreateTxError","Descriptor","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","InsufficientFunds","IrreplaceableTransaction","LockTime","MiniscriptPsbt","MiniscriptPsbtError","MissingKeyOrigin","MissingNonWitnessUtxo","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","OutputUpdate","Persist","Policy","Psbt","RbfSequence","RbfSequenceCsv","SpendingPolicyRequired","TransactionConfirmed","TransactionNotFound","UnknownUtxo","UnknownUtxo","UtxoUpdate","Version0","Version1Csv","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","provide","provide","provide","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","available","csv","needed","rbf","requested","required","required","required","FullyNodedExport","WalletExport","blockheight","borrow","borrow_mut","change_descriptor","descriptor","deserialize","export_wallet","fmt","fmt","from","from_str","into","label","serialize","to_string","try_from","try_into","type_id","vzip","All","Dummy","Exclude","External","Fingerprint","Include","InputIndexOutOfRange","InputSigner","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","Legacy","MiniscriptPsbt","MissingHdKeypath","MissingKey","MissingNonWitnessUtxo","MissingWitnessScript","MissingWitnessUtxo","NonStandardSighash","None","PkHash","Segwitv0","SighashError","SignOptions","SignerCommon","SignerContext","SignerError","SignerId","SignerOrdering","SignerWrapper","SignersContainer","Tap","TapLeavesOptions","TransactionSigner","UserCanceled","add_external","allow_all_sighashes","allow_grinding","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","eq","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","hash","id","id","id","id","ids","into","into","into","into","into","into","into","into","new","new","partial_cmp","partial_cmp","provide","remove","remove_partial_sigs","remove_taproot_extras","sign_input","sign_input","sign_input","sign_input","sign_transaction","sign_transaction","sign_with_tap_internal_key","signers","tap_leaves_options","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_finalize","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","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","is_internal_key","AddForeignUtxoError","AddUtxoError","AllowShrinkingError","Bip69Lexicographic","BumpFee","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","CreateTx","InvalidOutpoint","InvalidTxid","MissingScriptPubKey","MissingUtxo","OnlyChange","Shuffle","TxBuilder","TxBuilderContext","TxOrdering","UnknownUtxo","Untouched","add_data","add_foreign_utxo","add_foreign_utxo_with_sequence","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_dust","allow_shrinking","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","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","current_height","default","default","default","default","do_not_spend_change","drain_to","drain_wallet","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","hash","hash","include_output_redeem_witness_script","into","into","into","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","provide","provide","provide","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","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","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unspendable","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","foreign_utxo","input_txid"],"q":["bdk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Utxo","","","bdk::descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::checksum","","bdk::descriptor::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy::BuildSatisfaction","","","bdk::descriptor::policy::Satisfaction","","","","","","","","","","","bdk::descriptor::policy::SatisfiableItem","","","","","","","","","","bdk::descriptor::template","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::psbt","","","","bdk::wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::ApplyBlockError","","bdk::wallet::InsertTxError","","bdk::wallet::NewOrLoadError","","","","bdk::wallet::coin_selection","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::coin_selection::Error","","bdk::wallet::coin_selection::Excess","","","","","bdk::wallet::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::error::CreateTxError","","","","","","","","bdk::wallet::export","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer::SignerContext","bdk::wallet::tx_builder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::tx_builder::AddForeignUtxoError",""],"d":["External keychain, used for deriving recipient addresses.","A UTXO owned by another wallet.","","Internal keychain, used for deriving change addresses.","Types of keychains","A UTXO owned by the local wallet.","An unspent output owned by a Wallet.","","","An unspent transaction output (UTXO).","","A Utxo with its satisfaction_weight.","Return KeychainKind as a byte","","","","","","","","","","","","","","","","","","","","The confirmation time for transaction containing this utxo","The derivation index for the script pubkey in the wallet","Descriptors","Macro to write full descriptors with code","","","","","","","","","","","Macro to write descriptor fragments with code","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Whether this UTXO is spent or not","Type of keychain","Key formats","Get the location of the UTXO","Reference to a transaction output","","Additional functions on the rust-bitcoin Psbt structure.","The weight of the witness data and scriptSig expressed in …","Get the sequence number if an explicit sequence number has …","","","","","","","","","","","","","","","","","Get the TxOut of the UTXO","Transaction output","","","","","The UTXO","Get the version of BDK at runtime","","","","","Wallet","The location of the output.","The information about the input we require to add it to a …","The nSequence value to set for this input.","A raw scriptpubkey (including pay-to-pubkey) under Legacy …","Alias for a Descriptor that contains extended derived keys","Script descriptor","","The descriptor pubkey, either a single pubkey or an xpub.","Alias for a Descriptor that can contain extended keys …","Trait implemented on Descriptors to add a method to …","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 …","Legacy ScriptContext To be used as P2SH scripts For …","The top-level miniscript abstract syntax tree (AST).","Multiple extended public keys.","Pay-to-PubKey-Hash","","The ScriptContext for Miniscript. Additional type …","Segwitv0 ScriptContext","Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)","Single public key.","Alias for the type of maps that represent taproot key …","Pay-to-Taproot","Pay-to-Witness-PubKey-Hash","Pay-to-Witness-ScriptHash with Segwitv0 context","Extended public key (xpub).","Computes the Bitcoin address of the descriptor, if one …","","","Get a reference to the inner AstElem representing the root …","","Replaces all wildcards (i.e. /*) in the descriptor with a …","","","","","","","","","Enumerates all child nodes of the current AST node (self) …","Attempt to produce a non-malleable witness template given …","Attempt to produce a malleable witness template given the …","","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 …","Each context has slightly different rules on what Pks are …","","","Depending on ScriptContext, fragments can be malleable. …","","","Check whether the given satisfaction is valid under the …","","","Descriptor checksum","","","","","","","","","","","","","Whether the given miniscript contains a raw pkh fragment","Deprecated name for Self::at_derivation_index.","Convert all the public keys in the descriptor to …","Convert all the public keys in the descriptor to …","Get the DescriptorType of Descriptor","","","","Encode as a Bitcoin script","","","","","Descriptor errors","Computes the the underlying script before any hashing is …","Additional information helpful for extra analysis.","Check whether the miniscript follows the given Extra …","Extract the spending policy","","","Utility method for deriving the descriptor at each index …","","","","","","","","","","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Add type information(Type and Extdata) to Miniscript based …","Create a new Miniscript from a Terminal node and a Type …","","Parse a Miniscript from string and perform sanity checks …","Attempt to parse an Miniscripts that don’t follow the …","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 child node with given index, if any","Returns Option::Some with cloned 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","Whether or not the descriptor has any wildcards i.e. /*.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Extracts the AstElem representing the root of the …","Get as many descriptors as different paths in this …","Convert to wallet descriptor","","Whether or not the descriptor has any wildcards","Whether this descriptor contains a key that has multiple …","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 …","","","Lifting corresponds to conversion of a miniscript into a …","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 …","Computes an upper bound on the difference between a …","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 AST.","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 …","Attempt to parse an miniscript with extra features that …","","","","","Get the len of public key when serialized based on context …","","","Returns a plan if the provided assets are sufficient to …","Returns a plan if the provided assets are sufficient to …","Descriptor policy","Whether all spend paths of miniscript require a signature","Checks whether the descriptor is safe.","Check whether the underlying Miniscript is safe under the …","Attempts to produce a non-malleable satisfying witness and …","Attempt to produce non-malleable satisfying witness for the","Attempt to produce a malleable satisfying witness for the …","Computes 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","","","Substitutes raw public keys hashes with the public keys as …","Descriptor templates","","","","","","","Serialize a descriptor to string with its secret keys","Check top level consensus rules.","Check whether the top-level is type B","Converts a descriptor using abstract keys to one using …","Translates a struct from one generic to another where the …","","","","","","","","","The correctness and malleability type information for the …","","","","","Computes the scriptSig that will be in place for an …","","","","","Whether the miniscript can exceed the resource …","Compute the checksum of a descriptor, excludes any …","Compute the checksum bytes of a descriptor, excludes any …","Error during base58 decoding","BIP32 error","Errors related to the parsing and usage of descriptors","The descriptor contains hardened derivation steps on …","Hex decoding error","Invalid byte 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","The descriptor contains multipath keys","Key-related error","Error while extracting and manipulating policies","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","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","An extended key fingerprint","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","A unique identifier for a key","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","A legacy public key","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","A x-only public key","","","","","","","","","","","","","","","","","","","","","","","","","","","How the wallet’s descriptor can satisfy this policy node","Optional CheckSequenceVerify condition","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the conditions that are set by the spending policy …","","","Returns a unique id for the SatisfiableItem","Identifier for this policy node","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","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 timelock value","The timelock value","BIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)","BIP44 public template. Expands to pkh(key/{0,1}/*)","BIP49 template. Expands to …","BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))","BIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)","BIP84 public template. Expands to wpkh(key/{0,1}/*)","BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)","BIP86 public template. Expands to tr(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)","P2TR template. Expands to a descriptor tr(key)","P2WPKH template. Expands to a descriptor wpkh(key)","P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))","","","","","","","","","","","","","","","","","","","","","","","","","Build the complete descriptor","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BIP32 error","Trait for keys that can be derived.","Container for public or secret keys","The descriptor pubkey, either a single pubkey or an xpub.","The descriptor secret key, either a single private key or …","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","A bitcoin public key (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","Multiple extended private keys.","Multiple extended public keys.","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 public key.","Single private key.","A descriptor bitcoin::PrivateKey with optional origin …","A descriptor SinglePubKey with optional origin information.","Single public key without any origin or range information.","Contents of a “sortedmulti” descriptor","Taproot scripts","Set of valid networks for a key","An xonly public key.","Extended private key (xpriv).","Extended public key (xpub).","Create a set containing mainnet, testnet, signet, and …","Returns the ScriptContext as a ScriptContextEnum","Replaces any wildcard (i.e. /*) in the key with a …","","","","","","","","","","","","","","","","","","","","","","","","","Attempt to produce a witness template given the assets …","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 …","Each context has slightly different rules on what Pks are …","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","","","Deprecated name for Self::at_derivation_index.","","Encode as a Bitcoin script","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","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","Returns a vector containing the full derivation paths from …","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","Whether or not the key has a wildcard","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","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","Get as many keys as derivation paths in this key.","Get as many keys as derivation paths in this key.","Transform the ExtendedKey into an Xpriv for the given …","Transform the ExtendedKey into an Xpub for the given …","Whether or not the key has a wildcard","Returns whether the script context is Legacy","Returns whether the script context is …","Whether or not this key has multiple derivation paths.","Whether or not this key has multiple derivation paths.","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 public key.","The private 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 (fingerprint and derivation path).","Origin information (fingerprint and derivation path).","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","","","","","","","","","","Returns the public version of this key.","","","","","Check top level consensus rules.","Check whether the top-level is type B","This will panic if fpk returns an uncompressed key when …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Trait to add functions to extract utxos and calculate fees.","The total transaction fee amount, sum of input amounts …","The transaction’s fee rate. This value will only be …","Get the TxOut for the specified input index, if it doesn’…","A derived address and the index it was found at. For …","An error that may occur when applying a block to Wallet.","Balance, differentiated into various categories.","Occurs when the update chain cannot connect with original …","The changes made to a wallet by applying an Update.","The error variant that occurs when the caller attempts to …","There was problem with the passed-in descriptor(s).","There was a problem with the passed-in descriptor(s).","There is a problem with the passed-in descriptor.","An error that may occur when inserting a transaction into …","Trait to check if a value is below the dust limit. We are …","The error type when loading a Wallet from persistence.","The loaded genesis hash does not match what was provided.","The loaded network type does not match what was provided.","Data loaded from persistence is missing genesis hash.","Data loaded from persistence is missing network type.","The error type when constructing a fresh Wallet.","Error type for when we try load a Wallet from persistence …","Database already has data.","Wallet not initialized, persistence backend is empty.","Wallet is not initialized, persistence backend is empty.","We were unable to write the wallet’s data to the …","Loading data from the persistence backend failed.","Either writing to or loading from the persistence backend …","Occurs when the connected_to hash does not match the hash …","An update to Wallet.","A Bitcoin wallet","","Add an external signer","Address","Get unbounded script pubkey iterators for both Internal …","","Introduces a block of height to the wallet, and tries to …","Applies relevant transactions from block of height to the …","Apply relevant unconfirmed transactions to the wallet.","Applies an update to the wallet and stages the changes …","","","","","","","","","","","","","","","","","","","","","","Bump the fee of a transaction previously created with this …","Start building a transaction.","Calculates the fee of a given transaction. Returns 0 if tx …","Calculate the FeeRate for a given transaction.","Informs the wallet that you no longer intend to broadcast …","Update for the wallet’s internal LocalChain.","Changes to the LocalChain.","Get all the checkpoints the wallet is currently storing …","","","","","","","Coin selection","Commits all currently staged changed to the persistence …","Confirmed and immediately spendable balance","","","","","The derivation index of this wallet. It will return None …","Finds how the wallet derived the script pubkey spk.","Return the checksum of the public descriptor associated to …","","","","","","Errors that can be thrown by the Wallet","Wallet export","Finalize a PSBT, i.e., for each input determine if …","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the balance, separated into available, …","Returns the descriptor used to create addresses for a …","get the corresponding PSBT Input for a LocalUtxo","Get the signers","Get a single transaction from the wallet as a CanonicalTx …","Returns the utxo owned by this wallet corresponding to …","Update for the wallet’s internal TxGraph.","All coinbase outputs not yet matured","Child index of this address","Changes to IndexedTxGraph.","Add a new checkpoint to the wallet’s internal view of …","Add a transaction to the wallet’s internal view of the …","Inserts a TxOut at OutPoint into the wallet’s …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Check whether or not a value is below dust limit","","Return whether or not a script is part of this wallet …","Type of keychain","Iterator over all keychains in this wallet","Contains the last active derivation indices per keychain (K…","Returns the latest checkpoint.","List all relevant outputs (includes both spent and …","Return the list of unspent outputs of this wallet","List addresses that are revealed but unused.","Load Wallet from the given persistence backend.","Get a reference to the inner LocalChain.","Marks an address used of the given keychain at index.","Get the Bitcoin network the wallet is using.","Stores the network type of the wallet.","Initialize an empty Wallet.","Creates a wallet that does not persist data.","Creates a wallet that does not persist data, with a custom …","Either loads Wallet from persistence, or initializes it if …","Either loads Wallet from persistence, or initializes it if …","Initialize an empty Wallet with a custom genesis hash.","The index of the next address that you would get if you …","Get the next unused address for the given keychain, i.e. …","Peek an address of the given keychain at index without …","Return the spending policies for the wallet’s descriptor","","","","","","Return the “public” version of the wallet’s …","Reveal addresses up to and including the target index and …","Attempt to reveal the next address of the given keychain.","Return the secp256k1 context used for all signing …","Compute the tx’s sent and received Amounts.","","","Sign a transaction with all the wallet’s signers, in the …","Generalized signers","Get a reference to the inner KeychainTxOutIndex.","Returns the changes that will be committed with the next …","Create a `FullScanRequest for this wallet.","Create a partial SyncRequest for this wallet for all …","","","","","","","","","","","Get the whole balance visible to the wallet.","Iterate over the transactions in the wallet.","Unconfirmed UTXOs generated by a wallet tx","Get sum of trusted_pending and confirmed coins.","","","","","","","","","","","","","","","","","","","","","Transaction builder","Get a reference to the inner TxGraph.","","","","","","","","","","","Get an unbounded script pubkey iterator for the given …","Undoes the effect of mark_used and returns whether the …","Unconfirmed UTXOs received from an external wallet","","","","","","","","","","","Deterministically generate a unique name given the …","Block hash of connected_to.","Expected block hash of connected_to, as derived from block.","The internal chain’s tip height.","The introduced transaction’s confirmation height.","The expected genesis block hash.","The expected network type.","The block hash loaded from persistence.","The network type loaded from persistence.","Branch and bound coin selection tries to avoid needing a …","Branch and bound coin selection possible attempts with …","Branch and bound coin selection","It’s possible to create spendable output from excess …","Trait for generalized coin selection algorithms","Result of a successful coin selection","Default coin selection algorithm used by TxBuilder if not …","Errors that can be thrown by the coin_selection module","Remaining amount after performing coin selection","Wallet’s UTXO set is not enough to cover recipient’s …","Simple and dumb coin selection","It’s not possible to create spendable output from excess …","OldestFirstCoinSelection always picks the utxo with the …","","","","","","","","","","","","","","","","","","","Perform the coin selection","","","","Decide if change can be created","","","","Remaining amount after deducing fees and outgoing outputs","Total fee amount for the selected utxos in satoshis","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","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.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Sats available for spending","Sats needed for some transaction","Effective amount available to create change after …","The calculated fee for the drain TxOut with the selected …","Threshold to consider amount as dust for this particular …","The deducted change output fee","Exceeding amount of current selection over outgoing value …","Error returned from Wallet::build_fee_bump","The change_policy was set but the wallet does not have a …","There was an error with coin selection","Descriptor key conversion error","Error returned from TxBuilder::finish","There was a problem with the descriptors passed in","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 …","Wallet’s UTXO set is not enough to cover recipient’s …","Trying to replace a tx that has a sequence >= 0xFFFFFFFE","Requested LockTime is less than is required to spend from …","Miniscript PSBT error","Errors returned by miniscript when updating inconsistent …","In order to use the TxBuilder::add_global_xpubs option …","Missing non_witness_utxo on foreign utxo for given OutPoint","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","Return error type for …","We were unable to load wallet data from or write wallet …","There was a problem while extracting and manipulating …","Partially signed bitcoin transaction error","Cannot enable RBF with a Sequence >= 0xFFFFFFFE","Cannot enable RBF with Sequence given a required OP_CSV","Spending policy is not compatible with this KeychainKind","Happens when trying to bump a transaction that is already …","Thrown when a tx is not found in the internal database","Happens when trying to spend an UTXO that is not in the …","Happens when trying to spend an UTXO that is not in the …","Return error type for PsbtExt::update_input_with_descriptor","Requested invalid transaction version ‘0’","Requested transaction version 1, but at least 2 is needed …","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","Sats available for spending","Required OP_CSV Sequence","Sats needed for some transaction","Given RBF Sequence","Requested LockTime","Required LockTime","Required fee absolute value (satoshi)","Required fee rate","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","","","Returns the argument unchanged.","","Calls U::from(self).","Arbitrary label for the wallet","","","","","","","The signer will sign all the leaves it has a key for.","Dummy identifier","The signer won’t sign the specified leaves.","To be used only by external libraries implementing …","The fingerprint of a BIP32 extended key","The signer won’t sign leaves other than the ones …","Input index is out of range","PSBT Input signer","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","Legacy context","Miniscript PSBT error","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 …","The signer won’t sign any leaf.","Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA …","Segwit v0 context (BIP 143)","Error while computing the hash to sign","Options for a software signer","Common signer methods","Signing context","Signing error","Identifier of a signer in the SignersContainers. Used as a …","Defines the order in which signers are called","Wrapper to pair a signer with its context","Container for multiple signers","Taproot context (BIP 340)","Customize which taproot script-path leaves the signer …","PSBT signer","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 …","Whether we should grind ECDSA signature to ensure signing …","Create a map of public keys to secret keys","Whether the wallet should assume a specific height has …","","","","","","","","","","","","","","","","","Build a new signer container from a KeyMap","","","","","","","","","","","","","","","","","","","","","","Return the secret key for the signer","","","","","","","","Finds the signer with lowest ordering for a given id in …","","","","","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Return the SignerId for this signer","","","","Returns the list of identifiers of all the signers in the …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Create a wrapped signer from a signer and a context","Default constructor","","","","Removes a signer from the container and returns it","Whether to remove partial signatures from the PSBT inputs …","Whether to remove taproot specific fields from the PSBT on …","Sign a single psbt input","","","","Sign all the inputs of the psbt","","Whether we should try to sign a taproot transaction with …","Returns the list of signers in the container, sorted by …","Specifies which Taproot script-spend leaves we should sign …","","","","","","","","","Whether the signer should trust the witness_utxo, if the …","Whether to try finalizing the PSBT after the inputs are …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether the signer can sign for the internal key or not","Error returned from TxBuilder::add_foreign_utxo.","Error returned from TxBuilder::add_utxo and …","Error returned from TxBuilder::allow_shrinking","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 …","Requested outpoint doesn’t exist in the tx (vout greater …","Foreign utxo outpoint txid does not match PSBT input txid","Script/PubKey was not in the original transaction","Foreign utxo missing witness_utxo or non_witness_utxo","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","Happens when trying to spend an UTXO that is not in the …","Unchanged","Add data as an output, using OP_RETURN","Add a foreign UTXO i.e. a UTXO not owned by this wallet.","Same as add_foreign_utxo but allows to set the nSequence …","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 …","Set whether or not the dust limit is checked.","Explicitly tells the wallet that it is allowed to reduce …","","","","","","","","","","","","","","","","","Set a specific ChangeSpendPolicy. See …","","","","","","","","","","","","","Choose the coin selection algorithm","Set the current blockchain height.","","","","","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 The fee_absolute method refers to the …","Set a custom fee rate.","Finish building the transaction.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Fill-in the psbt::Output::redeem_script and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","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","","","","","","","","","Foreign UTXO outpoint","PSBT input txid"],"i":[1,5,0,1,0,5,0,0,0,0,0,0,1,1,1,3,4,5,1,3,4,5,0,1,3,4,5,1,3,4,5,1,3,3,0,0,1,3,1,3,4,5,1,3,4,5,0,1,3,4,5,1,3,1,3,4,5,3,3,0,5,3,1,0,4,5,1,3,0,0,1,3,4,5,1,3,4,5,1,3,4,5,5,3,1,3,4,5,4,0,1,3,4,5,0,208,208,208,17,0,0,0,0,0,0,0,0,48,0,0,26,17,0,0,0,17,26,0,17,17,17,26,17,35,36,23,23,17,17,35,36,23,17,35,36,23,23,23,23,0,48,35,36,48,36,48,48,35,36,48,35,36,48,48,35,36,48,35,36,48,35,36,0,17,35,36,23,17,35,36,23,17,35,36,23,23,17,17,17,17,17,23,17,23,17,35,36,23,0,17,23,23,209,17,23,17,17,17,35,36,23,23,17,23,17,17,17,17,17,17,17,35,36,23,23,23,17,23,23,23,17,23,23,23,17,17,23,23,17,17,35,36,23,17,35,36,23,23,17,170,62,17,17,23,23,23,17,23,23,48,35,36,23,17,23,17,48,35,36,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,48,23,17,23,23,17,35,36,23,48,35,36,17,17,0,23,17,23,17,23,23,17,17,23,17,23,48,35,36,23,0,17,35,36,23,17,23,17,48,48,17,23,17,35,36,23,17,35,36,23,23,17,35,36,23,17,17,35,36,23,23,0,0,47,47,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,83,76,76,0,84,0,0,83,82,0,83,83,76,76,76,83,84,45,76,84,84,0,0,0,45,45,82,83,83,0,0,83,83,83,82,82,83,84,46,85,76,45,82,83,84,46,85,76,45,82,83,84,46,85,45,82,83,84,46,85,45,46,85,85,82,83,84,46,85,76,82,83,84,46,85,76,76,45,82,83,84,84,46,46,85,76,45,46,82,85,83,46,82,83,84,46,85,76,45,83,84,85,46,85,76,46,46,82,83,84,46,85,85,82,83,84,46,85,45,76,82,83,84,46,85,76,45,82,83,84,46,85,76,45,82,83,84,46,85,76,45,82,83,84,46,85,76,45,210,210,210,211,212,213,212,213,212,213,212,213,212,213,214,215,216,217,218,219,219,218,220,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,89,90,92,94,95,96,97,98,99,100,101,88,89,90,92,94,95,96,97,98,99,100,101,222,88,89,90,92,94,95,96,97,98,99,100,101,88,89,90,92,94,95,96,97,98,99,100,101,88,89,90,92,94,95,96,97,98,99,100,101,86,88,89,90,92,94,95,96,97,98,99,100,101,88,89,90,92,94,95,96,97,98,99,100,101,88,89,90,92,94,95,96,97,98,99,100,101,88,89,90,92,94,95,96,97,98,99,100,101,88,89,90,92,94,95,96,97,98,99,100,101,77,0,0,0,0,223,223,0,0,110,0,0,0,0,77,77,77,48,0,0,22,77,77,107,26,223,114,0,114,0,0,22,26,107,0,0,0,0,22,0,110,107,26,0,224,26,114,105,112,22,106,77,103,26,107,108,109,110,114,105,112,22,106,77,103,26,107,108,109,110,103,48,48,48,48,48,48,48,48,48,105,22,106,103,26,107,108,109,110,105,22,106,103,26,107,108,109,110,103,26,108,110,106,106,105,26,26,103,22,103,26,107,108,109,110,112,22,106,77,77,103,103,26,26,107,107,108,109,110,103,114,114,114,105,112,22,106,77,77,77,103,26,26,107,108,109,110,112,112,26,107,103,26,26,223,225,223,225,114,26,103,26,108,110,114,105,112,22,106,77,103,26,107,108,109,110,26,87,93,105,105,112,26,107,93,114,105,105,26,107,114,114,26,224,22,26,107,224,22,224,22,26,26,103,108,109,103,0,26,48,103,103,0,48,103,26,108,109,48,112,103,26,108,110,48,103,77,103,103,103,26,48,103,0,105,22,106,103,26,107,108,109,110,107,77,103,26,107,48,48,103,114,105,112,22,106,77,103,26,107,108,109,110,114,105,112,22,106,77,103,26,107,108,109,110,114,105,112,22,106,77,103,26,107,108,109,110,114,105,112,22,106,77,103,26,107,108,109,110,0,226,226,226,0,0,0,155,0,154,151,152,153,0,0,0,153,153,152,152,0,0,151,152,153,151,152,153,155,0,0,122,123,147,123,128,123,123,123,123,123,122,123,134,128,147,151,152,153,154,155,122,123,134,128,147,151,152,153,154,155,123,123,123,123,123,134,128,123,122,134,128,122,134,128,0,123,122,122,134,128,147,123,123,123,122,128,122,128,147,0,0,123,122,122,123,134,128,147,147,151,151,152,152,153,153,154,154,155,155,122,123,134,134,134,128,128,128,147,151,152,153,154,155,123,123,123,123,123,123,134,122,147,128,123,123,123,122,123,134,128,147,151,152,153,154,155,227,128,123,147,123,134,123,123,123,123,123,123,123,123,128,123,123,123,123,123,123,123,123,123,123,151,152,153,154,155,123,123,123,123,123,122,128,123,0,123,123,123,123,122,134,128,122,147,151,152,153,154,155,122,123,122,122,122,123,134,128,147,151,152,153,154,155,122,123,134,128,147,151,152,153,154,155,0,123,122,123,134,128,147,151,152,153,154,155,123,123,122,122,123,134,128,147,151,152,153,154,155,0,228,228,229,229,230,231,230,231,184,184,0,185,0,0,0,0,0,184,0,185,0,184,185,183,180,181,182,184,185,183,180,181,182,180,181,182,180,181,182,200,180,181,182,0,180,181,182,183,183,184,184,185,183,180,181,182,184,185,183,180,181,182,184,185,183,180,181,182,183,182,184,183,183,180,181,182,184,184,185,183,180,181,182,184,185,183,180,181,182,184,185,183,180,181,182,184,185,183,180,181,182,232,232,233,234,234,233,234,0,164,164,186,0,164,164,141,164,164,141,164,164,0,164,164,164,164,164,186,164,164,164,164,164,164,141,141,164,141,186,164,164,186,164,141,186,164,141,186,186,186,186,164,164,141,141,186,164,164,164,164,164,164,141,186,164,141,186,164,141,186,186,164,141,186,164,141,186,164,141,186,164,141,186,164,141,235,236,235,236,237,237,238,239,0,0,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,194,189,194,150,189,194,150,0,150,150,150,191,150,150,150,150,150,150,150,194,189,191,150,0,0,0,0,0,0,0,0,191,0,0,150,44,149,149,44,149,189,150,191,193,124,44,149,194,189,150,191,193,124,44,149,194,44,189,191,193,124,44,149,194,189,191,193,124,44,149,194,189,124,124,44,149,194,193,240,193,193,193,189,191,124,194,44,189,150,150,191,193,124,44,149,194,189,189,189,150,150,191,193,124,44,149,194,189,240,193,193,193,44,189,150,191,193,124,44,149,194,193,44,189,124,150,44,149,149,241,193,193,193,125,193,149,44,149,189,191,193,124,44,149,194,150,149,149,189,150,191,193,124,44,149,194,189,150,191,193,124,44,149,194,189,150,191,193,124,44,149,194,189,150,191,193,124,44,149,194,242,0,0,0,205,0,204,204,0,0,201,201,203,201,204,205,0,0,0,202,205,140,140,140,140,140,140,140,140,140,140,142,139,140,202,201,203,205,204,142,139,140,202,201,203,205,204,140,142,139,140,205,204,142,139,140,205,204,205,204,140,140,142,139,205,204,140,140,140,140,140,205,204,140,140,140,142,139,140,202,202,201,201,203,203,205,204,142,139,140,202,201,203,205,204,205,204,140,142,139,140,202,201,203,205,204,140,140,140,140,140,205,204,140,202,201,203,140,140,205,142,139,140,205,204,202,201,203,142,139,140,202,201,203,205,204,142,139,140,202,201,203,205,204,142,139,140,202,201,203,205,204,140,140,142,139,140,202,201,203,205,204,243,243],"f":[0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[1,1],[3,3],[4,4],[5,5],[[]],[[]],[[]],[[]],[[1,1],6],0,0,0,0,[[],[[7,[1]]]],[[],[[7,[3]]]],[[1,1],8],[[3,3],8],[[4,4],8],[[5,5],8],[[1,9],10],[[3,9],10],[[4,9],10],[[5,9],10],0,[[]],[[]],[[]],[[]],[1],[3],[[]],[[]],[[]],[[]],0,0,0,[5,11],0,[[1,1],[[12,[6]]]],0,0,[5,[[12,[13]]]],[1,7],[3,7],0,0,[[]],[[]],[[]],[[]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[5,14],0,[[],15],[[],15],[[],15],[[],15],0,[[],16],[[]],[[]],[[]],[[]],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,0,0,0,[[17,18],[[7,[[20,[19]],21]]]],[[],22],[[],22],[23,24],[23,[[25,[23]]]],[[[17,[26]],27],[[7,[[17,[28]],29]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[23,[[31,[23,30]]]],[23,[[33,[32]]]],[23,[[33,[32]]]],0,[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],[24,[[7,[34]]]],[24,[[7,[34]]]],[24,[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],0,[17,17],[35,35],[36,36],[23,23],[[]],[[]],[[]],[[]],[[17,17],6],[[35,35],6],[[36,36],6],[[23,23],6],[23,8],[[[17,[26]],27],[[7,[[17,[28]],29]]]],[[[17,[28]],37],[[7,[[17,[38]],29]]]],[[[17,[26]],37,27],[[7,[[17,[38]],29]]]],[17,39],[[],[[7,[17]]]],[[],[[7,[23]]]],[[[17,[26]]],40],[23,41],[[17,17],8],[[35,35],8],[[36,36],8],[[23,23],8],0,[17,[[7,[41,21]]]],0,[[23,42],[[7,[43]]]],[[44,45,37],[[7,[[12,[46]],47]]]],[[[17,[26]],44,45,37],[[7,[[12,[46]],47]]]],[[[23,[26,48]],44,45,37],[[7,[[12,[46]],47]]]],[[[17,[26]],37,49,[50,[27]]],[[7,[12,29]]]],[[17,9],[[7,[51]]]],[[17,9],[[7,[51]]]],[[35,9],[[7,[51]]]],[[36,9],[[7,[51]]]],[[23,9],[[7,[51]]]],[[23,9],[[7,[51]]]],[17,8],[23,8],[52,17],[[]],[53,17],[54,17],[55,17],[56,17],[57,17],[[]],[[]],[[]],[24,[[7,[23,21]]]],[[24,58,59],23],[16,[[7,[17,21]]]],[16,[[7,[23,21]]]],[[16,42],[[7,[23,21]]]],[16,[[7,[23,21]]]],[60,[[7,[17,21]]]],[60,[[7,[23,21]]]],[[23,61],[[12,[23]]]],[[23,61],12],[17,[[7,[21]]]],[17,[[7,[21]]]],[23,8],[23,8],[[[17,[26]]],8],[17],[35],[36],[23],[[]],[[]],[[]],[[]],[23,24],[[[17,[26]]],[[7,[[31,[[17,[26]],30]],21]]]],[[37,18],[[7,[47]]]],[[62,37,18],[[7,[47]]]],[[[17,[26]]],8],[[[17,[26]]],8],[23,8],[23,63],[23,64],[17,[[7,[65,21]]]],[23,[[7,[65,21]]]],[23,[[7,[66]]]],[23,[[12,[61]]]],[23,[[12,[61]]]],[23,[[12,[61]]]],[23,[[7,[61,21]]]],[17,[[7,[61,21]]]],[23,[[7,[61,21]]]],[17,[[7,[61,21]]]],[[],16],[[],16],[[],16],[[[23,[67]]],[[7,[17,21]]]],[[],17],[[],[[7,[17,21]]]],[[[23,[35]]],[[7,[17,21]]]],[[61,[31,[30]]],[[7,[17,21]]]],[54,17],[56,17],[[],[[7,[17,21]]]],[[[23,[36]]],[[7,[17,21]]]],[[61,[31,[30]]],[[7,[17,21]]]],[[[12,[68]]],[[7,[17,21]]]],[[],[[7,[17,21]]]],[[[23,[36]]],[[7,[17,21]]]],[[61,[31,[30]]],[[7,[17,21]]]],0,[23,[[7,[21]]]],[49,[[7,[23,21]]]],[[37,16],[[7,[21]]]],[49,[[7,[23,21]]]],[[49,42],[[7,[23,21]]]],[[17,17],[[12,[6]]]],[[35,35],[[12,[6]]]],[[36,36],[[12,[6]]]],[[23,23],[[12,[6]]]],[[],61],[[],61],[[],61],[[[17,[28]]],[[7,[69,[17,[28]]]]]],[[[17,[28]]],[[7,[69,[17,[28]]]]]],0,[23,8],[17,[[7,[21]]]],[23,[[7,[43]]]],[[17,70],[[7,[21]]]],[23,[[7,[[31,[[31,[2,30]],30]],21]]]],[23,[[7,[[31,[[31,[2,30]],30]],21]]]],[17,[[7,[41,21]]]],[17,41],[23,61],[17,7],[23,7],[[],71],[[],71],[[],71],[[23,72],23],0,[[]],[[]],[[]],[[]],[[],73],[[],73],[[[17,[26]],72],73],[23,[[7,[21]]]],[23,[[7,[21]]]],[17,[[7,[74]]]],[23,[[7,[74]]]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],0,[[],15],[[],15],[[],15],[[],15],[17,41],[[]],[[]],[[]],[[]],[23,8],[16,[[7,[73,47]]]],[16,[[7,[47]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[47,9],10],[[47,9],10],[75,47],[76,47],[77,47],[78,47],[79,47],[80,47],[21,47],[[]],[[]],[81],[[],73],[[],7],[[],7],[[],15],[[]],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,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[82,82],[83,83],[84,84],[46,46],[85,85],[45,45],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[],85],[[82,82],8],[[83,83],8],[[84,84],8],[[46,46],8],[[85,85],8],[[76,76],8],[[82,9],10],[[83,9],10],[[84,9],10],[[46,9],10],[[85,9],10],[[76,9],10],[[76,9],10],[[45,9],10],[[]],[[]],[[]],[8,84],[83,46],[[]],[[]],[[]],[[]],[[46,72],[[7,[85,76]]]],[82],[85],[83,73],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[83,8],[84,8],[85,8],0,[[85,85],[[12,[6]]]],[81],[46,8],0,[82,7],[83,7],[84,7],[46,7],[85,7],0,[[]],[[]],[[]],[[]],[[]],[[]],[[],73],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],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,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[18,[[7,[86,47]]]],[[[88,[[87,[35]]]],18],[[7,[86,47]]]],[[[89,[[87,[36]]]],18],[[7,[86,47]]]],[[[90,[[87,[36]]]],18],[[7,[86,47]]]],[[[92,[[87,[91]]]],18],[[7,[86,47]]]],[[[94,[[93,[35]]]],18],[[7,[86,47]]]],[[[95,[[93,[35]]]],18],[[7,[86,47]]]],[[[96,[[93,[36]]]],18],[[7,[86,47]]]],[[[97,[[93,[36]]]],18],[[7,[86,47]]]],[[[98,[[93,[36]]]],18],[[7,[86,47]]]],[[[99,[[93,[36]]]],18],[[7,[86,47]]]],[[[100,[[93,[91]]]],18],[[7,[86,47]]]],[[[101,[[93,[91]]]],18],[[7,[86,47]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[86,37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[37,18],[[7,[47]]]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],102],[[],22],[[26,27],[[7,[28,29]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[103,[[33,[32]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[[],[[7,[34]]]],[24,[[7,[34]]]],[[],[[7,[34]]]],[[[105,[104,48]]],[[105,[104,48]]]],[22,22],[106,106],[103,103],[26,26],[107,107],[108,108],[109,109],[110,110],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[103,103],6],[[26,26],6],[[108,108],6],[[110,110],6],0,[[],106],[[[105,[48]]]],[[26,27],[[7,[28,29]]]],[[],[[7,[26]]]],[103,41],[[22,22],8],[[103,103],8],[[26,26],8],[[107,107],8],[[108,108],8],[[109,109],8],[[110,110],8],[[[112,[[0,[111,48]]]],9],10],[[22,9],10],[[106,9],10],[[77,9],10],[[77,9],10],[[103,9],[[7,[51]]]],[[103,9],[[7,[51]]]],[[26,9],[[7,[51]]]],[[26,9],[[7,[51]]]],[[107,9],[[7,[51]]]],[[107,9],[[7,[51]]]],[[108,9],[[7,[51]]]],[[109,9],[[7,[51]]]],[[110,9],[[7,[51]]]],[103,8],[113,[[114,[48]]]],[115,[[114,[48]]]],[[]],[[]],[[]],[[]],[[]],[78,77],[[]],[21,77],[[]],[28,26],[[]],[[]],[[]],[[]],[[]],[[26,102],[[112,[48]]]],[[107,102],[[112,[48]]]],[16,[[7,[26]]]],[16,[[7,[107]]]],[60,[[7,[103,21]]]],[26,[[12,[116]]]],[26,[[31,[116,30]]]],[[],[[7,[105]]]],[[],[[7,[105]]]],[[],[[7,[105]]]],[[],[[7,[105]]]],[[[114,[48]]],8],[26,8],[103],[26],[108],[110],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[26,117],[[],[[7,[112,77]]]],[[[12,[118]],116],[[7,[112,77]]]],[105,[[7,[112,77]]]],[[105,[12,[118]],116],[[7,[112,77]]]],[[[112,[48]]],[[7,[[112,[48]],77]]]],[26,[[7,[[112,[48]],77]]]],[107,[[7,[[112,[48]],77]]]],[[],[[7,[114,77]]]],[[[114,[48]]],[[7,[[114,[48]],77]]]],[105,[[7,[114,77]]]],[[[105,[48]]]],[26,[[31,[26,30]]]],[107,[[31,[107,30]]]],[[[114,[48]],18],[[12,[115]]]],[[[114,[48]],18,37],113],[26,8],[[],8],[22,8],[26,8],[107,8],[[],8],[22,8],[[],8],[22,8],[26,8],[26,8],0,0,0,[103,[[7,[65,21]]]],[[],102],[26,119],[23,[[12,[61]]]],[103,61],[103,61],[[102,102],102],[[],16],[[61,[31,[30]]],[[7,[103,21]]]],[26,61],0,0,[23,[[7,[21]]]],[[[112,[48]],102],[[112,[48]]]],[[103,103],[[12,[6]]]],[[26,26],[[12,[6]]]],[[108,108],[[12,[6]]]],[[110,110],[[12,[6]]]],[[],61],0,[81],[103,[[7,[21]]]],[103,[[7,[[31,[[31,[2,30]],30]],21]]]],[103,61],[26,7],[[],71],[103,24],[[],102],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[107,37],[[7,[26,120]]]],[[],73],[[],73],[[],73],[[],73],[23,[[7,[21]]]],[23,[[7,[21]]]],[103,[[7,[103,74]]]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],[[12,[40]]]],[[],[[12,[121]]]],[61,[[12,[14]]]],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,0,0,[[122,122],122],[[123,1,124,[126,[125]]]],0,[123,[[72,[1,[0,[127,104]]]]]],[[128,128]],[[123,129,27],[[7,[130]]]],[[123,129,27,131],[[7,[132]]]],[[123,133]],[[123,[135,[134]]],[[7,[130]]]],[123,136],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[123,137],[[7,[[140,[138,139]],141]]]],[123,[[140,[138,142]]]],[[123,143],[[7,[40,144]]]],[[123,143],[[7,[121,144]]]],[[123,143]],0,0,[123,145],[122,122],[134,134],[128,128],[[]],[[]],[[]],0,[123,[[146,[8]]]],0,[[],122],[[],134],[[],128],[147],[[123,1],[[12,[27]]]],[[123,49],12],[[123,1],73],[[],[[7,[122]]]],[[],[[7,[128]]]],[[122,122],8],[[128,128],8],[[147,147],8],0,0,[[123,148,149],[[7,[8,150]]]],[[122,9],[[7,[51]]]],[[122,9],[[7,[51]]]],[[123,9],10],[[134,9],10],[[128,9],10],[[147,9],10],[[147,9],10],[[151,9],10],[[151,9],10],[[152,9],10],[[152,9],10],[[153,9],10],[[153,9],10],[[154,9],10],[[154,9],10],[[155,9],10],[[155,9],10],[[]],[[]],[[[156,[1]]],134],[157,134],[[]],[[]],[[[160,[158,[159,[1]]]]],128],[161,128],[[]],[[]],[[]],[[]],[[]],[[]],[123,122],[[123,1],62],[[123,3,[12,[162]],8],[[7,[163,164]]]],[[123,1],[[126,[44]]]],[[123,137],[[12,[[165,[[126,[143]],158]]]]]],[[123,11],[[12,[3]]]],0,0,0,0,[[123,131],[[7,[8,166]]]],[[123,143,167],[[7,[8,154]]]],[[123,11,14]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[49,8],[128,8],[[123,49],8],0,[123,72],0,[123,168],[123,127],[123,127],[[123,1],169],[[170,[12,[170]],[0,[[171,[128]],172,173]]],[[7,[123,152]]]],[123,174],[[123,1,27],8],[123,18],0,[[170,[12,[170]],[0,[[171,[128]],172,173]],18],[[7,[123,151]]]],[[170,[12,[170]],18],[[7,[123,47]]]],[[170,[12,[170]],18,175],[[7,[123,47]]]],[[170,[12,[170]],[0,[[171,[128]],172,173]],18],[[7,[123,153]]]],[[170,[12,[170]],[0,[[171,[128]],172,173]],18,175],[[7,[123,153]]]],[[170,[12,[170]],[0,[[171,[128]],172,173]],18,175],[[7,[123,151]]]],[[123,1],27],[[123,1],[[146,[147]]]],[[123,1,27],147],[[123,1],[[7,[[12,[46]],47]]]],[81],[81],[81],[81],[81],[[123,1],[[12,[62]]]],[[123,1,27],[[146,[127]]]],[[123,1],[[146,[147]]]],[123,37],[[123,143]],[122,7],[128,7],[[123,148,149],[[7,[8,150]]]],0,[123,176],[123,128],[123,[[177,[1]]]],[123,178],[[]],[[]],[[]],[[],73],[[],73],[[],73],[[],73],[[],73],[[],73],[[],73],[122,179],[123,127],0,[122,179],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],0,[123,136],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[123,1],[[0,[127,104]]]],[[123,1,27],8],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[12,18,37],[[7,[73,47]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[180,180],[181,181],[182,182],[[]],[[]],[[]],[[[31,[4]],[31,[4]],121,40,49],[[7,[183,184]]]],[[180,[31,[4]],[31,[4]],121,40,49],[[7,[183,184]]]],[[181,[31,[4]],[31,[4]],121,40,49],[[7,[183,184]]]],[[182,[31,[4]],[31,[4]],121,40,49],[[7,[183,184]]]],[[40,121,49],185],[[],180],[[],181],[[],182],0,0,[[184,9],10],[[184,9],10],[[185,9],10],[[183,9],10],[[180,9],10],[[181,9],10],[[182,9],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[183,40],[40,182],[81],0,[183,40],[[]],[[]],[[]],[[],73],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[186,186],[[]],[[186,9],10],[[186,9],10],[[164,9],10],[[164,9],10],[[141,9],10],[[141,9],10],[[]],[[]],[47,164],[76,164],[186,164],[187,164],[184,164],[[]],[[]],[[]],[[]],[81],[81],[81],[[]],[[],73],[[],73],[[],73],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[188,[[12,[73]]]],[188,73],[[],[[7,[188]]]],[[123,16,8],[[7,[188,16]]]],[[188,9],10],[[188,9],10],[[]],[16,[[7,[188]]]],[[]],0,[188,7],[[],73],[[],7],[[],7],[[],15],[[]],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,0,0,0,0,0,0,0,0,0,0,[[44,189,124,[126,[125]]],[[12,[[126,[125]]]]]],0,0,[[44,37],190],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[190,17,37],44],[189,189],[191,191],[[[193,[[0,[104,192,111,104]]]]],[[193,[[0,[104,192,111,104]]]]]],[124,124],[44,44],[149,149],[194,194],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[189,189],6],[[124,124],6],[[],124],[[],44],[[],149],[[],194],[[[193,[[0,[192,111,104]]]]]],[[],[[12,[107]]]],[[[193,[[195,[115]]]]],[[12,[107]]]],[[[193,[196]]],[[12,[107]]]],[[[193,[[197,[115]]]]],[[12,[107]]]],[[189,189],8],[[191,191],8],[[124,124],8],[[194,194],8],[[44,189],[[12,[126]]]],[[189,9],10],[[150,9],10],[[150,9],10],[[191,9],10],[[[193,[[0,[111,192,111,104]]]],9],10],[[124,9],10],[[44,9],10],[[149,9],10],[[194,9],10],[[]],[119,189],[198,189],[199,150],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[189],[37,189],[[[193,[[197,[115]]]],37],189],[[[193,[196]],37],189],[[[193,[[195,[115]]]],37],189],[44,[[31,[189]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[0,[192,111,104]],191],[[193,[[0,[192,111,104]]]]]],[[],44],[[189,189],[[12,[6]]]],[[124,124],[[12,[6]]]],[81],[[44,189,124],[[12,[[126,[125]]]]]],0,0,[[148,61,149,37],[[7,[150]]]],[[[193,[196]],148,61,149,37],[[7,[150]]]],[[[193,[[197,[115]]]],148,61,149,37],[[7,[150]]]],[[[193,[[195,[115]]]],148,61,149,37],[[7,[150]]]],[[148,149,37],[[7,[150]]]],[[148,149,37],[[7,[150]]]],0,[44,[[31,[126]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],73],0,0,[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[140,[200,142]]],[[140,[200,142]]]],[[140,11,163,61],[[7,[140,201]]]],[[140,11,163,61,13],[[7,[140,201]]]],[140,140],[[[140,[200,142]],41,179],[[140,[200,142]]]],[[140,11],140],[[140,11],[[7,[140,202]]]],[140,[[7,[140,202]]]],[[140,8],140],[[[140,[138,139]],41],[[7,[[140,[138,139]],203]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[140,204],140],[142,142],[139,139],[[[140,[104]]],[[140,[104]]]],[205,205],[204,204],[[]],[[]],[[]],[[]],[[]],[[205,205],6],[[204,204],6],[[140,200],[[140,[200]]]],[[140,27],140],[[],142],[[],139],[[],205],[[],204],[140,140],[[[140,[200,142]],41],[[140,[200,142]]]],[140,140],[140,140],[[140,13],140],[[205,205],8],[[204,204],8],[[140,40],140],[[140,121],140],[[[140,[200]]],[[7,[148,164]]]],[[142,9],10],[[139,9],10],[[[140,[111,111]],9],10],[[202,9],10],[[202,9],10],[[201,9],10],[[201,9],10],[[203,9],10],[[203,9],10],[[205,9],10],[[204,9],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[205],[204],[140,140],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[140,140],[[140,206],140],[140,140],[140,140],[[140,205],140],[[205,205],[[12,[6]]]],[[204,204],[[12,[6]]]],[[140,[72,[73,[31,[61]]]],1],140],[81],[81],[81],[[[140,[200,142]],31],[[140,[200,142]]]],[[140,162],140],[[205,143]],[[]],[[]],[[]],[[]],[[]],[[],73],[[],73],[[],73],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[140,[31,[11]]],140],[[140,207],140],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0],"p":[[4,"KeychainKind"],[15,"u8"],[3,"LocalOutput"],[3,"WeightedUtxo"],[4,"Utxo"],[4,"Ordering"],[4,"Result"],[15,"bool"],[3,"Formatter"],[6,"Result"],[3,"OutPoint"],[4,"Option"],[3,"Sequence"],[3,"TxOut"],[3,"TypeId"],[15,"str"],[4,"Descriptor"],[4,"Network"],[4,"NetworkChecked"],[3,"Address"],[4,"Error"],[4,"ScriptContextEnum"],[3,"Miniscript"],[4,"Terminal"],[4,"Tree"],[4,"DescriptorPublicKey"],[15,"u32"],[3,"DefiniteDescriptorKey"],[4,"ConversionError"],[3,"Global"],[3,"Vec"],[4,"Placeholder"],[3,"Satisfaction"],[4,"ScriptContextError"],[4,"Legacy"],[4,"Segwitv0"],[3,"Secp256k1"],[3,"PublicKey"],[4,"DescriptorType"],[15,"u64"],[3,"ScriptBuf"],[3,"ExtParams"],[4,"AnalysisError"],[3,"SignersContainer"],[4,"BuildSatisfaction"],[3,"Policy"],[4,"Error"],[8,"ScriptContext"],[3,"Script"],[3,"Range"],[3,"Error"],[3,"Bare"],[3,"Tr"],[3,"Wpkh"],[3,"Sh"],[3,"Wsh"],[3,"Pkh"],[3,"Type"],[3,"ExtData"],[3,"Tree"],[15,"usize"],[6,"ExtendedDescriptor"],[3,"Iter"],[3,"PkIter"],[4,"Policy"],[4,"LiftError"],[4,"BareCtx"],[4,"TapTree"],[3,"Plan"],[3,"TxIn"],[4,"SigType"],[3,"BTreeMap"],[3,"String"],[4,"TranslateErr"],[4,"HexToBytesError"],[4,"PolicyError"],[4,"KeyError"],[4,"Error"],[4,"Error"],[4,"Error"],[3,"Demand"],[4,"PkOrF"],[4,"SatisfiableItem"],[4,"Satisfaction"],[3,"Condition"],[6,"DescriptorTemplateOut"],[8,"IntoDescriptorKey"],[3,"P2Pkh"],[3,"P2Wpkh_P2Sh"],[3,"P2Wpkh"],[4,"Tap"],[3,"P2TR"],[8,"DerivableKey"],[3,"Bip44"],[3,"Bip44Public"],[3,"Bip49"],[3,"Bip49Public"],[3,"Bip84"],[3,"Bip84Public"],[3,"Bip86"],[3,"Bip86Public"],[6,"ValidNetworks"],[3,"SortedMultiVec"],[8,"Clone"],[3,"GeneratedKey"],[3,"PrivateKeyGenerateOptions"],[4,"DescriptorSecretKey"],[3,"SinglePub"],[3,"SinglePriv"],[4,"SinglePubKey"],[8,"Debug"],[4,"DescriptorKey"],[3,"Xpub"],[4,"ExtendedKey"],[3,"Xpriv"],[3,"DerivationPath"],[3,"Assets"],[6,"KeySource"],[3,"Fingerprint"],[3,"DescriptorKeyParseError"],[3,"FeeRate"],[3,"Balance"],[3,"Wallet"],[3,"SignerOrdering"],[8,"TransactionSigner"],[3,"Arc"],[8,"Iterator"],[3,"ChangeSet"],[3,"Block"],[3,"CannotConnectError"],[3,"BlockId"],[4,"ApplyHeaderError"],[8,"IntoIterator"],[3,"Update"],[8,"Into"],[3,"TxGraph"],[3,"Txid"],[6,"DefaultCoinSelectionAlgorithm"],[3,"BumpFee"],[3,"TxBuilder"],[4,"BuildFeeBumpError"],[3,"CreateTx"],[3,"Transaction"],[4,"CalculateFeeError"],[3,"CheckPointIter"],[6,"Result"],[3,"AddressInfo"],[3,"Psbt"],[3,"SignOptions"],[4,"SignerError"],[4,"NewError"],[4,"LoadError"],[4,"NewOrLoadError"],[4,"InsertTxError"],[4,"ApplyBlockError"],[3,"FullScanResult"],[3,"SyncResult"],[3,"ConfirmationTimeHeightAnchor"],[3,"ChangeSet"],[3,"ChangeSet"],[6,"ChangeSet"],[3,"PsbtSighashType"],[3,"Input"],[4,"CreateTxError"],[3,"CanonicalTx"],[3,"AlterCheckPointError"],[4,"ConfirmationTime"],[3,"CheckPoint"],[8,"DoubleEndedIterator"],[8,"IntoWalletDescriptor"],[8,"PersistBackend"],[8,"Send"],[8,"Sync"],[3,"LocalChain"],[3,"BlockHash"],[3,"KeychainTxOutIndex"],[3,"FullScanRequest"],[3,"SyncRequest"],[3,"Amount"],[3,"LargestFirstCoinSelection"],[3,"OldestFirstCoinSelection"],[3,"BranchAndBoundCoinSelection"],[3,"CoinSelectionResult"],[4,"Error"],[4,"Excess"],[4,"MiniscriptPsbtError"],[4,"Error"],[3,"FullyNodedExport"],[4,"SignerId"],[6,"KeyMap"],[4,"SignerContext"],[8,"Sized"],[3,"SignerWrapper"],[4,"TapLeavesOptions"],[3,"DescriptorXKey"],[3,"PrivateKey"],[3,"DescriptorMultiXKey"],[3,"Hash"],[4,"Error"],[8,"CoinSelectionAlgorithm"],[4,"AddForeignUtxoError"],[4,"AddUtxoError"],[4,"AllowShrinkingError"],[4,"ChangeSpendPolicy"],[4,"TxOrdering"],[4,"LockTime"],[15,"i32"],[13,"Foreign"],[8,"ExtractPolicy"],[13,"PsbtTimelocks"],[13,"Complete"],[13,"Partial"],[13,"PartialComplete"],[13,"Sha256Preimage"],[13,"Hash256Preimage"],[13,"Ripemd160Preimage"],[13,"Hash160Preimage"],[13,"Thresh"],[13,"Multisig"],[13,"AbsoluteTimelock"],[13,"RelativeTimelock"],[8,"DescriptorTemplate"],[8,"GeneratableKey"],[8,"ExtScriptContext"],[8,"GeneratableDefaultOptions"],[8,"PsbtUtils"],[8,"IsDust"],[13,"UnexpectedConnectedToHash"],[13,"ConfirmationHeightCannotBeGreaterThanTip"],[13,"LoadedGenesisDoesNotMatch"],[13,"LoadedNetworkDoesNotMatch"],[13,"InsufficientFunds"],[13,"Change"],[13,"NoChange"],[13,"InsufficientFunds"],[13,"RbfSequenceCsv"],[13,"LockTime"],[13,"FeeTooLow"],[13,"FeeRateTooLow"],[8,"SignerCommon"],[8,"InputSigner"],[13,"Tap"],[13,"InvalidTxid"]]},\ +"bdk":{"doc":"bdk","t":[13,13,2,13,4,13,3,2,2,4,2,3,11,11,11,11,11,11,11,11,11,11,2,11,11,11,11,11,11,11,11,11,12,12,0,14,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,12,12,0,11,12,11,0,12,11,11,11,2,2,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,12,5,11,11,11,11,0,12,12,12,13,6,4,2,4,6,8,6,8,16,4,3,13,13,2,8,4,13,13,6,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,2,11,11,11,11,11,11,11,11,11,11,11,11,11,10,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,0,11,12,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,10,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,11,11,12,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,10,11,11,11,0,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,5,5,13,13,4,13,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,13,13,13,4,13,3,6,13,13,6,13,13,13,13,13,13,13,13,13,13,13,4,3,4,13,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,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,11,11,11,11,11,11,11,11,11,11,12,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,3,3,3,3,3,3,3,3,8,6,3,3,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,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,13,8,4,4,4,16,16,8,4,13,8,8,3,8,13,13,13,16,4,6,13,13,13,13,13,16,13,3,13,8,4,13,13,13,3,3,4,3,13,6,13,13,13,5,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,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,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,10,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,11,11,11,11,12,12,12,11,5,11,10,11,11,5,10,11,11,12,12,11,11,11,11,11,11,10,12,11,11,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,11,11,8,10,10,10,3,4,3,13,3,13,13,13,13,4,8,4,13,13,13,13,13,13,4,4,13,13,13,13,13,13,13,3,3,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,12,12,11,11,11,11,11,11,11,0,11,12,11,11,11,11,11,11,11,11,11,11,11,11,0,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,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,12,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,11,11,11,11,11,11,11,0,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,0,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,5,12,12,12,12,12,12,12,12,12,12,13,13,3,13,8,3,6,4,4,13,3,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,5,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,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,12,12,12,12,12,12,12,4,13,13,13,4,13,13,13,13,13,13,13,13,4,13,13,13,13,13,13,13,13,13,13,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,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,3,6,12,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,13,13,13,13,13,13,13,8,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,8,4,4,4,3,3,3,13,4,8,13,11,12,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,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,10,11,11,11,10,11,12,11,12,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,12,4,4,4,13,3,13,13,4,3,13,13,13,13,13,13,3,8,4,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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],"n":["External","Foreign","HdKeyPaths","Internal","KeychainKind","Local","LocalOutput","SignOptions","TxBuilder","Utxo","Wallet","WeightedUtxo","as_byte","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","confirmation_time","derivation_index","descriptor","descriptor","deserialize","deserialize","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fragment","from","from","from","from","hash","hash","into","into","into","into","is_spent","keychain","keys","outpoint","outpoint","partial_cmp","psbt","satisfaction_weight","sequence","serialize","serialize","signer","template","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","txout","txout","type_id","type_id","type_id","type_id","utxo","version","vzip","vzip","vzip","vzip","wallet","outpoint","psbt_input","sequence","Bare","DerivedDescriptor","Descriptor","DescriptorError","DescriptorPublicKey","ExtendedDescriptor","ExtractPolicy","HdKeyPaths","IntoWalletDescriptor","Key","Legacy","Miniscript","MultiXPub","Pkh","Policy","ScriptContext","Segwitv0","Sh","Single","TapKeyOrigins","Tr","Wpkh","Wsh","XPub","address","as_enum","as_enum","as_inner","as_node","at_derivation_index","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","build_template","build_template_mall","calc_checksum","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_pk","check_pk","check_pk","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","contains_raw_pkh","derive","derived_descriptor","derived_descriptor","desc_type","descriptor_id","deserialize","deserialize","dust_value","encode","eq","eq","eq","eq","error","explicit_script","ext","ext_check","extract_policy","extract_policy","extract_policy","find_derivation_index_for_spk","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from_ast","from_components_unchecked","from_str","from_str","from_str_ext","from_str_insane","from_tree","from_tree","get_nth_child","get_nth_pk","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","has_wildcard","hash","hash","hash","hash","into","into","into","into","into_inner","into_single_descriptors","into_wallet_descriptor","into_wallet_descriptor","is_deriveable","is_multipath","is_non_malleable","iter","iter_pk","lift","lift","lift_check","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","max_weight_to_satisfy","name_str","name_str","name_str","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","other_top_level_checks","parse","parse_descriptor","parse_insane","parse_with_ext","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","plan","plan_mall","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","substitute_raw_pkh","template","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_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","within_resource_limits","calc_checksum","calc_checksum_bytes","Base58","Bip32","Error","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","MultiPath","Pk","Policy","borrow","borrow_mut","fmt","fmt","from","from","from","from","from","from","from","from","into","provide","to_string","try_from","try_into","type_id","vzip","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","Fingerprint","FoldedConditionMap","Hash160Preimage","Hash256Preimage","IncompatibleConditions","IndexOutOfRange","MixedTimelockUnits","Multisig","None","None","NotEnoughItemsSelected","Partial","PartialComplete","PkOrF","Policy","PolicyError","Psbt","PsbtTimelocks","Pubkey","RelativeTimelock","Ripemd160Preimage","Satisfaction","SatisfiableItem","SchnorrSignature","Sha256Preimage","Thresh","XOnlyPubkey","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","contribution","csv","default","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","hash","hash","id","id","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","partial_cmp","provide","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","current_height","input_max_height","psbt","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","Bip86","Bip86Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2TR","P2Wpkh","P2Wpkh_P2Sh","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","build","build","build","build","build","build","build","build","build","build","build","build","build","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","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","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_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","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","MultiXPrv","MultiXPub","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","Single","Single","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","at_derivation_index","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","build_template","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_pk","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","derive","deserialize","encode","eq","eq","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","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","full_derivation_paths","generate","generate_default","generate_with_entropy","generate_with_entropy_default","has_secret","has_wildcard","hash","hash","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into_assets","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_single_keys","into_single_keys","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_multipath","is_multipath","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","new","num_der_paths","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","provide","sanity_check","satisfy","script_size","serialize","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_public","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","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressInfo","ApplyBlockError","Balance","CannotConnect","ChangeSet","ConfirmationHeightCannotBeGreaterThanTip","Descriptor","Descriptor","Descriptor","InsertTxError","IsDust","LoadError","LoadedDescriptorDoesNotMatch","LoadedGenesisDoesNotMatch","LoadedNetworkDoesNotMatch","MissingDescriptor","MissingGenesis","MissingNetwork","NewError","NewOrLoadError","NonEmptyDatabase","NotInitialized","NotInitialized","Persist","Persist","Persist","UnexpectedConnectedToHash","Update","Wallet","add","add_signer","address","all_unbounded_spk_iters","append","apply_block","apply_block_connected_to","apply_unconfirmed_txs","apply_update","as_ref","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","build_fee_bump","build_tx","calculate_fee","calculate_fee_rate","cancel_tx","chain","chain","checkpoints","clone","clone","clone","clone_into","clone_into","clone_into","coin_selection","commit","confirmed","default","default","default","deref","derivation_index","derivation_of_spk","descriptor_checksum","deserialize","deserialize","eq","eq","eq","error","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_balance","get_descriptor_for_keychain","get_psbt_input","get_signers","get_tx","get_utxo","graph","immature","index","indexed_tx_graph","insert_checkpoint","insert_tx","insert_txout","into","into","into","into","into","into","into","into","into","into","is_dust","is_empty","is_mine","keychain","keychains","last_active_indices","latest_checkpoint","list_output","list_unspent","list_unused_addresses","load","local_chain","mark_used","network","network","new","new_no_persist","new_no_persist_with_genesis_hash","new_or_load","new_or_load_with_genesis_hash","new_with_genesis_hash","next_derivation_index","next_unused_address","peek_address","policies","provide","provide","provide","provide","provide","public_descriptor","reveal_addresses_to","reveal_next_address","secp_ctx","sent_and_received","serialize","serialize","sign","signer","spk_index","staged","start_full_scan","start_sync_with_revealed_spks","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","to_string","total","transactions","trusted_pending","trusted_spendable","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","tx_builder","tx_graph","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","untrusted_pending","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","connected_to_hash","expected_hash","tip_height","tx_height","expected","expected","got","got","got","keychain","BnBNoExactMatch","BnBTotalTriesExceeded","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Error","Excess","InsufficientFunds","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","local_selected_amount","new","provide","selected","selected_amount","to_owned","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","available","needed","amount","change_fee","dust_threshold","fee","remaining_amount","BuildFeeBumpError","ChangePolicyDescriptor","CoinSelection","Conversion","CreateTxError","Descriptor","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","InsufficientFunds","IrreplaceableTransaction","LockTime","MiniscriptPsbt","MiniscriptPsbtError","MissingKeyOrigin","MissingNonWitnessUtxo","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","OutputUpdate","Persist","Policy","Psbt","RbfSequence","RbfSequenceCsv","SpendingPolicyRequired","TransactionConfirmed","TransactionNotFound","UnknownUtxo","UnknownUtxo","UtxoUpdate","Version0","Version1Csv","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","provide","provide","provide","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","available","csv","needed","rbf","requested","required","required","required","FullyNodedExport","WalletExport","blockheight","borrow","borrow_mut","change_descriptor","descriptor","deserialize","export_wallet","fmt","fmt","from","from_str","into","label","serialize","to_string","try_from","try_into","type_id","vzip","All","Dummy","Exclude","External","Fingerprint","Include","InputIndexOutOfRange","InputSigner","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","Legacy","MiniscriptPsbt","MissingHdKeypath","MissingKey","MissingNonWitnessUtxo","MissingWitnessScript","MissingWitnessUtxo","NonStandardSighash","None","PkHash","Segwitv0","SighashError","SignOptions","SignerCommon","SignerContext","SignerError","SignerId","SignerOrdering","SignerWrapper","SignersContainer","Tap","TapLeavesOptions","TransactionSigner","UserCanceled","add_external","allow_all_sighashes","allow_grinding","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","eq","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","hash","id","id","id","id","ids","into","into","into","into","into","into","into","into","new","new","partial_cmp","partial_cmp","provide","remove","remove_partial_sigs","remove_taproot_extras","sign_input","sign_input","sign_input","sign_input","sign_transaction","sign_transaction","sign_with_tap_internal_key","signers","tap_leaves_options","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_finalize","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","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","is_internal_key","AddForeignUtxoError","AddUtxoError","AllowShrinkingError","Bip69Lexicographic","BumpFee","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","CreateTx","InvalidOutpoint","InvalidTxid","MissingScriptPubKey","MissingUtxo","OnlyChange","Shuffle","TxBuilder","TxBuilderContext","TxOrdering","UnknownUtxo","Untouched","add_data","add_foreign_utxo","add_foreign_utxo_with_sequence","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_dust","allow_shrinking","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","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","current_height","default","default","default","default","do_not_spend_change","drain_to","drain_wallet","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","hash","hash","include_output_redeem_witness_script","into","into","into","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","provide","provide","provide","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","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","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unspendable","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","foreign_utxo","input_txid"],"q":["bdk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Utxo","","","bdk::descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::checksum","","bdk::descriptor::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy::BuildSatisfaction","","","bdk::descriptor::policy::Satisfaction","","","","","","","","","","","bdk::descriptor::policy::SatisfiableItem","","","","","","","","","","bdk::descriptor::template","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::psbt","","","","bdk::wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::ApplyBlockError","","bdk::wallet::InsertTxError","","bdk::wallet::NewOrLoadError","","","","","","bdk::wallet::coin_selection","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::coin_selection::Error","","bdk::wallet::coin_selection::Excess","","","","","bdk::wallet::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::error::CreateTxError","","","","","","","","bdk::wallet::export","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer::SignerContext","bdk::wallet::tx_builder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::tx_builder::AddForeignUtxoError",""],"d":["External keychain, used for deriving recipient addresses.","A UTXO owned by another wallet.","","Internal keychain, used for deriving change addresses.","Types of keychains","A UTXO owned by the local wallet.","An unspent output owned by a Wallet.","","","An unspent transaction output (UTXO).","","A Utxo with its satisfaction_weight.","Return KeychainKind as a byte","","","","","","","","","","","","","","","","","","","","The confirmation time for transaction containing this utxo","The derivation index for the script pubkey in the wallet","Descriptors","Macro to write full descriptors with code","","","","","","","","","","","Macro to write descriptor fragments with code","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Whether this UTXO is spent or not","Type of keychain","Key formats","Get the location of the UTXO","Reference to a transaction output","","Additional functions on the rust-bitcoin Psbt structure.","The weight of the witness data and scriptSig expressed in …","Get the sequence number if an explicit sequence number has …","","","","","","","","","","","","","","","","","Get the TxOut of the UTXO","Transaction output","","","","","The UTXO","Get the version of BDK at runtime","","","","","Wallet","The location of the output.","The information about the input we require to add it to a …","The nSequence value to set for this input.","A raw scriptpubkey (including pay-to-pubkey) under Legacy …","Alias for a Descriptor that contains extended derived keys","Script descriptor","","The descriptor pubkey, either a single pubkey or an xpub.","Alias for a Descriptor that can contain extended keys …","Trait implemented on Descriptors to add a method to …","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 …","Legacy ScriptContext To be used as P2SH scripts For …","The top-level miniscript abstract syntax tree (AST).","Multiple extended public keys.","Pay-to-PubKey-Hash","","The ScriptContext for Miniscript. Additional type …","Segwitv0 ScriptContext","Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)","Single public key.","Alias for the type of maps that represent taproot key …","Pay-to-Taproot","Pay-to-Witness-PubKey-Hash","Pay-to-Witness-ScriptHash with Segwitv0 context","Extended public key (xpub).","Computes the Bitcoin address of the descriptor, if one …","","","Get a reference to the inner AstElem representing the root …","","Replaces all wildcards (i.e. /*) in the descriptor with a …","","","","","","","","","Enumerates all child nodes of the current AST node (self) …","Attempt to produce a non-malleable witness template given …","Attempt to produce a malleable witness template given the …","","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 …","Each context has slightly different rules on what Pks are …","","","Depending on ScriptContext, fragments can be malleable. …","","","Check whether the given satisfaction is valid under the …","","","Descriptor checksum","","","","","","","","","","","","","Whether the given miniscript contains a raw pkh fragment","Deprecated name for Self::at_derivation_index.","Convert all the public keys in the descriptor to …","Convert all the public keys in the descriptor to …","Get the DescriptorType of Descriptor","","","","","Encode as a Bitcoin script","","","","","Descriptor errors","Computes the the underlying script before any hashing is …","Additional information helpful for extra analysis.","Check whether the miniscript follows the given Extra …","Extract the spending policy","","","Utility method for deriving the descriptor at each index …","","","","","","","","","Returns the argument unchanged.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Add type information(Type and Extdata) to Miniscript based …","Create a new Miniscript from a Terminal node and a Type …","","Parse a Miniscript from string and perform sanity checks …","Attempt to parse an Miniscripts that don’t follow the …","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 child node with given index, if any","Returns Option::Some with cloned 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","Whether or not the descriptor has any wildcards i.e. /*.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Extracts the AstElem representing the root of the …","Get as many descriptors as different paths in this …","Convert to wallet descriptor","","Whether or not the descriptor has any wildcards","Whether this descriptor contains a key that has multiple …","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 …","","","Lifting corresponds to conversion of a miniscript into a …","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 …","Computes an upper bound on the difference between a …","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 AST.","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 …","Attempt to parse an miniscript with extra features that …","","","","","Get the len of public key when serialized based on context …","","","Returns a plan if the provided assets are sufficient to …","Returns a plan if the provided assets are sufficient to …","Descriptor policy","Whether all spend paths of miniscript require a signature","Checks whether the descriptor is safe.","Check whether the underlying Miniscript is safe under the …","Attempts to produce a non-malleable satisfying witness and …","Attempt to produce non-malleable satisfying witness for the","Attempt to produce a malleable satisfying witness for the …","Computes 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","","","Substitutes raw public keys hashes with the public keys as …","Descriptor templates","","","","","","","Serialize a descriptor to string with its secret keys","Check top level consensus rules.","Check whether the top-level is type B","Converts a descriptor using abstract keys to one using …","Translates a struct from one generic to another where the …","","","","","","","","","The correctness and malleability type information for the …","","","","","Computes the scriptSig that will be in place for an …","","","","","Whether the miniscript can exceed the resource …","Compute the checksum of a descriptor, excludes any …","Compute the checksum bytes of a descriptor, excludes any …","Error during base58 decoding","BIP32 error","Errors related to the parsing and usage of descriptors","The descriptor contains hardened derivation steps on …","Hex decoding error","Invalid byte 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","The descriptor contains multipath keys","Key-related error","Error while extracting and manipulating policies","","","","","","","Returns the argument unchanged.","","","","","","Calls U::from(self).","","","","","","","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","An extended key fingerprint","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","A unique identifier for a key","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","A legacy public key","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","A x-only public key","","","","","","","","","","","","","","","","","","","","","","","","","","","How the wallet’s descriptor can satisfy this policy node","Optional CheckSequenceVerify condition","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the conditions that are set by the spending policy …","","","Returns a unique id for the SatisfiableItem","Identifier for this policy node","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","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 timelock value","The timelock value","BIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)","BIP44 public template. Expands to pkh(key/{0,1}/*)","BIP49 template. Expands to …","BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))","BIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)","BIP84 public template. Expands to wpkh(key/{0,1}/*)","BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)","BIP86 public template. Expands to tr(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)","P2TR template. Expands to a descriptor tr(key)","P2WPKH template. Expands to a descriptor wpkh(key)","P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))","","","","","","","","","","","","","","","","","","","","","","","","","Build the complete descriptor","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BIP32 error","Trait for keys that can be derived.","Container for public or secret keys","The descriptor pubkey, either a single pubkey or an xpub.","The descriptor secret key, either a single private key or …","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","A bitcoin public key (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","Multiple extended private keys.","Multiple extended public keys.","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 public key.","Single private key.","A descriptor bitcoin::PrivateKey with optional origin …","A descriptor SinglePubKey with optional origin information.","Single public key without any origin or range information.","Contents of a “sortedmulti” descriptor","Taproot scripts","Set of valid networks for a key","An xonly public key.","Extended private key (xpriv).","Extended public key (xpub).","Create a set containing mainnet, testnet, signet, and …","Returns the ScriptContext as a ScriptContextEnum","Replaces any wildcard (i.e. /*) in the key with a …","","","","","","","","","","","","","","","","","","","","","","","","","Attempt to produce a witness template given the assets …","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 …","Each context has slightly different rules on what Pks are …","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","","","Deprecated name for Self::at_derivation_index.","","Encode as a Bitcoin script","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","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","Returns a vector containing the full derivation paths from …","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","Whether or not the key has a wildcard","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","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","Get as many keys as derivation paths in this key.","Get as many keys as derivation paths in this key.","Transform the ExtendedKey into an Xpriv for the given …","Transform the ExtendedKey into an Xpub for the given …","Whether or not the key has a wildcard","Returns whether the script context is Legacy","Returns whether the script context is …","Whether or not this key has multiple derivation paths.","Whether or not this key has multiple derivation paths.","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 public key.","The private 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 (fingerprint and derivation path).","Origin information (fingerprint and derivation path).","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","","","","","","","","","","Returns the public version of this key.","","","","","Check top level consensus rules.","Check whether the top-level is type B","This will panic if fpk returns an uncompressed key when …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Trait to add functions to extract utxos and calculate fees.","The total transaction fee amount, sum of input amounts …","The transaction’s fee rate. This value will only be …","Get the TxOut for the specified input index, if it doesn’…","A derived address and the index it was found at. For …","An error that may occur when applying a block to Wallet.","Balance, differentiated into various categories.","Occurs when the update chain cannot connect with original …","The changes made to a wallet by applying an Update.","The error variant that occurs when the caller attempts to …","There was problem with the passed-in descriptor(s).","There was a problem with the passed-in descriptor(s).","There is a problem with the passed-in descriptor.","An error that may occur when inserting a transaction into …","Trait to check if a value is below the dust limit. We are …","The error type when loading a Wallet from persistence.","The loaded desccriptor does not match what was provided.","The loaded genesis hash does not match what was provided.","The loaded network type does not match what was provided.","Data loaded from persistence is missing descriptor.","Data loaded from persistence is missing genesis hash.","Data loaded from persistence is missing network type.","The error type when constructing a fresh Wallet.","Error type for when we try load a Wallet from persistence …","Database already has data.","Wallet not initialized, persistence backend is empty.","Wallet is not initialized, persistence backend is empty.","We were unable to write the wallet’s data to the …","Loading data from the persistence backend failed.","Either writing to or loading from the persistence backend …","Occurs when the connected_to hash does not match the hash …","An update to Wallet.","A Bitcoin wallet","","Add an external signer","Address","Get unbounded script pubkey iterators for both Internal …","","Introduces a block of height to the wallet, and tries to …","Applies relevant transactions from block of height to the …","Apply relevant unconfirmed transactions to the wallet.","Applies an update to the wallet and stages the changes …","","","","","","","","","","","","","","","","","","","","","","Bump the fee of a transaction previously created with this …","Start building a transaction.","Calculates the fee of a given transaction. Returns 0 if tx …","Calculate the FeeRate for a given transaction.","Informs the wallet that you no longer intend to broadcast …","Update for the wallet’s internal LocalChain.","Changes to the LocalChain.","Get all the checkpoints the wallet is currently storing …","","","","","","","Coin selection","Commits all currently staged changed to the persistence …","Confirmed and immediately spendable balance","","","","","The derivation index of this wallet. It will return None …","Finds how the wallet derived the script pubkey spk.","Return the checksum of the public descriptor associated to …","","","","","","Errors that can be thrown by the Wallet","Wallet export","Finalize a PSBT, i.e., for each input determine if …","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the balance, separated into available, …","Returns the descriptor used to create addresses for a …","get the corresponding PSBT Input for a LocalUtxo","Get the signers","Get a single transaction from the wallet as a CanonicalTx …","Returns the utxo owned by this wallet corresponding to …","Update for the wallet’s internal TxGraph.","All coinbase outputs not yet matured","Child index of this address","Changes to IndexedTxGraph.","Add a new checkpoint to the wallet’s internal view of …","Add a transaction to the wallet’s internal view of the …","Inserts a TxOut at OutPoint into the wallet’s …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Check whether or not a value is below dust limit","","Return whether or not a script is part of this wallet …","Type of keychain","Iterator over all keychains in this wallet","Contains the last active derivation indices per keychain (K…","Returns the latest checkpoint.","List all relevant outputs (includes both spent and …","Return the list of unspent outputs of this wallet","List addresses that are revealed but unused.","Load Wallet from the given persistence backend.","Get a reference to the inner LocalChain.","Marks an address used of the given keychain at index.","Get the Bitcoin network the wallet is using.","Stores the network type of the wallet.","Initialize an empty Wallet.","Creates a wallet that does not persist data.","Creates a wallet that does not persist data, with a custom …","Either loads Wallet from persistence, or initializes it if …","Either loads Wallet from persistence, or initializes it if …","Initialize an empty Wallet with a custom genesis hash.","The index of the next address that you would get if you …","Get the next unused address for the given keychain, i.e. …","Peek an address of the given keychain at index without …","Return the spending policies for the wallet’s descriptor","","","","","","Return the “public” version of the wallet’s …","Reveal addresses up to and including the target index and …","Attempt to reveal the next address of the given keychain.","Return the secp256k1 context used for all signing …","Compute the tx’s sent and received Amounts.","","","Sign a transaction with all the wallet’s signers, in the …","Generalized signers","Get a reference to the inner KeychainTxOutIndex.","Returns the changes that will be committed with the next …","Create a `FullScanRequest for this wallet.","Create a partial SyncRequest for this wallet for all …","","","","","","","","","","","Get the whole balance visible to the wallet.","Iterate over the transactions in the wallet.","Unconfirmed UTXOs generated by a wallet tx","Get sum of trusted_pending and confirmed coins.","","","","","","","","","","","","","","","","","","","","","Transaction builder","Get a reference to the inner TxGraph.","","","","","","","","","","","Get an unbounded script pubkey iterator for the given …","Undoes the effect of mark_used and returns whether the …","Unconfirmed UTXOs received from an external wallet","","","","","","","","","","","Deterministically generate a unique name given the …","Block hash of connected_to.","Expected block hash of connected_to, as derived from block.","The internal chain’s tip height.","The introduced transaction’s confirmation height.","The expected genesis block hash.","The expected network type.","The block hash loaded from persistence.","The network type loaded from persistence.","The descriptor loaded from persistence.","The keychain of the descriptor not matching","Branch and bound coin selection tries to avoid needing a …","Branch and bound coin selection possible attempts with …","Branch and bound coin selection","It’s possible to create spendable output from excess …","Trait for generalized coin selection algorithms","Result of a successful coin selection","Default coin selection algorithm used by TxBuilder if not …","Errors that can be thrown by the coin_selection module","Remaining amount after performing coin selection","Wallet’s UTXO set is not enough to cover recipient’s …","Simple and dumb coin selection","It’s not possible to create spendable output from excess …","OldestFirstCoinSelection always picks the utxo with the …","","","","","","","","","","","","","","","","","","","Perform the coin selection","","","","Decide if change can be created","","","","Remaining amount after deducing fees and outgoing outputs","Total fee amount for the selected utxos in satoshis","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","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.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Sats available for spending","Sats needed for some transaction","Effective amount available to create change after …","The calculated fee for the drain TxOut with the selected …","Threshold to consider amount as dust for this particular …","The deducted change output fee","Exceeding amount of current selection over outgoing value …","Error returned from Wallet::build_fee_bump","The change_policy was set but the wallet does not have a …","There was an error with coin selection","Descriptor key conversion error","Error returned from TxBuilder::finish","There was a problem with the descriptors passed in","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 …","Wallet’s UTXO set is not enough to cover recipient’s …","Trying to replace a tx that has a sequence >= 0xFFFFFFFE","Requested LockTime is less than is required to spend from …","Miniscript PSBT error","Errors returned by miniscript when updating inconsistent …","In order to use the TxBuilder::add_global_xpubs option …","Missing non_witness_utxo on foreign utxo for given OutPoint","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","Return error type for …","We were unable to load wallet data from or write wallet …","There was a problem while extracting and manipulating …","Partially signed bitcoin transaction error","Cannot enable RBF with a Sequence >= 0xFFFFFFFE","Cannot enable RBF with Sequence given a required OP_CSV","Spending policy is not compatible with this KeychainKind","Happens when trying to bump a transaction that is already …","Thrown when a tx is not found in the internal database","Happens when trying to spend an UTXO that is not in the …","Happens when trying to spend an UTXO that is not in the …","Return error type for PsbtExt::update_input_with_descriptor","Requested invalid transaction version ‘0’","Requested transaction version 1, but at least 2 is needed …","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","Sats available for spending","Required OP_CSV Sequence","Sats needed for some transaction","Given RBF Sequence","Requested LockTime","Required LockTime","Required fee absolute value (satoshi)","Required fee rate","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","","","Returns the argument unchanged.","","Calls U::from(self).","Arbitrary label for the wallet","","","","","","","The signer will sign all the leaves it has a key for.","Dummy identifier","The signer won’t sign the specified leaves.","To be used only by external libraries implementing …","The fingerprint of a BIP32 extended key","The signer won’t sign leaves other than the ones …","Input index is out of range","PSBT Input signer","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","Legacy context","Miniscript PSBT error","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 …","The signer won’t sign any leaf.","Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA …","Segwit v0 context (BIP 143)","Error while computing the hash to sign","Options for a software signer","Common signer methods","Signing context","Signing error","Identifier of a signer in the SignersContainers. Used as a …","Defines the order in which signers are called","Wrapper to pair a signer with its context","Container for multiple signers","Taproot context (BIP 340)","Customize which taproot script-path leaves the signer …","PSBT signer","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 …","Whether we should grind ECDSA signature to ensure signing …","Create a map of public keys to secret keys","Whether the wallet should assume a specific height has …","","","","","","","","","","","","","","","","","Build a new signer container from a KeyMap","","","","","","","","","","","","","","","","","","","","","","Return the secret key for the signer","","","","","","","","Finds the signer with lowest ordering for a given id in …","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Return the SignerId for this signer","","","","Returns the list of identifiers of all the signers in the …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Create a wrapped signer from a signer and a context","Default constructor","","","","Removes a signer from the container and returns it","Whether to remove partial signatures from the PSBT inputs …","Whether to remove taproot specific fields from the PSBT on …","Sign a single psbt input","","","","Sign all the inputs of the psbt","","Whether we should try to sign a taproot transaction with …","Returns the list of signers in the container, sorted by …","Specifies which Taproot script-spend leaves we should sign …","","","","","","","","","Whether the signer should trust the witness_utxo, if the …","Whether to try finalizing the PSBT after the inputs are …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether the signer can sign for the internal key or not","Error returned from TxBuilder::add_foreign_utxo.","Error returned from TxBuilder::add_utxo and …","Error returned from TxBuilder::allow_shrinking","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 …","Requested outpoint doesn’t exist in the tx (vout greater …","Foreign utxo outpoint txid does not match PSBT input txid","Script/PubKey was not in the original transaction","Foreign utxo missing witness_utxo or non_witness_utxo","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","Happens when trying to spend an UTXO that is not in the …","Unchanged","Add data as an output, using OP_RETURN","Add a foreign UTXO i.e. a UTXO not owned by this wallet.","Same as add_foreign_utxo but allows to set the nSequence …","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 …","Set whether or not the dust limit is checked.","Explicitly tells the wallet that it is allowed to reduce …","","","","","","","","","","","","","","","","","Set a specific ChangeSpendPolicy. See …","","","","","","","","","","","","","Choose the coin selection algorithm","Set the current blockchain height.","","","","","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 The fee_absolute method refers to the …","Set a custom fee rate.","Finish building the transaction.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Fill-in the psbt::Output::redeem_script and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","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","","","","","","","","","Foreign UTXO outpoint","PSBT input txid"],"i":[1,5,0,1,0,5,0,0,0,0,0,0,1,1,1,3,4,5,1,3,4,5,0,1,3,4,5,1,3,4,5,1,3,3,0,0,1,3,1,3,4,5,1,3,4,5,0,1,3,4,5,1,3,1,3,4,5,3,3,0,5,3,1,0,4,5,1,3,0,0,1,3,4,5,1,3,4,5,1,3,4,5,5,3,1,3,4,5,4,0,1,3,4,5,0,209,209,209,17,0,0,0,0,0,0,0,0,49,0,0,26,17,0,0,0,17,26,0,17,17,17,26,17,35,36,23,23,17,17,35,36,23,17,35,36,23,23,23,23,0,49,35,36,49,36,49,49,35,36,49,35,36,49,49,35,36,49,35,36,49,35,36,0,17,35,36,23,17,35,36,23,17,35,36,23,23,17,17,17,17,17,17,23,17,23,17,35,36,23,0,17,23,23,210,17,23,17,17,17,35,36,23,23,17,23,17,17,17,17,17,17,17,35,36,23,23,23,17,23,23,23,17,23,23,23,17,17,23,23,17,17,35,36,23,17,35,36,23,23,17,175,63,17,17,23,23,23,17,23,23,49,35,36,23,17,23,17,49,35,36,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,49,23,17,23,23,17,35,36,23,49,35,36,17,17,0,23,17,23,17,23,23,17,17,23,17,23,49,35,36,23,0,17,35,36,23,17,23,17,49,49,17,23,17,35,36,23,17,35,36,23,23,17,35,36,23,17,17,35,36,23,23,0,0,48,48,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,84,76,76,0,85,0,0,84,83,0,84,84,76,76,76,84,85,46,76,85,85,0,0,0,46,46,83,84,84,0,0,84,84,84,83,83,84,85,47,86,76,46,83,84,85,47,86,76,46,83,84,85,47,86,46,83,84,85,47,86,46,47,86,86,83,84,85,47,86,76,83,84,85,47,86,76,76,46,83,84,85,85,47,47,86,76,46,47,83,86,84,47,83,84,85,47,86,76,46,84,85,86,47,86,76,47,47,83,84,85,47,86,86,83,84,85,47,86,46,76,83,84,85,47,86,76,46,83,84,85,47,86,76,46,83,84,85,47,86,76,46,83,84,85,47,86,76,46,211,211,211,212,213,214,213,214,213,214,213,214,213,214,215,216,217,218,219,220,220,219,221,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,223,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,87,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,81,0,0,0,0,224,224,0,0,111,0,0,0,0,81,81,81,49,0,0,22,81,81,108,26,224,115,0,115,0,0,22,26,108,0,0,0,0,22,0,111,108,26,0,225,26,115,106,113,22,107,81,104,26,108,109,110,111,115,106,113,22,107,81,104,26,108,109,110,111,104,49,49,49,49,49,49,49,49,49,106,22,107,104,26,108,109,110,111,106,22,107,104,26,108,109,110,111,104,26,109,111,107,107,106,26,26,104,22,104,26,108,109,110,111,113,22,107,81,81,104,104,26,26,108,108,109,110,111,104,115,115,115,106,113,22,107,81,81,81,104,26,26,108,109,110,111,113,113,26,108,104,26,26,224,226,224,226,115,26,104,26,109,111,115,106,113,22,107,81,104,26,108,109,110,111,26,88,94,106,106,113,26,108,94,115,106,106,26,108,115,115,26,225,22,26,108,225,22,225,22,26,26,104,109,110,104,0,26,49,104,104,0,49,104,26,109,110,49,113,104,26,109,111,49,104,81,104,104,104,26,49,104,0,106,22,107,104,26,108,109,110,111,108,81,104,26,108,49,49,104,115,106,113,22,107,81,104,26,108,109,110,111,115,106,113,22,107,81,104,26,108,109,110,111,115,106,113,22,107,81,104,26,108,109,110,111,115,106,113,22,107,81,104,26,108,109,110,111,0,227,227,227,0,0,0,156,0,155,152,153,154,0,0,0,154,154,154,153,153,153,0,0,152,153,154,152,153,154,156,0,0,123,124,148,124,129,124,124,124,124,124,123,124,135,129,148,152,153,154,155,156,123,124,135,129,148,152,153,154,155,156,124,124,124,124,124,135,129,124,123,135,129,123,135,129,0,124,123,123,135,129,148,124,124,124,123,129,123,129,148,0,0,124,123,123,124,135,129,148,148,152,152,153,153,154,154,155,155,156,156,123,124,135,135,135,129,129,129,148,152,153,154,155,156,124,124,124,124,124,124,135,123,148,129,124,124,124,123,124,135,129,148,152,153,154,155,156,228,129,124,148,124,135,124,124,124,124,124,124,124,124,129,124,124,124,124,124,124,124,124,124,124,152,153,154,155,156,124,124,124,124,124,123,129,124,0,124,124,124,124,123,135,129,123,148,152,153,154,155,156,123,124,123,123,123,124,135,129,148,152,153,154,155,156,123,124,135,129,148,152,153,154,155,156,0,124,123,124,135,129,148,152,153,154,155,156,124,124,123,123,124,135,129,148,152,153,154,155,156,0,229,229,230,230,231,232,231,232,233,233,185,185,0,186,0,0,0,0,0,185,0,186,0,185,186,184,181,182,183,185,186,184,181,182,183,181,182,183,181,182,183,201,181,182,183,0,181,182,183,184,184,185,185,186,184,181,182,183,185,186,184,181,182,183,185,186,184,181,182,183,184,183,185,184,184,181,182,183,185,185,186,184,181,182,183,185,186,184,181,182,183,185,186,184,181,182,183,185,186,184,181,182,183,234,234,235,236,236,235,236,0,165,165,187,0,165,165,142,165,165,142,165,165,0,165,165,165,165,165,187,165,165,165,165,165,165,142,142,165,142,187,165,165,187,165,142,187,165,142,187,187,187,187,165,165,142,142,187,165,165,165,165,165,165,142,187,165,142,187,165,142,187,187,165,142,187,165,142,187,165,142,187,165,142,187,165,142,237,238,237,238,239,239,240,241,0,0,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,195,190,195,151,190,195,151,0,151,151,151,192,151,151,151,151,151,151,151,195,190,192,151,0,0,0,0,0,0,0,0,192,0,0,151,45,150,150,45,150,190,151,192,194,125,45,150,195,190,151,192,194,125,45,150,195,45,190,192,194,125,45,150,195,190,192,194,125,45,150,195,190,125,125,45,150,195,194,242,194,194,194,190,192,125,195,45,190,151,151,192,194,125,45,150,195,190,190,190,151,151,192,194,125,45,150,195,190,242,194,194,194,45,190,151,192,194,125,45,150,195,194,45,190,125,151,45,150,150,243,194,194,194,126,194,150,45,150,190,192,194,125,45,150,195,151,150,150,190,151,192,194,125,45,150,195,190,151,192,194,125,45,150,195,190,151,192,194,125,45,150,195,190,151,192,194,125,45,150,195,244,0,0,0,206,0,205,205,0,0,202,202,204,202,205,206,0,0,0,203,206,141,141,141,141,141,141,141,141,141,141,143,140,141,203,202,204,206,205,143,140,141,203,202,204,206,205,141,143,140,141,206,205,143,140,141,206,205,206,205,141,141,143,140,206,205,141,141,141,141,141,206,205,141,141,141,143,140,141,203,203,202,202,204,204,206,205,143,140,141,203,202,204,206,205,206,205,141,143,140,141,203,202,204,206,205,141,141,141,141,141,206,205,141,203,202,204,141,141,206,143,140,141,206,205,203,202,204,143,140,141,203,202,204,206,205,143,140,141,203,202,204,206,205,143,140,141,203,202,204,206,205,141,141,143,140,141,203,202,204,206,205,245,245],"f":[0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[1,1],[3,3],[4,4],[5,5],[[]],[[]],[[]],[[]],[[1,1],6],0,0,0,0,[[],[[7,[1]]]],[[],[[7,[3]]]],[[1,1],8],[[3,3],8],[[4,4],8],[[5,5],8],[[1,9],10],[[3,9],10],[[4,9],10],[[5,9],10],0,[[]],[[]],[[]],[[]],[1],[3],[[]],[[]],[[]],[[]],0,0,0,[5,11],0,[[1,1],[[12,[6]]]],0,0,[5,[[12,[13]]]],[1,7],[3,7],0,0,[[]],[[]],[[]],[[]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[5,14],0,[[],15],[[],15],[[],15],[[],15],0,[[],16],[[]],[[]],[[]],[[]],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,0,0,0,[[17,18],[[7,[[20,[19]],21]]]],[[],22],[[],22],[23,24],[23,[[25,[23]]]],[[[17,[26]],27],[[7,[[17,[28]],29]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[23,[[31,[23,30]]]],[23,[[33,[32]]]],[23,[[33,[32]]]],0,[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],[24,[[7,[34]]]],[24,[[7,[34]]]],[24,[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],0,[17,17],[35,35],[36,36],[23,23],[[]],[[]],[[]],[[]],[[17,17],6],[[35,35],6],[[36,36],6],[[23,23],6],[23,8],[[[17,[26]],27],[[7,[[17,[28]],29]]]],[[[17,[28]],37],[[7,[[17,[38]],29]]]],[[[17,[26]],37,27],[[7,[[17,[38]],29]]]],[17,39],[[[17,[26]]],40],[[],[[7,[17]]]],[[],[[7,[23]]]],[[[17,[26]]],41],[23,42],[[17,17],8],[[35,35],8],[[36,36],8],[[23,23],8],0,[17,[[7,[42,21]]]],0,[[23,43],[[7,[44]]]],[[45,46,37],[[7,[[12,[47]],48]]]],[[[17,[26]],45,46,37],[[7,[[12,[47]],48]]]],[[[23,[26,49]],45,46,37],[[7,[[12,[47]],48]]]],[[[17,[26]],37,50,[51,[27]]],[[7,[12,29]]]],[[17,9],[[7,[52]]]],[[17,9],[[7,[52]]]],[[35,9],[[7,[52]]]],[[36,9],[[7,[52]]]],[[23,9],[[7,[52]]]],[[23,9],[[7,[52]]]],[17,8],[23,8],[[]],[53,17],[54,17],[55,17],[56,17],[57,17],[58,17],[[]],[[]],[[]],[24,[[7,[23,21]]]],[[24,59,60],23],[16,[[7,[17,21]]]],[16,[[7,[23,21]]]],[[16,43],[[7,[23,21]]]],[16,[[7,[23,21]]]],[61,[[7,[17,21]]]],[61,[[7,[23,21]]]],[[23,62],[[12,[23]]]],[[23,62],12],[17,[[7,[21]]]],[17,[[7,[21]]]],[23,8],[23,8],[[[17,[26]]],8],[17],[35],[36],[23],[[]],[[]],[[]],[[]],[23,24],[[[17,[26]]],[[7,[[31,[[17,[26]],30]],21]]]],[[37,18],[[7,[48]]]],[[63,37,18],[[7,[48]]]],[[[17,[26]]],8],[[[17,[26]]],8],[23,8],[23,64],[23,65],[17,[[7,[66,21]]]],[23,[[7,[66,21]]]],[23,[[7,[67]]]],[23,[[12,[62]]]],[23,[[12,[62]]]],[23,[[12,[62]]]],[23,[[7,[62,21]]]],[17,[[7,[62,21]]]],[23,[[7,[62,21]]]],[17,[[7,[62,21]]]],[[],16],[[],16],[[],16],[[[23,[68]]],[[7,[17,21]]]],[[],17],[[],[[7,[17,21]]]],[[[23,[35]]],[[7,[17,21]]]],[[62,[31,[30]]],[[7,[17,21]]]],[53,17],[54,17],[[],[[7,[17,21]]]],[[[23,[36]]],[[7,[17,21]]]],[[62,[31,[30]]],[[7,[17,21]]]],[[[12,[69]]],[[7,[17,21]]]],[[],[[7,[17,21]]]],[[[23,[36]]],[[7,[17,21]]]],[[62,[31,[30]]],[[7,[17,21]]]],0,[23,[[7,[21]]]],[50,[[7,[23,21]]]],[[37,16],[[7,[21]]]],[50,[[7,[23,21]]]],[[50,43],[[7,[23,21]]]],[[17,17],[[12,[6]]]],[[35,35],[[12,[6]]]],[[36,36],[[12,[6]]]],[[23,23],[[12,[6]]]],[[],62],[[],62],[[],62],[[[17,[28]]],[[7,[70,[17,[28]]]]]],[[[17,[28]]],[[7,[70,[17,[28]]]]]],0,[23,8],[17,[[7,[21]]]],[23,[[7,[44]]]],[[17,71],[[7,[21]]]],[23,[[7,[[31,[[31,[2,30]],30]],21]]]],[23,[[7,[[31,[[31,[2,30]],30]],21]]]],[17,[[7,[42,21]]]],[17,42],[23,62],[17,7],[23,7],[[],72],[[],72],[[],72],[[23,73],23],0,[[]],[[]],[[]],[[]],[[],74],[[],74],[[[17,[26]],73],74],[23,[[7,[21]]]],[23,[[7,[21]]]],[17,[[7,[75]]]],[23,[[7,[75]]]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],0,[[],15],[[],15],[[],15],[[],15],[17,42],[[]],[[]],[[]],[[]],[23,8],[16,[[7,[74,48]]]],[16,[[7,[48]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[48,9],10],[[48,9],10],[21,48],[76,48],[[]],[77,48],[78,48],[79,48],[80,48],[81,48],[[]],[82],[[],74],[[],7],[[],7],[[],15],[[]],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,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[83,83],[84,84],[85,85],[47,47],[86,86],[46,46],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[],86],[[83,83],8],[[84,84],8],[[85,85],8],[[47,47],8],[[86,86],8],[[76,76],8],[[83,9],10],[[84,9],10],[[85,9],10],[[47,9],10],[[86,9],10],[[76,9],10],[[76,9],10],[[46,9],10],[[]],[[]],[[]],[8,85],[84,47],[[]],[[]],[[]],[[]],[[47,73],[[7,[86,76]]]],[83],[86],[84,74],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[84,8],[85,8],[86,8],0,[[86,86],[[12,[6]]]],[82],[47,8],0,[83,7],[84,7],[85,7],[47,7],[86,7],0,[[]],[[]],[[]],[[]],[[]],[[]],[[],74],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],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,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[18,[[7,[87,48]]]],[[[89,[[88,[35]]]],18],[[7,[87,48]]]],[[[90,[[88,[36]]]],18],[[7,[87,48]]]],[[[91,[[88,[36]]]],18],[[7,[87,48]]]],[[[93,[[88,[92]]]],18],[[7,[87,48]]]],[[[95,[[94,[35]]]],18],[[7,[87,48]]]],[[[96,[[94,[35]]]],18],[[7,[87,48]]]],[[[97,[[94,[36]]]],18],[[7,[87,48]]]],[[[98,[[94,[36]]]],18],[[7,[87,48]]]],[[[99,[[94,[36]]]],18],[[7,[87,48]]]],[[[100,[[94,[36]]]],18],[[7,[87,48]]]],[[[101,[[94,[92]]]],18],[[7,[87,48]]]],[[[102,[[94,[92]]]],18],[[7,[87,48]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[87,37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],103],[[],22],[[26,27],[[7,[28,29]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[104,[[33,[32]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[[],[[7,[34]]]],[24,[[7,[34]]]],[[],[[7,[34]]]],[[[106,[105,49]]],[[106,[105,49]]]],[22,22],[107,107],[104,104],[26,26],[108,108],[109,109],[110,110],[111,111],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[104,104],6],[[26,26],6],[[109,109],6],[[111,111],6],0,[[],107],[[[106,[49]]]],[[26,27],[[7,[28,29]]]],[[],[[7,[26]]]],[104,42],[[22,22],8],[[104,104],8],[[26,26],8],[[108,108],8],[[109,109],8],[[110,110],8],[[111,111],8],[[[113,[[0,[112,49]]]],9],10],[[22,9],10],[[107,9],10],[[81,9],10],[[81,9],10],[[104,9],[[7,[52]]]],[[104,9],[[7,[52]]]],[[26,9],[[7,[52]]]],[[26,9],[[7,[52]]]],[[108,9],[[7,[52]]]],[[108,9],[[7,[52]]]],[[109,9],[[7,[52]]]],[[110,9],[[7,[52]]]],[[111,9],[[7,[52]]]],[104,8],[[]],[114,[[115,[49]]]],[116,[[115,[49]]]],[[]],[[]],[[]],[[]],[80,81],[[]],[21,81],[[]],[28,26],[[]],[[]],[[]],[[]],[[]],[[26,103],[[113,[49]]]],[[108,103],[[113,[49]]]],[16,[[7,[26]]]],[16,[[7,[108]]]],[61,[[7,[104,21]]]],[26,[[12,[117]]]],[26,[[31,[117,30]]]],[[],[[7,[106]]]],[[],[[7,[106]]]],[[],[[7,[106]]]],[[],[[7,[106]]]],[[[115,[49]]],8],[26,8],[104],[26],[109],[111],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[26,118],[[],[[7,[113,81]]]],[[[12,[119]],117],[[7,[113,81]]]],[106,[[7,[113,81]]]],[[106,[12,[119]],117],[[7,[113,81]]]],[[[113,[49]]],[[7,[[113,[49]],81]]]],[26,[[7,[[113,[49]],81]]]],[108,[[7,[[113,[49]],81]]]],[[],[[7,[115,81]]]],[[[115,[49]]],[[7,[[115,[49]],81]]]],[106,[[7,[115,81]]]],[[[106,[49]]]],[26,[[31,[26,30]]]],[108,[[31,[108,30]]]],[[[115,[49]],18],[[12,[116]]]],[[[115,[49]],18,37],114],[26,8],[[],8],[22,8],[26,8],[108,8],[[],8],[22,8],[[],8],[22,8],[26,8],[26,8],0,0,0,[104,[[7,[66,21]]]],[[],103],[26,120],[23,[[12,[62]]]],[104,62],[104,62],[[103,103],103],[[],16],[[62,[31,[30]]],[[7,[104,21]]]],[26,62],0,0,[23,[[7,[21]]]],[[[113,[49]],103],[[113,[49]]]],[[104,104],[[12,[6]]]],[[26,26],[[12,[6]]]],[[109,109],[[12,[6]]]],[[111,111],[[12,[6]]]],[[],62],0,[82],[104,[[7,[21]]]],[104,[[7,[[31,[[31,[2,30]],30]],21]]]],[104,62],[26,7],[[],72],[104,24],[[],103],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[108,37],[[7,[26,121]]]],[[],74],[[],74],[[],74],[[],74],[23,[[7,[21]]]],[23,[[7,[21]]]],[104,[[7,[104,75]]]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],[[12,[41]]]],[[],[[12,[122]]]],[62,[[12,[14]]]],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,0,0,0,0,[[123,123],123],[[124,1,125,[127,[126]]]],0,[124,[[73,[1,[0,[128,105]]]]]],[[129,129]],[[124,130,27],[[7,[131]]]],[[124,130,27,132],[[7,[133]]]],[[124,134]],[[124,[136,[135]]],[[7,[131]]]],[124,137],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[124,138],[[7,[[141,[139,140]],142]]]],[124,[[141,[139,143]]]],[[124,144],[[7,[41,145]]]],[[124,144],[[7,[122,145]]]],[[124,144]],0,0,[124,146],[123,123],[135,135],[129,129],[[]],[[]],[[]],0,[124,[[147,[8]]]],0,[[],123],[[],135],[[],129],[148],[[124,1],[[12,[27]]]],[[124,50],12],[[124,1],74],[[],[[7,[123]]]],[[],[[7,[129]]]],[[123,123],8],[[129,129],8],[[148,148],8],0,0,[[124,149,150],[[7,[8,151]]]],[[123,9],[[7,[52]]]],[[123,9],[[7,[52]]]],[[124,9],10],[[135,9],10],[[129,9],10],[[148,9],10],[[148,9],10],[[152,9],10],[[152,9],10],[[153,9],10],[[153,9],10],[[154,9],10],[[154,9],10],[[155,9],10],[[155,9],10],[[156,9],10],[[156,9],10],[[]],[[]],[157,135],[[]],[[[158,[1]]],135],[[[161,[159,[160,[1]]]]],129],[[]],[162,129],[[]],[[]],[[]],[[]],[[]],[[]],[124,123],[[124,1],63],[[124,3,[12,[163]],8],[[7,[164,165]]]],[[124,1],[[127,[45]]]],[[124,138],[[12,[[166,[[127,[144]],159]]]]]],[[124,11],[[12,[3]]]],0,0,0,0,[[124,132],[[7,[8,167]]]],[[124,144,168],[[7,[8,155]]]],[[124,11,14]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[50,8],[129,8],[[124,50],8],0,[124,128],0,[124,169],[124,128],[124,128],[[124,1],170],[[[0,[[171,[129]],172,173]]],[[7,[124,153]]]],[124,174],[[124,1,27],8],[124,18],0,[[175,[12,[175]],[0,[[171,[129]],172,173]],18],[[7,[124,152]]]],[[175,[12,[175]],18],[[7,[124,48]]]],[[175,[12,[175]],18,176],[[7,[124,48]]]],[[175,[12,[175]],[0,[[171,[129]],172,173]],18],[[7,[124,154]]]],[[175,[12,[175]],[0,[[171,[129]],172,173]],18,176],[[7,[124,154]]]],[[175,[12,[175]],[0,[[171,[129]],172,173]],18,176],[[7,[124,152]]]],[[124,1],27],[[124,1],[[147,[148]]]],[[124,1,27],148],[[124,1],[[7,[[12,[47]],48]]]],[82],[82],[82],[82],[82],[[124,1],[[12,[63]]]],[[124,1,27],[[147,[128]]]],[[124,1],[[147,[148]]]],[124,37],[[124,144]],[123,7],[129,7],[[124,149,150],[[7,[8,151]]]],0,[124,177],[124,129],[124,[[178,[1]]]],[124,179],[[]],[[]],[[]],[[],74],[[],74],[[],74],[[],74],[[],74],[[],74],[[],74],[123,180],[124,128],0,[123,180],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],0,[124,137],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[124,1],[[0,[128,105]]]],[[124,1,27],8],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[12,18,37],[[7,[74,48]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[181,181],[182,182],[183,183],[[]],[[]],[[]],[[[31,[4]],[31,[4]],122,41,50],[[7,[184,185]]]],[[181,[31,[4]],[31,[4]],122,41,50],[[7,[184,185]]]],[[182,[31,[4]],[31,[4]],122,41,50],[[7,[184,185]]]],[[183,[31,[4]],[31,[4]],122,41,50],[[7,[184,185]]]],[[41,122,50],186],[[],181],[[],182],[[],183],0,0,[[185,9],10],[[185,9],10],[[186,9],10],[[184,9],10],[[181,9],10],[[182,9],10],[[183,9],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[184,41],[41,183],[82],0,[184,41],[[]],[[]],[[]],[[],74],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[187,187],[[]],[[187,9],10],[[187,9],10],[[165,9],10],[[165,9],10],[[142,9],10],[[142,9],10],[[]],[185,165],[[]],[188,165],[48,165],[76,165],[187,165],[[]],[[]],[[]],[[]],[82],[82],[82],[[]],[[],74],[[],74],[[],74],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[189,[[12,[74]]]],[189,74],[[],[[7,[189]]]],[[124,16,8],[[7,[189,16]]]],[[189,9],10],[[189,9],10],[[]],[16,[[7,[189]]]],[[]],0,[189,7],[[],74],[[],7],[[],7],[[],15],[[]],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,0,0,0,0,0,0,0,0,0,0,[[45,190,125,[127,[126]]],[[12,[[127,[126]]]]]],0,0,[[45,37],191],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[191,17,37],45],[190,190],[192,192],[[[194,[[0,[105,193,112,105]]]]],[[194,[[0,[105,193,112,105]]]]]],[125,125],[45,45],[150,150],[195,195],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[190,190],6],[[125,125],6],[[],125],[[],45],[[],150],[[],195],[[[194,[[0,[193,112,105]]]]]],[[],[[12,[108]]]],[[[194,[[196,[116]]]]],[[12,[108]]]],[[[194,[197]]],[[12,[108]]]],[[[194,[[198,[116]]]]],[[12,[108]]]],[[190,190],8],[[192,192],8],[[125,125],8],[[195,195],8],[[45,190],[[12,[127]]]],[[190,9],10],[[151,9],10],[[151,9],10],[[192,9],10],[[[194,[[0,[112,193,112,105]]]],9],10],[[125,9],10],[[45,9],10],[[150,9],10],[[195,9],10],[199,190],[120,190],[[]],[[]],[200,151],[[]],[[]],[[]],[[]],[[]],[[]],[190],[37,190],[[[194,[197]],37],190],[[[194,[[198,[116]]]],37],190],[[[194,[[196,[116]]]],37],190],[45,[[31,[190]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[0,[193,112,105]],192],[[194,[[0,[193,112,105]]]]]],[[],45],[[190,190],[[12,[6]]]],[[125,125],[[12,[6]]]],[82],[[45,190,125],[[12,[[127,[126]]]]]],0,0,[[149,62,150,37],[[7,[151]]]],[[[194,[[198,[116]]]],149,62,150,37],[[7,[151]]]],[[[194,[197]],149,62,150,37],[[7,[151]]]],[[[194,[[196,[116]]]],149,62,150,37],[[7,[151]]]],[[149,150,37],[[7,[151]]]],[[149,150,37],[[7,[151]]]],0,[45,[[31,[127]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],74],0,0,[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[141,[201,143]]],[[141,[201,143]]]],[[141,11,164,62],[[7,[141,202]]]],[[141,11,164,62,13],[[7,[141,202]]]],[141,141],[[[141,[201,143]],42,180],[[141,[201,143]]]],[[141,11],141],[[141,11],[[7,[141,203]]]],[141,[[7,[141,203]]]],[[141,8],141],[[[141,[139,140]],42],[[7,[[141,[139,140]],204]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[141,205],141],[143,143],[140,140],[[[141,[105]]],[[141,[105]]]],[206,206],[205,205],[[]],[[]],[[]],[[]],[[]],[[206,206],6],[[205,205],6],[[141,201],[[141,[201]]]],[[141,27],141],[[],143],[[],140],[[],206],[[],205],[141,141],[[[141,[201,143]],42],[[141,[201,143]]]],[141,141],[141,141],[[141,13],141],[[206,206],8],[[205,205],8],[[141,41],141],[[141,122],141],[[[141,[201]]],[[7,[149,165]]]],[[143,9],10],[[140,9],10],[[[141,[112,112]],9],10],[[203,9],10],[[203,9],10],[[202,9],10],[[202,9],10],[[204,9],10],[[204,9],10],[[206,9],10],[[205,9],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[206],[205],[141,141],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[141,141],[[141,207],141],[141,141],[141,141],[[141,206],141],[[206,206],[[12,[6]]]],[[205,205],[[12,[6]]]],[[141,[73,[74,[31,[62]]]],1],141],[82],[82],[82],[[[141,[201,143]],31],[[141,[201,143]]]],[[141,163],141],[[206,144]],[[]],[[]],[[]],[[]],[[]],[[],74],[[],74],[[],74],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[141,[31,[11]]],141],[[141,208],141],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0],"p":[[4,"KeychainKind"],[15,"u8"],[3,"LocalOutput"],[3,"WeightedUtxo"],[4,"Utxo"],[4,"Ordering"],[4,"Result"],[15,"bool"],[3,"Formatter"],[6,"Result"],[3,"OutPoint"],[4,"Option"],[3,"Sequence"],[3,"TxOut"],[3,"TypeId"],[15,"str"],[4,"Descriptor"],[4,"Network"],[4,"NetworkChecked"],[3,"Address"],[4,"Error"],[4,"ScriptContextEnum"],[3,"Miniscript"],[4,"Terminal"],[4,"Tree"],[4,"DescriptorPublicKey"],[15,"u32"],[3,"DefiniteDescriptorKey"],[4,"ConversionError"],[3,"Global"],[3,"Vec"],[4,"Placeholder"],[3,"Satisfaction"],[4,"ScriptContextError"],[4,"Legacy"],[4,"Segwitv0"],[3,"Secp256k1"],[3,"PublicKey"],[4,"DescriptorType"],[3,"DescriptorId"],[15,"u64"],[3,"ScriptBuf"],[3,"ExtParams"],[4,"AnalysisError"],[3,"SignersContainer"],[4,"BuildSatisfaction"],[3,"Policy"],[4,"Error"],[8,"ScriptContext"],[3,"Script"],[3,"Range"],[3,"Error"],[3,"Wpkh"],[3,"Wsh"],[3,"Tr"],[3,"Bare"],[3,"Sh"],[3,"Pkh"],[3,"Type"],[3,"ExtData"],[3,"Tree"],[15,"usize"],[6,"ExtendedDescriptor"],[3,"Iter"],[3,"PkIter"],[4,"Policy"],[4,"LiftError"],[4,"BareCtx"],[4,"TapTree"],[3,"Plan"],[3,"TxIn"],[4,"SigType"],[3,"BTreeMap"],[3,"String"],[4,"TranslateErr"],[4,"PolicyError"],[4,"HexToBytesError"],[4,"Error"],[4,"Error"],[4,"Error"],[4,"KeyError"],[3,"Demand"],[4,"PkOrF"],[4,"SatisfiableItem"],[4,"Satisfaction"],[3,"Condition"],[6,"DescriptorTemplateOut"],[8,"IntoDescriptorKey"],[3,"P2Pkh"],[3,"P2Wpkh_P2Sh"],[3,"P2Wpkh"],[4,"Tap"],[3,"P2TR"],[8,"DerivableKey"],[3,"Bip44"],[3,"Bip44Public"],[3,"Bip49"],[3,"Bip49Public"],[3,"Bip84"],[3,"Bip84Public"],[3,"Bip86"],[3,"Bip86Public"],[6,"ValidNetworks"],[3,"SortedMultiVec"],[8,"Clone"],[3,"GeneratedKey"],[3,"PrivateKeyGenerateOptions"],[4,"DescriptorSecretKey"],[3,"SinglePub"],[3,"SinglePriv"],[4,"SinglePubKey"],[8,"Debug"],[4,"DescriptorKey"],[3,"Xpub"],[4,"ExtendedKey"],[3,"Xpriv"],[3,"DerivationPath"],[3,"Assets"],[6,"KeySource"],[3,"Fingerprint"],[3,"DescriptorKeyParseError"],[3,"FeeRate"],[3,"Balance"],[3,"Wallet"],[3,"SignerOrdering"],[8,"TransactionSigner"],[3,"Arc"],[8,"Iterator"],[3,"ChangeSet"],[3,"Block"],[3,"CannotConnectError"],[3,"BlockId"],[4,"ApplyHeaderError"],[8,"IntoIterator"],[3,"Update"],[8,"Into"],[3,"TxGraph"],[3,"Txid"],[6,"DefaultCoinSelectionAlgorithm"],[3,"BumpFee"],[3,"TxBuilder"],[4,"BuildFeeBumpError"],[3,"CreateTx"],[3,"Transaction"],[4,"CalculateFeeError"],[3,"CheckPointIter"],[6,"Result"],[3,"AddressInfo"],[3,"Psbt"],[3,"SignOptions"],[4,"SignerError"],[4,"NewError"],[4,"LoadError"],[4,"NewOrLoadError"],[4,"InsertTxError"],[4,"ApplyBlockError"],[3,"SyncResult"],[3,"FullScanResult"],[3,"ConfirmationTimeHeightAnchor"],[3,"ChangeSet"],[3,"ChangeSet"],[6,"ChangeSet"],[3,"PsbtSighashType"],[3,"Input"],[4,"CreateTxError"],[3,"CanonicalTx"],[3,"AlterCheckPointError"],[4,"ConfirmationTime"],[3,"CheckPoint"],[8,"DoubleEndedIterator"],[8,"PersistBackend"],[8,"Send"],[8,"Sync"],[3,"LocalChain"],[8,"IntoWalletDescriptor"],[3,"BlockHash"],[3,"KeychainTxOutIndex"],[3,"FullScanRequest"],[3,"SyncRequest"],[3,"Amount"],[3,"LargestFirstCoinSelection"],[3,"OldestFirstCoinSelection"],[3,"BranchAndBoundCoinSelection"],[3,"CoinSelectionResult"],[4,"Error"],[4,"Excess"],[4,"MiniscriptPsbtError"],[4,"Error"],[3,"FullyNodedExport"],[4,"SignerId"],[6,"KeyMap"],[4,"SignerContext"],[8,"Sized"],[3,"SignerWrapper"],[4,"TapLeavesOptions"],[3,"DescriptorMultiXKey"],[3,"PrivateKey"],[3,"DescriptorXKey"],[3,"Hash"],[4,"Error"],[8,"CoinSelectionAlgorithm"],[4,"AddForeignUtxoError"],[4,"AddUtxoError"],[4,"AllowShrinkingError"],[4,"ChangeSpendPolicy"],[4,"TxOrdering"],[4,"LockTime"],[15,"i32"],[13,"Foreign"],[8,"ExtractPolicy"],[13,"PsbtTimelocks"],[13,"Complete"],[13,"Partial"],[13,"PartialComplete"],[13,"Sha256Preimage"],[13,"Hash256Preimage"],[13,"Ripemd160Preimage"],[13,"Hash160Preimage"],[13,"Thresh"],[13,"Multisig"],[13,"AbsoluteTimelock"],[13,"RelativeTimelock"],[8,"DescriptorTemplate"],[8,"GeneratableKey"],[8,"ExtScriptContext"],[8,"GeneratableDefaultOptions"],[8,"PsbtUtils"],[8,"IsDust"],[13,"UnexpectedConnectedToHash"],[13,"ConfirmationHeightCannotBeGreaterThanTip"],[13,"LoadedGenesisDoesNotMatch"],[13,"LoadedNetworkDoesNotMatch"],[13,"LoadedDescriptorDoesNotMatch"],[13,"InsufficientFunds"],[13,"Change"],[13,"NoChange"],[13,"InsufficientFunds"],[13,"RbfSequenceCsv"],[13,"LockTime"],[13,"FeeTooLow"],[13,"FeeRateTooLow"],[8,"SignerCommon"],[8,"InputSigner"],[13,"Tap"],[13,"InvalidTxid"]]},\ "bdk_bitcoind_rpc":{"doc":"This crate is used for emitting blockchain data from the …","t":[8,3,3,2,12,11,11,11,11,11,11,12,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11],"n":["BitcoindRpcErrorExt","BlockEvent","Emitter","bitcoincore_rpc","block","block_hash","block_height","borrow","borrow","borrow_mut","borrow_mut","checkpoint","connected_to","fmt","from","from","into","into","is_not_found_error","mempool","new","next_block","next_header","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip"],"q":["bdk_bitcoind_rpc","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Extends bitcoincore_rpc::Error.","A newly emitted block from Emitter.","The Emitter is used to emit data sourced from …","","Either a full Block or Header of the new block.","The block hash of this new block.","The block height of this new block.","","","","","The checkpoint of the new block.","The BlockId of a previous block that this block connects …","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Returns whether the error is a “not found” error.","Emit mempool transactions, alongside their first-seen unix …","Construct a new Emitter.","Emit the next block height and block (if any).","Emit the next block height and header (if any).","","","","","","","",""],"i":[0,0,0,0,1,1,1,10,1,10,1,1,1,1,10,1,10,1,19,10,10,10,10,10,1,10,1,10,1,10,1],"f":[0,0,0,0,0,[1,2],[1,3],[[]],[[]],[[]],[[]],0,[1,4],[[[1,[5]],6],7],[[]],[[]],[[]],[[]],[[],8],[[[10,[9]]],[[13,[11,12]]]],[[14,3],[[10,[9]]]],[[[10,[9]]],[[13,[[16,[[1,[15]]]],12]]]],[[[10,[9]]],[[13,[[16,[[1,[17]]]],12]]]],[[],13],[[],13],[[],13],[[],13],[[],18],[[],18],[[]],[[]]],"p":[[3,"BlockEvent"],[3,"BlockHash"],[15,"u32"],[3,"BlockId"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[15,"bool"],[8,"RpcApi"],[3,"Emitter"],[3,"Vec"],[4,"Error"],[4,"Result"],[3,"CheckPoint"],[3,"Block"],[4,"Option"],[3,"Header"],[3,"TypeId"],[8,"BitcoindRpcErrorExt"]]},\ -"bdk_chain":{"doc":"This crate is a collection of core structures for Bitcoin …","t":[8,8,8,17,3,17,8,4,3,4,3,13,13,8,16,3,2,3,3,2,13,13,11,10,11,11,11,12,12,10,11,2,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,12,12,11,11,11,11,11,12,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,10,11,11,11,10,11,11,11,11,11,12,12,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,10,11,12,11,11,11,0,0,11,2,11,11,11,11,11,12,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,11,11,11,11,11,11,0,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,3,16,3,8,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,12,12,10,10,12,10,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,3,3,3,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,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,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,3,4,13,3,6,3,3,13,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,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,12,11,11,11,11,11,11,11,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,4,3,3,13,13,3,3,3,3,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,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,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,12,12,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["Anchor","AnchorFromBlockPosition","Append","BIP32_MAX_INDEX","BlockId","COINBASE_MATURITY","ChainOracle","ChainPosition","ConfirmationHeightAnchor","ConfirmationTime","ConfirmationTimeHeightAnchor","Confirmed","Confirmed","DescriptorExt","Error","FullTxOut","IndexedTxGraph","SpkIterator","SpkTxOutIndex","TxGraph","Unconfirmed","Unconfirmed","all_spks","anchor_block","anchor_block","anchor_block","anchor_block","anchor_block","anchor_block","append","apply_changeset","bitcoin","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain_position","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cmp","cmp","cmp","cmp","cmp","cmp","confirmation_height","confirmation_height","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_time","default","default","default","default","descriptor","deserialize","deserialize","deserialize","deserialize","dust_value","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from_block_position","from_block_position","from_block_position","from_block_position","get_chain_tip","hash","hash","hash","hash","hash","hash","height","index_of_spk","index_tx","index_txout","indexed_tx_graph","initial_changeset","insert_spk","into","into","into","into","into","into","into","into","into_iter","is_block_in_chain","is_confirmed","is_confirmed","is_confirmed_and_spendable","is_empty","is_mature","is_on_coinbase","is_relevant","is_tx_relevant","is_used","keychain","local_chain","mark_used","miniscript","net_value","new","new_with_range","next","nth","outpoint","outpoints","outputs_in_range","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","scan","scan_txout","sent_and_received","serialize","serialize","serialize","serialize","spent_by","spk_at_index","spk_client","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","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","tx_graph","txout","txout","txouts","txouts_in_tx","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unconfirmed","unmark_used","unused_spks","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","height","last_seen","time","ChangeSet","ChangeSet","IndexedTxGraph","Indexer","append","apply_block","apply_block_relevant","apply_changeset","apply_changeset","apply_update","batch_insert_relevant","batch_insert_relevant_unconfirmed","batch_insert_unconfirmed","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","default","default","deserialize","eq","fmt","fmt","from","from","from","from","graph","graph","index","index_tx","index_txout","indexer","initial_changeset","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","is_empty","is_tx_relevant","new","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Balance","ChangeSet","KeychainTxOutIndex","add","add_keychain","all_unbounded_spk_iters","append","apply_changeset","apply_changeset","as_inner","as_ref","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","confirmed","default","default","default","deserialize","deserialize","eq","eq","fmt","fmt","fmt","fmt","from","from","from","immature","index_of_spk","index_tx","index_txout","initial_changeset","inner","into","into","into","is_empty","is_tx_relevant","is_used","keychain_outpoints","keychain_outpoints_in_range","keychains","last_revealed_index","last_revealed_indices","last_used_index","last_used_indices","lookahead","lookahead_to_target","mark_used","net_value","new","next_index","next_unused_spk","outpoints","reveal_next_spk","reveal_to_target","reveal_to_target_multi","revealed_keychain_spks","revealed_spks","sent_and_received","serialize","serialize","spk_at_index","to_owned","to_owned","to_owned","to_string","total","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_into","try_into","try_into","txout","txouts","txouts_in_tx","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","untrusted_pending","unused_keychain_spks","unused_spks","vzip","vzip","vzip","AlterCheckPointError","ApplyHeaderError","CannotConnect","CannotConnectError","ChangeSet","CheckPoint","CheckPointIter","InconsistentBlocks","LocalChain","MissingGenesisError","apply_changeset","apply_header","apply_header_connected_to","apply_update","block_id","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","disconnect_from","eq","eq","eq","eq","eq","eq","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_block_ids","from_blocks","from_changeset","from_genesis_hash","from_header","from_tip","genesis_hash","get","get","get_chain_tip","hash","height","height","initial_changeset","insert","insert_block","into","into","into","into","into","into","into","into_iter","into_iter","is_block_in_chain","iter","iter_checkpoints","new","next","original_hash","prev","provide","provide","provide","provide","push","range","range","tip","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_include_height","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","update_hash","vzip","vzip","vzip","vzip","vzip","vzip","vzip","FullScanRequest","FullScanResult","SyncRequest","SyncResult","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain_outpoints","chain_spks","chain_spks_for_keychain","chain_tip","chain_tip","chain_txids","chain_update","chain_update","from","from","from","from","from_chain_tip","from_chain_tip","from_keychain_txout_index","graph_update","graph_update","inspect_outpoints","inspect_spks","inspect_spks_for_all_keychains","inspect_spks_for_keychain","inspect_txids","into","into","into","into","last_active_indices","outpoints","populate_with_revealed_spks","set_outpoints","set_spks","set_spks_for_keychain","set_txids","spks","spks_by_keychain","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","txids","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","CalculateFeeError","CanonicalTx","ChangeSet","MissingTxOut","NegativeFee","TxAncestors","TxDescendants","TxGraph","TxNode","all_anchors","all_txouts","anchor_heights","anchors","anchors","append","apply_changeset","apply_update","as_ref","balance","batch_insert_unconfirmed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","calculate_fee","chain_position","checked_sum","checked_sum","checked_sum","checked_sum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","deref","deserialize","direct_conflicts","eq","eq","eq","eq","eq","filter_chain_txouts","filter_chain_unspents","floating_txouts","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","full_txs","get_chain_position","get_chain_spend","get_tx","get_tx_node","get_txout","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_empty","last_seen","last_seen_unconfirmed","list_chain_txs","map_anchors","map_anchors","new","next","next","outspends","partial_cmp","partial_cmp","provide","serialize","to_owned","to_owned","to_owned","to_owned","to_string","try_balance","try_filter_chain_txouts","try_filter_chain_unspents","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_get_chain_position","try_get_chain_spend","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_list_chain_txs","tx","tx_node","tx_outputs","tx_spends","txid","txouts","txouts","txs","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_last_seen_unconfirmed","vzip","vzip","vzip","vzip","vzip","vzip","vzip","walk_ancestors","walk_conflicts","walk_descendants"],"q":["bdk_chain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::ConfirmationTime","","","bdk_chain::indexed_tx_graph","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::keychain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::local_chain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::spk_client","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::tx_graph","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Trait that “anchors” blockchain data to a specific …","An Anchor that can be constructed from a given block, …","Trait that makes an object appendable.","Maximum BIP32 derivation index.","A reference to a block in the canonical chain.","How many confirmations are needed f or a coinbase output …","Represents a service that tracks the blockchain.","Represents the observed position of some chain data.","An Anchor implementation that also records the exact …","Block height and timestamp at which a transaction is …","An Anchor implementation that also records the exact …","The chain data is seen as confirmed, and in anchored by A.","The transaction is confirmed","A trait to extend the functionality of a miniscript …","Error type.","A TxOut with as much data as we can retrieve about it","","An iterator for derived script pubkeys.","An index storing TxOuts that have a script pubkey that …","","The chain data is not confirmed and last seen in the …","The transaction is unconfirmed","The script pubkeys that are being tracked by the index.","Returns the BlockId that the associated blockchain data is …","","","","The anchor block.","The anchor block.","Append another object of the same type onto self.","","","","","","","","","","","","","","","","","","","The position of the transaction in outpoint in the overall …","","","","","","","","","","","","","","","","","Maps a ChainPosition<&A> into a ChainPosition<A> by …","","","","","","","The exact confirmation height of the transaction.","The confirmation height of the transaction being anchored.","Get the upper bound of the chain data’s confirmation …","Get the upper bound of the chain data’s confirmation …","Determines the upper bound of the confirmation height.","","","The confirmation time of the transaction being anchored.","","","","","Get a reference to the internal descriptor.","","","","","Returns the minimum value (in satoshis) at which an output …","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Construct the anchor from a given block, block height and …","","","","Get the best chain’s chain tip.","","","","","","The hash of the block.","The height of the block.","Returns the index associated with the script pubkey.","","","Contains the IndexedTxGraph and associated types. Refer to …","","Adds a script pubkey to scan for. Returns false and does …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Determines whether block of BlockId exists as an ancestor …","Returns whether ChainPosition is confirmed or not.","Returns whether ConfirmationTime is the confirmed variant.","Whether the utxo is/was/will be spendable with chain tip.","Returns whether the structure is considered empty.","Whether the txout is considered mature.","Whether this output is on a coinbase transaction.","Whether any of the inputs of this transaction spend a …","","Returns whether the script pubkey at index has been used …","Module for keychain related structures.","The LocalChain is a local implementation of ChainOracle.","Marks the script pubkey at index as used even though it …","","Computes the net value transfer effect of tx on the script …","Create a new script pubkey iterator from descriptor.","Create a new script pubkey iterator from descriptor and a …","","","The location of the TxOut.","Get a reference to the set of indexed outpoints.","Iterates over all the outputs with script pubkeys in an …","","","","","","","Scans a transaction’s outputs for matching script …","Scan a single TxOut for a matching script pubkey and …","Computes the total value transfer effect tx has on the …","","","","","The txid and chain position of the transaction (if any) …","Returns the script that has been inserted at the index.","Helper types for spk-based blockchain clients.","","","","","","","","","","","","","","","","","","","","","","","","","Module for structures that store and traverse transactions.","Returns the txout and script pubkey index of the TxOut at …","The TxOut.","Iterate over all known txouts that spend to tracked script …","Finds all txouts on a transaction that has previously been …","","","","","","","","","Construct an unconfirmed variant using the given last_seen …","Undoes the effect of mark_used. Returns whether the index …","Iterates over all unused script pubkeys in an index range.","","","","","","","","","Confirmation height.","The last-seen timestamp in unix seconds.","Confirmation time in unix seconds.","Represents changes to an IndexedTxGraph.","The resultant “changeset” when new transaction data is …","The IndexedTxGraph combines a TxGraph and an Indexer …","Utilities for indexing transaction data.","","Batch insert all transactions of the given block of height.","Batch insert all transactions of the given block of height…","Apply changeset to itself.","Applies the ChangeSet to the IndexedTxGraph.","Apply an update directly.","Batch insert transactions, filtering out those that are …","Batch insert unconfirmed transactions, filtering out those …","Batch insert unconfirmed transactions.","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Get a reference of the internal transaction graph.","TxGraph changeset.","Transaction index.","Scans a transaction for relevant outpoints, which are …","Scan and index the given outpoint and txout.","Indexer changeset.","Determines the ChangeSet between self and an empty Indexer.","Determines the ChangeSet between self and an empty …","Insert an anchor for a given transaction.","Insert a unix timestamp of when a transaction is seen in …","Insert and index a transaction into the graph.","Insert a floating txout of given outpoint.","Calls U::from(self).","Calls U::from(self).","","Determines whether the transaction should be included in …","Construct a new IndexedTxGraph with a given index.","","","","","","","","","","","Balance, differentiated into various categories.","Represents updates to the derivation index of a …","KeychainTxOutIndex controls how script pubkeys are …","","Add a keychain to the tracker’s txout_index with a …","Get unbounded spk iterators for all keychains.","Append another ChangeSet into self.","Applies the derivation changeset to the KeychainTxOutIndex…","","Get the inner map of the keychain to its new derivation …","","","","","","","","","","","","","","Confirmed and immediately spendable balance","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","All coinbase outputs not yet matured","Returns the keychain and keychain index associated with …","","","","Return a reference to the internal SpkTxOutIndex.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns whether the changeset are empty.","","Returns whether the spk under the keychain’s index has …","Iterate over all OutPoints that have TxOuts with script …","Iterate over OutPoints that have script pubkeys derived …","Return a reference to the internal map of keychain to …","Get the last derivation index revealed for keychain.","Get the last derivation index that is revealed for each …","Returns the highest derivation index of the keychain where …","Returns the highest derivation index of each keychain that …","Get the lookahead setting.","Store lookahead scripts until target_index (inclusive).","Marks the script pubkey at index as used even though the …","Computes the net value that this transaction gives to the …","Construct a KeychainTxOutIndex with the given lookahead.","Get the next derivation index for keychain. The next index …","Gets the next unused script pubkey in the keychain. I.e., …","Get a reference to the set of indexed outpoints.","Attempts to reveal the next script pubkey for keychain.","Reveals script pubkeys of the keychain’s descriptor up …","Convenience method to call Self::reveal_to_target on …","Iterate over revealed spks of the given keychain.","Iterate over revealed spks of keychains in range","Computes the total value transfer effect tx has on the …","","","Return the script that exists under the given keychain’s …","","","","","Get the whole balance visible to the wallet.","Unconfirmed UTXOs generated by a wallet tx","Get sum of trusted_pending and confirmed coins.","","","","","","","Return the TxOut of outpoint if it has been indexed.","Iterate over known txouts that spend to tracked script …","Finds all txouts on a transaction that has previously been …","","","","Get an unbounded spk iterator over a given keychain.","Undoes the effect of mark_used. Returns whether the index …","Unconfirmed UTXOs received from an external wallet","Iterate over revealed, but unused, spks of the given …","Iterate over revealed, but unused, spks of all keychains.","","","","Represents a failure when trying to insert/remove a …","The error type for LocalChain::apply_header_connected_to.","Occurs when the update cannot connect with the original …","Occurs when an update does not have a common checkpoint …","The ChangeSet represents changes to LocalChain.","A LocalChain checkpoint is used to find the agreement …","Iterates over checkpoints backwards.","Occurs when connected_to block conflicts with either the …","This is a local implementation of ChainOracle.","An error which occurs when a LocalChain is constructed …","Apply the given changeset.","Update the chain with a given Header connecting it with …","Update the chain with a given Header at height which you …","Applies the given update to the chain.","Get the BlockId of the checkpoint.","","","","","","","","","","","","","","","","","","","","","","","","","","","Removes blocks from (and inclusive of) the given block_id.","","","","","","","Extends the checkpoint linked list by a iterator of block …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Construct a checkpoint from a list of BlockIds in …","Constructs a LocalChain from a BTreeMap of height to …","Construct a LocalChain from an initial changeset.","Construct LocalChain from genesis hash.","Construct a checkpoint from the given header and block …","Construct a LocalChain from a given checkpoint tip.","Get the genesis hash.","Get checkpoint at height.","Get checkpoint at given height (if it exists).","","Get the block hash of the checkpoint.","Get the height of the checkpoint.","The checkpoint’s height.","Derives an initial ChangeSet, meaning that it can be …","Inserts block_id at its height within the chain.","Insert a BlockId.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Iterate from this checkpoint in descending height.","Iterate over checkpoints in descending height order.","Construct a new base block at the front of a linked list.","","The original checkpoint’s block hash which cannot be …","Get the previous checkpoint in the chain","","","","","Puts another checkpoint onto the linked list representing …","Iterate checkpoints over a height range.","Iterate checkpoints over a height range.","Get the highest checkpoint.","","","","","","","","","","","","","","","","","","The suggested checkpoint to include to connect the two …","","","","","","","","","","","","","","","The attempted update to the original_block hash.","","","","","","","","Data required to perform a spk-based blockchain client …","Data returned from a spk-based blockchain client full scan.","Data required to perform a spk-based blockchain client …","Data returned from a spk-based blockchain client sync.","","","","","","","","","Chain on additional OutPoints that will be synced against.","Chain on additional Scripts that will be synced against.","Chain on additional Scripts that will be synced against.","A checkpoint for the current chain LocalChain::tip. The …","A checkpoint for the current LocalChain::tip. The full …","Chain on additional Txids that will be synced against.","The update to apply to the receiving LocalChain.","The update to apply to the receiving TxGraph.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Construct a new SyncRequest from a given cp tip.","Construct a new FullScanRequest from a given chain_tip.","Construct a new FullScanRequest from a given chain_tip and …","The update to apply to the receiving TxGraph.","The update to apply to the receiving LocalChain.","Add a closure that will be called for OutPoints previously …","Add a closure that will be called for Scripts previously …","Add a closure that will be called for every Script …","Add a closure that will be called for every Script …","Add a closure that will be called for Txids previously …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Last active indices for the corresponding keychains (K).","Transactions with these outpoints or spent from these …","Populate the request with revealed script pubkeys from …","Set the OutPoints that will be synced against.","Set the Scripts that will be synced against.","Set the Scripts for a given keychain.","Set the Txids that will be synced against.","Transactions that spend from or to these indexed script …","Iterators of script pubkeys indexed by the keychain index.","","","","","","","","","Transactions with these txids.","","","","","","","","","Errors returned by TxGraph::calculate_fee.","A transaction that is included in the chain, or is still …","The ChangeSet represents changes to a TxGraph.","Missing TxOut for one or more of the inputs of the tx","When the transaction is invalid according to the graph it …","An iterator that traverses ancestors of a given root …","An iterator that traverses transaction descendants.","A graph of transactions and spends.","A transaction node in the TxGraph.","Get all transaction anchors known by TxGraph.","Iterate over all tx outputs known by TxGraph.","Iterates over the heights of that the new transaction …","The blocks that the transaction is “anchored” in.","Added anchors.","","Applies ChangeSet to TxGraph.","Extends this graph with another so that self becomes the …","","Get the total balance of outpoints that are in chain of …","Batch insert unconfirmed transactions.","","","","","","","","","","","","","","","Calculates the fee of a given transaction. Returns 0 if tx …","How the transaction is observed as (confirmed or …","","","","","","","","","","","","","","","","","","","Given a transaction, return an iterator of txids that …","","","","","","Get a filtered list of outputs from the given outpoints …","Get a filtered list of unspent outputs (UTXOs) from the …","Iterate over floating txouts known by TxGraph.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Iterate over all full transactions in the graph.","Get the position of the transaction in chain with tip …","Get the txid of the spending transaction and where the …","Get a transaction by txid. This only returns Some for full …","Get a transaction node by txid. This only returns Some for …","Obtains a single tx output (if any) at the specified …","Determines the ChangeSet between self and an empty TxGraph.","Inserts the given anchor into TxGraph.","Inserts the given seen_at for txid into TxGraph.","Inserts the given transaction into TxGraph.","Inserts the given TxOut at OutPoint.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Whether the graph has any transactions or outputs in it.","","Added last-seen unix timestamps of transactions.","The last-seen unix timestamp of the transaction as …","List graph transactions that are in chain with chain_tip.","Transform the TxGraph to have Anchors of another type.","Transform the ChangeSet to have Anchors of another type.","Construct a new TxGraph from a list of transactions.","","","The transactions spending from this output.","","","","","","","","","","Get the total balance of outpoints that are in chain of …","Get a filtered list of outputs from the given outpoints …","Get a filtered list of unspent outputs (UTXOs) from the …","","","","","","","","Get the position of the transaction in chain with tip …","Get the txid of the spending transaction and where the …","","","","","","","","List graph transactions that are in chain with chain_tip.","A partial or full representation of the transaction.","The transaction node (as part of the graph).","Returns known outputs of a given txid.","Iterates over the transactions spending from txid.","Txid of the transaction.","Iterates over all outpoints contained within ChangeSet.","Added txouts.","Added transactions.","","","","","","","","Update the last seen time for all unconfirmed transactions.","","","","","","","","Creates an iterator that filters and maps ancestor …","Creates an iterator that both filters and maps conflicting …","Creates an iterator that filters and maps descendants from …"],"i":[0,0,0,0,0,0,0,0,0,0,0,8,9,0,78,0,0,0,0,0,8,9,3,14,5,6,7,6,7,39,3,0,3,8,9,5,6,7,10,11,3,8,9,5,6,7,10,11,10,3,8,9,5,6,7,10,11,3,8,9,5,6,7,10,11,8,8,9,5,6,7,10,6,7,14,14,8,6,7,7,3,5,6,7,11,9,5,6,7,79,8,9,5,6,7,10,3,8,9,5,6,7,10,3,8,9,9,5,5,5,6,7,10,11,80,5,6,7,78,8,9,5,6,7,5,5,3,3,3,0,3,3,3,8,9,5,6,7,10,11,11,78,8,9,10,39,10,10,3,3,3,0,0,3,0,3,11,11,11,11,10,3,3,8,9,5,6,7,10,3,3,3,9,5,6,7,10,3,0,3,8,9,5,6,7,10,11,3,8,9,5,6,7,10,11,3,8,9,5,6,7,10,11,0,3,10,3,3,3,8,9,5,6,7,10,11,9,3,3,3,8,9,5,6,7,10,11,81,82,81,0,41,0,0,40,42,42,41,42,42,42,42,42,42,40,42,40,40,40,42,40,40,40,42,40,42,40,40,40,42,40,42,41,41,40,41,42,42,42,42,42,42,40,40,41,42,40,40,42,40,42,40,42,40,42,40,0,0,0,48,49,49,47,49,49,47,47,49,47,48,49,47,48,49,47,48,49,47,48,48,49,47,48,47,48,47,48,49,47,48,48,49,47,48,48,49,49,49,49,49,49,47,48,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,48,49,49,47,48,48,48,48,48,49,47,48,49,47,48,49,49,49,49,47,48,49,49,48,49,49,49,47,48,0,0,59,0,0,0,0,59,0,0,54,54,54,54,60,63,60,54,56,61,58,59,63,60,54,56,61,58,59,60,54,56,61,58,59,60,54,56,61,58,59,54,60,54,56,61,58,59,60,60,54,56,56,61,61,58,58,59,59,63,60,54,56,61,58,59,60,54,54,54,60,54,54,60,54,54,60,60,61,54,60,54,63,60,54,56,61,58,59,63,60,54,60,54,60,63,61,60,56,61,58,59,60,60,54,54,60,54,56,61,58,59,56,61,58,59,63,60,54,56,61,58,59,58,63,60,54,56,61,58,59,63,60,54,56,61,58,59,61,63,60,54,56,61,58,59,0,0,0,0,66,83,67,84,66,83,67,84,66,66,67,66,67,66,83,84,66,83,67,84,66,67,67,83,84,66,66,67,67,66,66,83,67,84,84,66,66,66,66,67,66,66,67,66,83,67,84,66,83,67,84,66,66,83,67,84,66,83,67,84,0,0,0,71,71,0,0,0,0,43,43,46,72,46,46,43,43,43,43,43,75,76,43,72,73,71,46,75,76,43,72,73,71,46,43,73,75,75,76,76,43,72,73,46,43,72,73,46,72,73,43,46,72,46,43,43,72,73,71,46,43,43,43,43,72,73,71,71,46,75,76,43,72,73,71,46,43,43,43,43,43,43,43,43,43,43,43,75,76,43,72,73,71,46,75,76,43,46,46,72,43,43,46,43,75,76,43,72,73,71,46,43,72,73,46,71,43,43,43,75,76,43,72,73,71,46,43,43,75,76,43,72,73,71,46,43,72,73,43,43,72,46,46,46,75,76,43,72,73,71,46,43,75,76,43,72,73,71,46,43,43,43],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[3,[[0,[1,2]]]]],4],[[],5],[5,5],[6,5],[7,5],0,0,[[]],[[[3,[[0,[1,2]]]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[3,[1]]],[[3,[1]]]],[[[8,[1]]],[[8,[1]]]],[9,9],[5,5],[6,6],[7,7],[[[10,[1]]],[[10,[1]]]],[[[11,[1]]],[[11,[1]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[8,[[8,[1]]]],[[[8,[2]],8],12],[[9,9],12],[[5,5],12],[[6,6],12],[[7,7],12],[[[10,[2]],10],12],0,0,[[],13],[[],13],[[[8,[14]]],[[15,[13]]]],[6,13],[7,13],0,[[],3],[[],5],[[],6],[[],7],[11],[[],[[16,[9]]]],[[],[[16,[5]]]],[[],[[16,[6]]]],[[],[[16,[7]]]],[[],17],[[[8,[18]],8],19],[[9,9],19],[[5,5],19],[[6,6],19],[[7,7],19],[[[10,[18]],10],19],[[[3,[20]],21],22],[[[8,[20]],21],22],[[9,21],22],[[5,21],22],[[6,21],22],[[7,21],22],[[[10,[20]],21],22],[[]],[[]],[[[8,[7]]],9],[[]],[[]],[[],5],[[],5],[[]],[[]],[[]],[[]],[[23,5,24]],[[23,5,24],5],[[23,5,24],6],[[23,5,24],7],[[],[[16,[5]]]],[[[8,[25]]]],[9],[5],[6],[7],0,0,[[[3,[[0,[1,2]]]],26],15],[[[3,[[0,[1,2]]]],27]],[[[3,[[0,[1,2]]]],28,29]],0,[[[3,[[0,[1,2]]]]]],[[[3,[[0,[1,2]]]],[0,[1,2]],30],19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[5,5],[[16,[[15,[19]]]]]],[8,19],[9,19],[[[10,[14]],13],19],[[],19],[[[10,[14]],13],19],0,[[[3,[[0,[1,2]]]],27],19],[[[3,[[0,[1,2]]]],27],19],[[[3,[[0,[1,2]]]]],19],0,0,[[[3,[[0,[1,2]]]]],19],0,[[[3,[[0,[1,2]]]],27,[31,[[0,[1,2]]]]],32],[[],11],[[],11],[11,15],[[11,24],15],0,[[[3,[[0,[1,2]]]]],33],[[[3,[[0,[1,2]]]],[31,[[0,[1,2]]]]],34],[[[8,[35]],8],[[15,[12]]]],[[9,9],[[15,[12]]]],[[5,5],[[15,[12]]]],[[6,6],[[15,[12]]]],[[7,7],[[15,[12]]]],[[[10,[35]],10],[[15,[12]]]],[[[3,[[0,[1,2]]]],27],[[33,[[0,[1,2]]]]]],[[[3,[[0,[1,2]]]],28,29],15],[[[3,[[0,[1,2]]]],27,[31,[[0,[1,2]]]]]],[9,16],[5,16],[6,16],[7,16],0,[[[3,[[0,[1,2]]]]],[[15,[26]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],0,[[[3,[[0,[1,2]]]],28],15],0,[[[3,[[0,[1,2]]]]],[[0,[34,36]]]],[[[3,[[0,[1,2]]]],37],34],[[],38],[[],38],[[],38],[[],38],[[],38],[[],38],[[],38],[[],38],[17,9],[[[3,[[0,[1,2]]]]],19],[[[3,[[0,[1,2]]]]],[[0,[34,1]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,[[[40,[14,39]],[40,[14,39]]]],[[[42,[41]],23,13],40],[[[42,[41]],23,13],40],[[]],[[[42,[14,41]],[40,[14]]]],[[[42,[14,41]],[43,[14]]],[[40,[14]]]],[[[42,[14,41]],44],[[40,[14]]]],[[[42,[14,41]],44],[[40,[14]]]],[[[42,[14,41]],44],[[40,[14]]]],[[]],[[]],[[]],[[]],[[[40,[1,1]]],[[40,[1,1]]]],[[]],[[],[[42,[45]]]],[[],[[40,[45]]]],[[],[[16,[40]]]],[[[40,[18,18]],40],19],[[[42,[20,20]],21],22],[[[40,[20,20]],21],22],[[]],[[]],[46,[[40,[45]]]],[47,[[40,[47]]]],[42,43],0,0,[27],[[28,29]],0,[[]],[[[42,[14,41]]],[[40,[14]]]],[[[42,[14,41]],37,14],[[40,[14]]]],[[[42,[14,41]],37,17],[[40,[14]]]],[[[42,[14,41]],27],[[40,[14]]]],[[[42,[14,41]],28,29],[[40,[14]]]],[[]],[[]],[[[40,[14,39]]],19],[27,19],[[],42],[40,16],[[]],[[],16],[[],16],[[],16],[[],16],[[],38],[[],38],[[]],[[]],0,0,0,[[48,48],48],[[[49,[[0,[1,2,20]]]],[0,[1,2,20]],[51,[50]]]],[[[49,[[0,[1,2,20]]]]],[[4,[[0,[1,2,20]],[11,[[51,[50]]]]]]]],[[[47,[2]],[47,[2]]]],[[[49,[[0,[1,2,20]]]],[47,[[0,[1,2,20]]]]]],[[[49,[[0,[1,2,20]]]]]],[47,4],[47,4],[[]],[[]],[[]],[[]],[[]],[[]],[[[49,[1]]],[[49,[1]]]],[[[47,[1]]],[[47,[1]]]],[48,48],[[]],[[]],[[]],0,[[],49],[[],47],[[],48],[[],[[16,[47]]]],[[],[[16,[48]]]],[[[47,[18]],47],19],[[48,48],19],[[[49,[20]],21],22],[[[47,[20]],21],22],[[48,21],22],[[48,21],22],[[]],[[]],[[]],0,[[[49,[[0,[1,2,20]]]],26],15],[[[49,[[0,[1,2,20]]]],27]],[[[49,[[0,[1,2,20]]]],28,29]],[[[49,[[0,[1,2,20]]]]]],[[[49,[[0,[1,2,20]]]]],3],[[]],[[]],[[]],[[[47,[2]]],19],[[[49,[[0,[1,2,20]]]],27],19],[[[49,[[0,[1,2,20]]]],[0,[1,2,20]],13],19],[[[49,[[0,[1,2,20]]]]],34],[[[49,[[0,[1,2,20]]]],[31,[[0,[1,2,20]]]]],34],[[[49,[[0,[1,2,20]]]]],4],[[[49,[[0,[1,2,20]]]]],[[15,[13]]]],[[[49,[[0,[1,2,20]]]]],4],[[[49,[[0,[1,2,20]]]]],[[15,[13]]]],[[[49,[[0,[1,2,20]]]]],[[4,[[0,[1,2,20]],13]]]],[[[49,[[0,[1,2,20]]]]],13],[[[49,[[0,[1,2,20]]]],13]],[[[49,[[0,[1,2,20]]]],[0,[1,2,20]],13],19],[[[49,[[0,[1,2,20]]]],27,[31,[[0,[1,2,20]]]]],32],[13,49],[[[49,[[0,[1,2,20]]]]]],[[[49,[[0,[1,2,20]]]]]],[[[49,[[0,[1,2,20]]]]],33],[[[49,[[0,[1,2,20]]]]]],[[[49,[[0,[1,2,20]]]],13]],[[[49,[[0,[1,2,20]]]],4]],[[[49,[[0,[1,2,20]]]]],34],[[[49,[[0,[1,2,20]]]],[31,[[0,[1,2,20]]]]],[[0,[34,1]]]],[[[49,[[0,[1,2,20]]]],27,[31,[[0,[1,2,20]]]]]],[47,16],[48,16],[[[49,[[0,[1,2,20]]]],[0,[1,2,20]],13],[[15,[26]]]],[[]],[[]],[[]],[[],52],[48,53],0,[48,53],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[[49,[[0,[1,2,20]]]],28],15],[[[49,[[0,[1,2,20]]]]],[[0,[34,36]]]],[[[49,[[0,[1,2,20]]]],37],34],[[],38],[[],38],[[],38],[[[49,[[0,[1,2,20]]]]],[[11,[[51,[50]]]]]],[[[49,[[0,[1,2,20]]]],[0,[1,2,20]],13],19],0,[[[49,[[0,[1,2,20]]]]],[[0,[34,1]]]],[[[49,[[0,[1,2,20]]]]],[[0,[34,1]]]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,[[54,55],[[16,[56]]]],[[54,57,13],[[16,[55,58]]]],[[54,57,13,5],[[16,[55,59]]]],[[54,60],[[16,[55,58]]]],[60,5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[60,60],[54,54],[56,56],[61,61],[58,58],[59,59],[[]],[[]],[[]],[[]],[[]],[[]],[[54,5],[[16,[55,56]]]],[[60,60],19],[[54,54],19],[[56,56],19],[[61,61],19],[[58,58],19],[[59,59],19],[[60,44],[[16,[60,60]]]],[[60,21],22],[[54,21],22],[[56,21],22],[[56,21],22],[[61,21],22],[[61,21],22],[[58,21],22],[[58,21],22],[[59,21],22],[[59,21],22],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[44,[[16,[60,[15,[60]]]]]],[[[4,[13,62]]],[[16,[54,56]]]],[55,[[16,[54,56]]]],[62],[[57,13],60],[60,[[16,[54,56]]]],[54,62],[[60,13],[[15,[60]]]],[[54,13],[[15,[60]]]],[54,[[16,[5]]]],[60,62],[60,13],0,[54,55],[[60,5],60],[[54,5],[[16,[55,61]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[60],[[54,5,5],[[16,[[15,[19]]]]]],[60,63],[54,63],[5,60],[63,15],0,[60,[[15,[60]]]],[64],[64],[64],[64],[[60,5],[[16,[60,60]]]],[60,65],[54,65],[54,60],[[]],[[]],[[]],[[]],[[]],[[]],[[],52],[[],52],[[],52],[[],52],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],0,[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],38],[[],38],[[],38],[[],38],[[],38],[[],38],[[],38],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[66,44],66],[[66,44],66],[[[67,[[0,[2,1]]]],[0,[2,1]],44],[[67,[[0,[2,1]]]]]],0,0,[[66,44],66],0,0,[[]],[[]],[[]],[[]],[60,66],[60,[[67,[[0,[2,1]]]]]],[[60,49],[[67,[[0,[2,1]]]]]],0,0,[[66,[0,[68,69,70]]],66],[[66,[0,[68,69,70]]],66],[[[67,[[0,[2,1]]]],[0,[68,69,70,1]]],[[67,[[0,[2,1]]]]]],[[[67,[[0,[2,1]]]],[0,[2,1]],[0,[68,69,70]]],[[67,[[0,[2,1]]]]]],[[66,[0,[68,69,70]]],66],[[]],[[]],[[]],[[]],0,0,[[66,49,[31,[[0,[1,2,20,69,70]]]]],66],[[66,44],66],[[66,44],66],[[[67,[[0,[2,1]]]],[0,[2,1]],44],[[67,[[0,[2,1]]]]]],[[66,44],66],0,0,[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],0,[[],38],[[],38],[[],38],[[],38],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,[43,33],[43,65],[46,65],0,0,[[[46,[2]],[46,[2]]]],[[[43,[[0,[1,2]]]],[46,[[0,[1,2]]]]]],[[[43,[[0,[1,2]]]],[43,[[0,[1,2]]]]],[[46,[[0,[1,2]]]]]],[43,43],[[[43,[14]],5,44,68],48],[[[43,[[0,[1,2]]]],44],[[46,[[0,[1,2]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[43,27],[[16,[17,71]]]],0,[[],[[15,[32]]]],[[],[[15,[53]]]],[[],[[15,[53]]]],[[],[[15,[32]]]],[[[43,[1]]],[[43,[1]]]],[[[72,[1,1]]],[[72,[1,1]]]],[[[73,[1,1]]],[[73,[1,1]]]],[[[46,[1]]],[[46,[1]]]],[[]],[[]],[[]],[[]],[[[72,[2,2]],72],12],[[[73,[2,2]],73],12],[[],43],[[],46],[72],[[],[[16,[46]]]],[[43,27],65],[[[43,[18]],43],19],[[[72,[18,18]],72],19],[[[73,[18,18]],73],19],[[71,71],19],[[[46,[18]],46],19],[[[43,[14]],5,44],65],[[[43,[14]],5,44],65],[43,65],[[[43,[20]],21],22],[[[72,[20,20]],21],22],[[[73,[20,20]],21],22],[[71,21],22],[[71,21],22],[[[46,[20]],21],22],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[43,65],[[[43,[14]],5,37],[[15,[8]]]],[[[43,[14]],5,28],15],[[43,37],[[15,[[74,[27]]]]]],[[43,37],[[15,[[72,[[74,[27]]]]]]]],[[43,28],[[15,[29]]]],[[[43,[[0,[1,2]]]]],[[46,[[0,[1,2]]]]]],[[[43,[[0,[1,2]]]],37,[0,[1,2]]],[[46,[[0,[1,2]]]]]],[[[43,[[0,[1,2]]]],37,17],[[46,[[0,[1,2]]]]]],[[[43,[[0,[1,2]]]],27],[[46,[[0,[1,2]]]]]],[[[43,[[0,[1,2]]]],28,29],[[46,[[0,[1,2]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[43,19],[[[46,[2]]],19],0,0,[[[43,[14]],5],65],[[[43,[[0,[1,2]]]]],[[43,[[0,[1,2]]]]]],[[[46,[2]]],[[46,[2]]]],[44,[[43,[[0,[1,2]]]]]],[75,15],[76,15],[[43,28],77],[[[72,[35,35]],72],[[15,[12]]]],[[[73,[35,35]],73],[[15,[12]]]],[64],[46,16],[[]],[[]],[[]],[[]],[[],52],[[[43,[14]],5,44,68],[[16,[48]]]],[[[43,[14]],5,44],65],[[[43,[14]],5,44],65],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[[43,[14]],5,37],[[16,[[15,[8]]]]]],[[[43,[14]],5,28],[[16,[15]]]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[[43,[14]],5],65],0,0,[[43,37],[[15,[[4,[13,29]]]]]],[[43,37],34],0,[46,65],0,0,[[],38],[[],38],[[],38],[[],38],[[],38],[[],38],[[],38],[[[43,[[0,[1,2]]]],17],[[46,[[0,[1,2]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[43,[[0,[1,2]]]]],[[75,[[0,[1,2]]]]]],[[43,27],76],[[[43,[[0,[1,2]]]],37],[[76,[[0,[1,2]]]]]]],"p":[[8,"Clone"],[8,"Ord"],[3,"SpkTxOutIndex"],[3,"BTreeMap"],[3,"BlockId"],[3,"ConfirmationHeightAnchor"],[3,"ConfirmationTimeHeightAnchor"],[4,"ChainPosition"],[4,"ConfirmationTime"],[3,"FullTxOut"],[3,"SpkIterator"],[4,"Ordering"],[15,"u32"],[8,"Anchor"],[4,"Option"],[4,"Result"],[15,"u64"],[8,"PartialEq"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[3,"Block"],[15,"usize"],[8,"Hash"],[3,"Script"],[3,"Transaction"],[3,"OutPoint"],[3,"TxOut"],[3,"ScriptBuf"],[8,"RangeBounds"],[3,"SignedAmount"],[3,"BTreeSet"],[8,"DoubleEndedIterator"],[8,"PartialOrd"],[8,"ExactSizeIterator"],[3,"Txid"],[3,"TypeId"],[8,"Append"],[3,"ChangeSet"],[8,"Indexer"],[3,"IndexedTxGraph"],[3,"TxGraph"],[8,"IntoIterator"],[8,"Default"],[3,"ChangeSet"],[3,"ChangeSet"],[3,"Balance"],[3,"KeychainTxOutIndex"],[4,"DescriptorPublicKey"],[4,"Descriptor"],[3,"String"],[3,"Amount"],[3,"LocalChain"],[6,"ChangeSet"],[3,"MissingGenesisError"],[3,"Header"],[3,"CannotConnectError"],[4,"ApplyHeaderError"],[3,"CheckPoint"],[3,"AlterCheckPointError"],[3,"BlockHash"],[3,"CheckPointIter"],[3,"Demand"],[8,"Iterator"],[3,"SyncRequest"],[3,"FullScanRequest"],[8,"FnMut"],[8,"Send"],[8,"Sync"],[4,"CalculateFeeError"],[3,"TxNode"],[3,"CanonicalTx"],[3,"Arc"],[3,"TxAncestors"],[3,"TxDescendants"],[3,"HashSet"],[8,"ChainOracle"],[8,"DescriptorExt"],[8,"AnchorFromBlockPosition"],[13,"Confirmed"],[13,"Unconfirmed"],[3,"SyncResult"],[3,"FullScanResult"]]},\ +"bdk_chain":{"doc":"This crate is a collection of core structures for Bitcoin …","t":[8,8,8,17,3,17,8,4,3,4,3,13,13,8,3,16,3,2,3,3,2,13,13,11,11,10,11,11,11,12,12,10,11,11,11,11,11,2,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,12,12,11,11,11,11,11,12,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,12,12,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,10,11,12,11,11,11,0,0,11,2,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,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,0,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,12,12,12,3,16,3,8,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,12,12,10,10,12,10,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,3,3,3,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,12,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,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,3,4,13,3,6,3,3,13,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,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,12,11,11,11,11,11,11,11,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,4,3,3,13,13,3,3,3,3,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,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,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,12,12,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["Anchor","AnchorFromBlockPosition","Append","BIP32_MAX_INDEX","BlockId","COINBASE_MATURITY","ChainOracle","ChainPosition","ConfirmationHeightAnchor","ConfirmationTime","ConfirmationTimeHeightAnchor","Confirmed","Confirmed","DescriptorExt","DescriptorId","Error","FullTxOut","IndexedTxGraph","SpkIterator","SpkTxOutIndex","TxGraph","Unconfirmed","Unconfirmed","all_spks","all_zeros","anchor_block","anchor_block","anchor_block","anchor_block","anchor_block","anchor_block","append","apply_changeset","as_byte_array","as_raw_hash","as_ref","as_ref","bitcoin","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","chain_position","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cmp","cmp","cmp","cmp","cmp","cmp","cmp","confirmation_height","confirmation_height","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_time","default","default","default","default","descriptor","descriptor_id","deserialize","deserialize","deserialize","deserialize","deserialize","dust_value","engine","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from_block_position","from_block_position","from_block_position","from_block_position","from_byte_array","from_engine","from_raw_hash","from_slice","from_slice_delegated","from_str","get_chain_tip","hash","hash","hash","hash","hash","hash","hash","height","index","index_of_spk","index_tx","index_txout","indexed_tx_graph","initial_changeset","insert_spk","into","into","into","into","into","into","into","into","into","into_iter","is_block_in_chain","is_confirmed","is_confirmed","is_confirmed_and_spendable","is_empty","is_mature","is_on_coinbase","is_relevant","is_tx_relevant","is_used","keychain","local_chain","mark_used","miniscript","net_value","new","new_with_range","next","nth","outpoint","outpoints","outputs_in_range","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","scan","scan_txout","sent_and_received","serialize","serialize","serialize","serialize","serialize","spent_by","spk_at_index","spk_client","to_byte_array","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_raw_hash","to_string","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","tx_graph","txout","txout","txouts","txouts_in_tx","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unconfirmed","unmark_used","unused_spks","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","height","last_seen","time","ChangeSet","ChangeSet","IndexedTxGraph","Indexer","append","apply_block","apply_block_relevant","apply_changeset","apply_changeset","apply_update","batch_insert_relevant","batch_insert_relevant_unconfirmed","batch_insert_unconfirmed","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","default","default","deserialize","eq","fmt","fmt","from","from","from","from","graph","graph","index","index_tx","index_txout","indexer","initial_changeset","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","is_empty","is_tx_relevant","new","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Balance","ChangeSet","KeychainTxOutIndex","add","all_unbounded_spk_iters","append","apply_changeset","apply_changeset","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","confirmed","default","default","default","deserialize","deserialize","eq","eq","fmt","fmt","fmt","fmt","from","from","from","get_descriptor","immature","index_of_spk","index_tx","index_txout","initial_changeset","inner","insert_descriptor","into","into","into","is_empty","is_tx_relevant","is_used","keychain_outpoints","keychain_outpoints_in_range","keychains","keychains_added","last_revealed","last_revealed_index","last_revealed_indices","last_used_index","last_used_indices","lookahead","lookahead_to_target","mark_used","net_value","new","next_index","next_unused_spk","outpoints","reveal_next_spk","reveal_to_target","reveal_to_target_multi","revealed_keychain_spks","revealed_spks","sent_and_received","serialize","serialize","spk_at_index","to_owned","to_owned","to_owned","to_string","total","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_into","try_into","try_into","txout","txouts","txouts_in_tx","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","untrusted_pending","unused_keychain_spks","unused_spks","vzip","vzip","vzip","AlterCheckPointError","ApplyHeaderError","CannotConnect","CannotConnectError","ChangeSet","CheckPoint","CheckPointIter","InconsistentBlocks","LocalChain","MissingGenesisError","apply_changeset","apply_header","apply_header_connected_to","apply_update","block_id","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","disconnect_from","eq","eq","eq","eq","eq","eq","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_block_ids","from_blocks","from_changeset","from_genesis_hash","from_header","from_tip","genesis_hash","get","get","get_chain_tip","hash","height","height","initial_changeset","insert","insert_block","into","into","into","into","into","into","into","into_iter","into_iter","is_block_in_chain","iter","iter_checkpoints","new","next","original_hash","prev","provide","provide","provide","provide","push","range","range","tip","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_include_height","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","update_hash","vzip","vzip","vzip","vzip","vzip","vzip","vzip","FullScanRequest","FullScanResult","SyncRequest","SyncResult","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain_outpoints","chain_spks","chain_spks_for_keychain","chain_tip","chain_tip","chain_txids","chain_update","chain_update","from","from","from","from","from_chain_tip","from_chain_tip","from_keychain_txout_index","graph_update","graph_update","inspect_outpoints","inspect_spks","inspect_spks_for_all_keychains","inspect_spks_for_keychain","inspect_txids","into","into","into","into","last_active_indices","outpoints","populate_with_revealed_spks","set_outpoints","set_spks","set_spks_for_keychain","set_txids","spks","spks_by_keychain","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","txids","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","CalculateFeeError","CanonicalTx","ChangeSet","MissingTxOut","NegativeFee","TxAncestors","TxDescendants","TxGraph","TxNode","all_anchors","all_txouts","anchor_heights","anchors","anchors","append","apply_changeset","apply_update","as_ref","balance","batch_insert_unconfirmed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","calculate_fee","chain_position","checked_sum","checked_sum","checked_sum","checked_sum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","deref","deserialize","direct_conflicts","eq","eq","eq","eq","eq","filter_chain_txouts","filter_chain_unspents","floating_txouts","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","full_txs","get_chain_position","get_chain_spend","get_tx","get_tx_node","get_txout","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_empty","last_seen","last_seen_unconfirmed","list_chain_txs","map_anchors","map_anchors","new","next","next","outspends","partial_cmp","partial_cmp","provide","serialize","to_owned","to_owned","to_owned","to_owned","to_string","try_balance","try_filter_chain_txouts","try_filter_chain_unspents","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_get_chain_position","try_get_chain_spend","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_list_chain_txs","tx","tx_node","tx_outputs","tx_spends","txid","txouts","txouts","txs","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_last_seen_unconfirmed","vzip","vzip","vzip","vzip","vzip","vzip","vzip","walk_ancestors","walk_conflicts","walk_descendants"],"q":["bdk_chain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::ConfirmationTime","","","bdk_chain::indexed_tx_graph","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::keychain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::local_chain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::spk_client","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::tx_graph","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Trait that “anchors” blockchain data to a specific …","An Anchor that can be constructed from a given block, …","Trait that makes an object appendable.","Maximum BIP32 derivation index.","A reference to a block in the canonical chain.","How many confirmations are needed f or a coinbase output …","Represents a service that tracks the blockchain.","Represents the observed position of some chain data.","An Anchor implementation that also records the exact …","Block height and timestamp at which a transaction is …","An Anchor implementation that also records the exact …","The chain data is seen as confirmed, and in anchored by A.","The transaction is confirmed","A trait to extend the functionality of a miniscript …","Represents the ID of a descriptor, defined as the sha256 …","Error type.","A TxOut with as much data as we can retrieve about it","","An iterator for derived script pubkeys.","An index storing TxOuts that have a script pubkey that …","","The chain data is not confirmed and last seen in the …","The transaction is unconfirmed","The script pubkeys that are being tracked by the index.","","Returns the BlockId that the associated blockchain data is …","","","","The anchor block.","The anchor block.","Append another object of the same type onto self.","","","Returns a reference to the inner hash (sha256, sh256d …","","","","","","","","","","","","","","","","","","","","","","","The position of the transaction in outpoint in the overall …","","","","","","","","","","","","","","","","","","","Maps a ChainPosition<&A> into a ChainPosition<A> by …","","","","","","","","The exact confirmation height of the transaction.","The confirmation height of the transaction being anchored.","Get the upper bound of the chain data’s confirmation …","Get the upper bound of the chain data’s confirmation …","Determines the upper bound of the confirmation height.","","","The confirmation time of the transaction being anchored.","","","","","Get a reference to the internal descriptor.","Returns the descriptor id, calculated as the sha256 of the …","","","","","","Returns the minimum value (in satoshis) at which an output …","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Construct the anchor from a given block, block height and …","","","","","","Creates this wrapper type from the inner hash type.","","","","Get the best chain’s chain tip.","","","","","","","The hash of the block.","The height of the block.","","Returns the index associated with the script pubkey.","","","Contains the IndexedTxGraph and associated types. Refer to …","","Adds a script pubkey to scan for. Returns false and does …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Determines whether block of BlockId exists as an ancestor …","Returns whether ChainPosition is confirmed or not.","Returns whether ConfirmationTime is the confirmed variant.","Whether the utxo is/was/will be spendable with chain tip.","Returns whether the structure is considered empty.","Whether the txout is considered mature.","Whether this output is on a coinbase transaction.","Whether any of the inputs of this transaction spend a …","","Returns whether the script pubkey at index has been used …","Module for keychain related structures.","The LocalChain is a local implementation of ChainOracle.","Marks the script pubkey at index as used even though it …","","Computes the net value transfer effect of tx on the script …","Create a new script pubkey iterator from descriptor.","Create a new script pubkey iterator from descriptor and a …","","","The location of the TxOut.","Get a reference to the set of indexed outpoints.","Iterates over all the outputs with script pubkeys in an …","","","","","","","","Scans a transaction’s outputs for matching script …","Scan a single TxOut for a matching script pubkey and …","Computes the total value transfer effect tx has on the …","","","","","","The txid and chain position of the transaction (if any) …","Returns the script that has been inserted at the index.","Helper types for spk-based blockchain clients.","","","","","","","","","","","Returns the inner hash (sha256, sh256d etc.).","","","","","","","","","","","","","","","","","","","","Module for structures that store and traverse transactions.","Returns the txout and script pubkey index of the TxOut at …","The TxOut.","Iterate over all known txouts that spend to tracked script …","Finds all txouts on a transaction that has previously been …","","","","","","","","","","Construct an unconfirmed variant using the given last_seen …","Undoes the effect of mark_used. Returns whether the index …","Iterates over all unused script pubkeys in an index range.","","","","","","","","","","Confirmation height.","The last-seen timestamp in unix seconds.","Confirmation time in unix seconds.","Represents changes to an IndexedTxGraph.","The resultant “changeset” when new transaction data is …","The IndexedTxGraph combines a TxGraph and an Indexer …","Utilities for indexing transaction data.","","Batch insert all transactions of the given block of height.","Batch insert all transactions of the given block of height…","Apply changeset to itself.","Applies the ChangeSet to the IndexedTxGraph.","Apply an update directly.","Batch insert transactions, filtering out those that are …","Batch insert unconfirmed transactions, filtering out those …","Batch insert unconfirmed transactions.","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Get a reference of the internal transaction graph.","TxGraph changeset.","Transaction index.","Scans a transaction for relevant outpoints, which are …","Scan and index the given outpoint and txout.","Indexer changeset.","Determines the ChangeSet between self and an empty Indexer.","Determines the ChangeSet between self and an empty …","Insert an anchor for a given transaction.","Insert a unix timestamp of when a transaction is seen in …","Insert and index a transaction into the graph.","Insert a floating txout of given outpoint.","Calls U::from(self).","Calls U::from(self).","","Determines whether the transaction should be included in …","Construct a new IndexedTxGraph with a given index.","","","","","","","","","","","Balance, differentiated into various categories.","Represents updates to the derivation index of a …","KeychainTxOutIndex controls how script pubkeys are …","","Get unbounded spk iterators for all keychains.","Append another ChangeSet into self.","","Applies the derivation changeset to the KeychainTxOutIndex…","","","","","","","","","","","","","Confirmed and immediately spendable balance","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Gets the descriptor associated with the keychain. Returns …","All coinbase outputs not yet matured","Returns the keychain and keychain index associated with …","","","","Return a reference to the internal SpkTxOutIndex.","Insert a descriptor with a keychain associated to it.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns whether the changeset are empty.","","Returns whether the spk under the keychain’s index has …","Iterate over all OutPoints that have TxOuts with script …","Iterate over OutPoints that have script pubkeys derived …","Return the map of the keychain to descriptors.","Contains the keychains that have been added and their …","Contains for each descriptor_id the last revealed index of …","Get the last derivation index revealed for keychain. …","Get the last derivation index that is revealed for each …","Returns the highest derivation index of the keychain where …","Returns the highest derivation index of each keychain that …","Get the lookahead setting.","Store lookahead scripts until target_index (inclusive).","Marks the script pubkey at index as used even though the …","Computes the net value that this transaction gives to the …","Construct a KeychainTxOutIndex with the given lookahead.","Get the next derivation index for keychain. The next index …","Gets the next unused script pubkey in the keychain. I.e., …","Get the set of indexed outpoints, corresponding to tracked …","Attempts to reveal the next script pubkey for keychain.","Reveals script pubkeys of the keychain’s descriptor up …","Convenience method to call Self::reveal_to_target on …","Iterate over revealed spks of the given keychain.","Iterate over revealed spks of keychains in range","Computes the total value transfer effect tx has on the …","","","Return the script that exists under the given keychain’s …","","","","","Get the whole balance visible to the wallet.","Unconfirmed UTXOs generated by a wallet tx","Get sum of trusted_pending and confirmed coins.","","","","","","","Return the TxOut of outpoint if it has been indexed, and …","Iterate over known txouts that spend to tracked script …","Finds all txouts on a transaction that has previously been …","","","","Get an unbounded spk iterator over a given keychain. …","Undoes the effect of mark_used. Returns whether the index …","Unconfirmed UTXOs received from an external wallet","Iterate over revealed, but unused, spks of the given …","Iterate over revealed, but unused, spks of all keychains.","","","","Represents a failure when trying to insert/remove a …","The error type for LocalChain::apply_header_connected_to.","Occurs when the update cannot connect with the original …","Occurs when an update does not have a common checkpoint …","The ChangeSet represents changes to LocalChain.","A LocalChain checkpoint is used to find the agreement …","Iterates over checkpoints backwards.","Occurs when connected_to block conflicts with either the …","This is a local implementation of ChainOracle.","An error which occurs when a LocalChain is constructed …","Apply the given changeset.","Update the chain with a given Header connecting it with …","Update the chain with a given Header at height which you …","Applies the given update to the chain.","Get the BlockId of the checkpoint.","","","","","","","","","","","","","","","","","","","","","","","","","","","Removes blocks from (and inclusive of) the given block_id.","","","","","","","Extends the checkpoint linked list by a iterator of block …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Construct a checkpoint from a list of BlockIds in …","Constructs a LocalChain from a BTreeMap of height to …","Construct a LocalChain from an initial changeset.","Construct LocalChain from genesis hash.","Construct a checkpoint from the given header and block …","Construct a LocalChain from a given checkpoint tip.","Get the genesis hash.","Get checkpoint at height.","Get checkpoint at given height (if it exists).","","Get the block hash of the checkpoint.","Get the height of the checkpoint.","The checkpoint’s height.","Derives an initial ChangeSet, meaning that it can be …","Inserts block_id at its height within the chain.","Insert a BlockId.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Iterate from this checkpoint in descending height.","Iterate over checkpoints in descending height order.","Construct a new base block at the front of a linked list.","","The original checkpoint’s block hash which cannot be …","Get the previous checkpoint in the chain","","","","","Puts another checkpoint onto the linked list representing …","Iterate checkpoints over a height range.","Iterate checkpoints over a height range.","Get the highest checkpoint.","","","","","","","","","","","","","","","","","","The suggested checkpoint to include to connect the two …","","","","","","","","","","","","","","","The attempted update to the original_block hash.","","","","","","","","Data required to perform a spk-based blockchain client …","Data returned from a spk-based blockchain client full scan.","Data required to perform a spk-based blockchain client …","Data returned from a spk-based blockchain client sync.","","","","","","","","","Chain on additional OutPoints that will be synced against.","Chain on additional Scripts that will be synced against.","Chain on additional Scripts that will be synced against.","A checkpoint for the current chain LocalChain::tip. The …","A checkpoint for the current LocalChain::tip. The full …","Chain on additional Txids that will be synced against.","The update to apply to the receiving LocalChain.","The update to apply to the receiving TxGraph.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Construct a new SyncRequest from a given cp tip.","Construct a new FullScanRequest from a given chain_tip.","Construct a new FullScanRequest from a given chain_tip and …","The update to apply to the receiving TxGraph.","The update to apply to the receiving LocalChain.","Add a closure that will be called for OutPoints previously …","Add a closure that will be called for Scripts previously …","Add a closure that will be called for every Script …","Add a closure that will be called for every Script …","Add a closure that will be called for Txids previously …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Last active indices for the corresponding keychains (K).","Transactions with these outpoints or spent from these …","Populate the request with revealed script pubkeys from …","Set the OutPoints that will be synced against.","Set the Scripts that will be synced against.","Set the Scripts for a given keychain.","Set the Txids that will be synced against.","Transactions that spend from or to these indexed script …","Iterators of script pubkeys indexed by the keychain index.","","","","","","","","","Transactions with these txids.","","","","","","","","","Errors returned by TxGraph::calculate_fee.","A transaction that is included in the chain, or is still …","The ChangeSet represents changes to a TxGraph.","Missing TxOut for one or more of the inputs of the tx","When the transaction is invalid according to the graph it …","An iterator that traverses ancestors of a given root …","An iterator that traverses transaction descendants.","A graph of transactions and spends.","A transaction node in the TxGraph.","Get all transaction anchors known by TxGraph.","Iterate over all tx outputs known by TxGraph.","Iterates over the heights of that the new transaction …","The blocks that the transaction is “anchored” in.","Added anchors.","","Applies ChangeSet to TxGraph.","Extends this graph with another so that self becomes the …","","Get the total balance of outpoints that are in chain of …","Batch insert unconfirmed transactions.","","","","","","","","","","","","","","","Calculates the fee of a given transaction. Returns 0 if tx …","How the transaction is observed as (confirmed or …","","","","","","","","","","","","","","","","","","","Given a transaction, return an iterator of txids that …","","","","","","Get a filtered list of outputs from the given outpoints …","Get a filtered list of unspent outputs (UTXOs) from the …","Iterate over floating txouts known by TxGraph.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Iterate over all full transactions in the graph.","Get the position of the transaction in chain with tip …","Get the txid of the spending transaction and where the …","Get a transaction by txid. This only returns Some for full …","Get a transaction node by txid. This only returns Some for …","Obtains a single tx output (if any) at the specified …","Determines the ChangeSet between self and an empty TxGraph.","Inserts the given anchor into TxGraph.","Inserts the given seen_at for txid into TxGraph.","Inserts the given transaction into TxGraph.","Inserts the given TxOut at OutPoint.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Whether the graph has any transactions or outputs in it.","","Added last-seen unix timestamps of transactions.","The last-seen unix timestamp of the transaction as …","List graph transactions that are in chain with chain_tip.","Transform the TxGraph to have Anchors of another type.","Transform the ChangeSet to have Anchors of another type.","Construct a new TxGraph from a list of transactions.","","","The transactions spending from this output.","","","","","","","","","","Get the total balance of outpoints that are in chain of …","Get a filtered list of outputs from the given outpoints …","Get a filtered list of unspent outputs (UTXOs) from the …","","","","","","","","Get the position of the transaction in chain with tip …","Get the txid of the spending transaction and where the …","","","","","","","","List graph transactions that are in chain with chain_tip.","A partial or full representation of the transaction.","The transaction node (as part of the graph).","Returns known outputs of a given txid.","Iterates over the transactions spending from txid.","Txid of the transaction.","Iterates over all outpoints contained within ChangeSet.","Added txouts.","Added transactions.","","","","","","","","Update the last seen time for all unconfirmed transactions.","","","","","","","","Creates an iterator that filters and maps ancestor …","Creates an iterator that both filters and maps conflicting …","Creates an iterator that filters and maps descendants from …"],"i":[0,0,0,0,0,0,0,0,0,0,0,10,11,0,0,85,0,0,0,0,0,10,11,3,5,16,6,7,8,7,8,47,3,5,5,5,5,0,3,10,11,6,7,8,12,5,5,13,3,10,11,6,7,8,12,5,13,12,3,10,11,6,7,8,12,5,13,3,10,11,6,7,8,12,5,13,10,10,11,6,7,8,12,5,7,8,16,16,10,7,8,8,3,6,7,8,13,86,11,6,7,8,5,86,5,10,11,6,7,8,12,5,3,10,11,6,7,8,12,5,5,5,5,3,10,11,11,6,6,6,7,8,12,5,5,13,87,6,7,8,5,5,5,5,5,5,85,10,11,6,7,8,5,6,6,5,3,3,3,0,3,3,3,10,11,6,7,8,12,5,13,13,85,10,11,12,47,12,12,3,3,3,0,0,3,0,3,13,13,13,13,12,3,3,10,11,6,7,8,12,5,3,3,3,11,6,7,8,5,12,3,0,5,3,10,11,6,7,8,12,5,13,5,5,3,10,11,6,7,8,12,5,13,3,10,11,6,7,8,12,5,13,0,3,12,3,3,3,10,11,6,7,8,12,5,13,11,3,3,3,10,11,6,7,8,12,5,13,88,89,88,0,49,0,0,48,50,50,49,50,50,50,50,50,50,48,50,48,48,48,50,48,48,48,50,48,50,48,48,48,50,48,50,49,49,48,49,50,50,50,50,50,50,48,48,49,50,48,48,50,48,50,48,50,48,50,48,0,0,0,56,57,54,57,57,54,57,56,54,57,56,54,57,56,54,57,56,56,54,57,56,54,56,54,56,54,57,56,56,54,57,56,57,56,57,57,57,57,57,57,54,57,56,54,57,57,57,57,57,54,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,56,57,54,57,56,56,56,56,56,54,57,56,54,57,56,57,57,57,54,57,56,57,57,56,57,57,54,57,56,0,0,66,0,0,0,0,66,0,0,61,61,61,61,67,70,67,61,63,68,65,66,70,67,61,63,68,65,66,67,61,63,68,65,66,67,61,63,68,65,66,61,67,61,63,68,65,66,67,67,61,63,63,68,68,65,65,66,66,70,67,61,63,68,65,66,67,61,61,61,67,61,61,67,61,61,67,67,68,61,67,61,70,67,61,63,68,65,66,70,67,61,67,61,67,70,68,67,63,68,65,66,67,67,61,61,67,61,63,68,65,66,63,68,65,66,70,67,61,63,68,65,66,65,70,67,61,63,68,65,66,70,67,61,63,68,65,66,68,70,67,61,63,68,65,66,0,0,0,0,73,90,74,91,73,90,74,91,73,73,74,73,74,73,90,91,73,90,74,91,73,74,74,90,91,73,73,74,74,73,73,90,74,91,91,73,73,73,73,74,73,73,74,73,90,74,91,73,90,74,91,73,73,90,74,91,73,90,74,91,0,0,0,78,78,0,0,0,0,51,51,55,79,55,55,51,51,51,51,51,82,83,51,79,80,78,55,82,83,51,79,80,78,55,51,80,82,82,83,83,51,79,80,55,51,79,80,55,79,80,51,55,79,55,51,51,79,80,78,55,51,51,51,51,79,80,78,78,55,82,83,51,79,80,78,55,51,51,51,51,51,51,51,51,51,51,51,82,83,51,79,80,78,55,82,83,51,55,55,79,51,51,55,51,82,83,51,79,80,78,55,51,79,80,55,78,51,51,51,82,83,51,79,80,78,55,51,51,82,83,51,79,80,78,55,51,79,80,51,51,79,55,55,55,82,83,51,79,80,78,55,51,82,83,51,79,80,78,55,51,51,51],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[3,[[0,[1,2]]]]],4],[[],5],[[],6],[6,6],[7,6],[8,6],0,0,[[]],[[[3,[[0,[1,2]]]]]],[5],[5,9],[5],[5],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[3,[1]]],[[3,[1]]]],[[[10,[1]]],[[10,[1]]]],[11,11],[6,6],[7,7],[8,8],[[[12,[1]]],[[12,[1]]]],[5,5],[[[13,[1]]],[[13,[1]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[10,[[10,[1]]]],[[[10,[2]],10],14],[[11,11],14],[[6,6],14],[[7,7],14],[[8,8],14],[[[12,[2]],12],14],[[5,5],14],0,0,[[],15],[[],15],[[[10,[16]]],[[17,[15]]]],[7,15],[8,15],0,[[],3],[[],6],[[],7],[[],8],[13],[[],5],[[],[[18,[11]]]],[[],[[18,[6]]]],[[],[[18,[7]]]],[[],[[18,[8]]]],[19,[[18,[5]]]],[[],20],[[]],[[[10,[21]],10],22],[[11,11],22],[[6,6],22],[[7,7],22],[[8,8],22],[[[12,[21]],12],22],[[5,5],22],[[[3,[23]],24],25],[[[10,[23]],24],25],[[11,24],25],[[6,24],25],[[7,24],25],[[8,24],25],[[[12,[23]],24],25],[[5,24],25],[[5,24],25],[[5,24],25],[[5,24],25],[[]],[[]],[[]],[[[10,[8]]],11],[[]],[[],6],[[],6],[[]],[[]],[[]],[9,5],[[]],[[]],[[26,6,27]],[[26,6,27],6],[[26,6,27],7],[[26,6,27],8],[[],5],[[],5],[9,5],[[],[[18,[5,28]]]],[[],[[18,[5,28]]]],[29,[[18,[5]]]],[[],[[18,[6]]]],[[[10,[30]]]],[11],[6],[7],[8],[5],0,0,[[5,31]],[[[3,[[0,[1,2]]]],32],17],[[[3,[[0,[1,2]]]],33]],[[[3,[[0,[1,2]]]],34,35]],0,[[[3,[[0,[1,2]]]]]],[[[3,[[0,[1,2]]]],[0,[1,2]],36],22],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[6,6],[[18,[[17,[22]]]]]],[10,22],[11,22],[[[12,[16]],15],22],[[],22],[[[12,[16]],15],22],0,[[[3,[[0,[1,2]]]],33],22],[[[3,[[0,[1,2]]]],33],22],[[[3,[[0,[1,2]]]]],22],0,0,[[[3,[[0,[1,2]]]]],22],0,[[[3,[[0,[1,2]]]],33,[37,[[0,[1,2]]]]],38],[[],13],[[],13],[13,17],[[13,27],17],0,[[[3,[[0,[1,2]]]]],39],[[[3,[[0,[1,2]]]],[37,[[0,[1,2]]]]],40],[[[10,[41]],10],[[17,[14]]]],[[11,11],[[17,[14]]]],[[6,6],[[17,[14]]]],[[7,7],[[17,[14]]]],[[8,8],[[17,[14]]]],[[[12,[41]],12],[[17,[14]]]],[[5,5],[[17,[14]]]],[[[3,[[0,[1,2]]]],33],[[39,[[0,[1,2]]]]]],[[[3,[[0,[1,2]]]],34,35],17],[[[3,[[0,[1,2]]]],33,[37,[[0,[1,2]]]]]],[11,18],[6,18],[7,18],[8,18],[[5,42],18],0,[[[3,[[0,[1,2]]]]],[[17,[32]]]],0,[5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[5,9],[[],43],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],0,[[[3,[[0,[1,2]]]],34],17],0,[[[3,[[0,[1,2]]]]],[[0,[40,44]]]],[[[3,[[0,[1,2]]]],45],40],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[20,11],[[[3,[[0,[1,2]]]]],22],[[[3,[[0,[1,2]]]]],[[0,[40,1]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,[[[48,[16,47]],[48,[16,47]]]],[[[50,[49]],26,15],48],[[[50,[49]],26,15],48],[[]],[[[50,[16,49]],[48,[16]]]],[[[50,[16,49]],[51,[16]]],[[48,[16]]]],[[[50,[16,49]],52],[[48,[16]]]],[[[50,[16,49]],52],[[48,[16]]]],[[[50,[16,49]],52],[[48,[16]]]],[[]],[[]],[[]],[[]],[[[48,[1,1]]],[[48,[1,1]]]],[[]],[[],[[50,[53]]]],[[],[[48,[53]]]],[[],[[18,[48]]]],[[[48,[21,21]],48],22],[[[50,[23,23]],24],25],[[[48,[23,23]],24],25],[[]],[54,[[48,[54]]]],[[]],[55,[[48,[53]]]],[50,51],0,0,[33],[[34,35]],0,[[]],[[[50,[16,49]]],[[48,[16]]]],[[[50,[16,49]],45,16],[[48,[16]]]],[[[50,[16,49]],45,20],[[48,[16]]]],[[[50,[16,49]],33],[[48,[16]]]],[[[50,[16,49]],34,35],[[48,[16]]]],[[]],[[]],[[[48,[16,47]]],22],[33,22],[[],50],[48,18],[[]],[[],18],[[],18],[[],18],[[],18],[[],46],[[],46],[[]],[[]],0,0,0,[[56,56],56],[[[57,[[0,[1,2,23]]]]],[[4,[[0,[1,2,23]],[13,[[59,[58]]]]]]]],[[[54,[2]],[54,[2]]]],[[[57,[[0,[1,2,23]]]]]],[[[57,[[0,[1,2,23]]]],[54,[[0,[1,2,23]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[[54,[1]]],[[54,[1]]]],[[[57,[1]]],[[57,[1]]]],[56,56],[[]],[[]],[[]],0,[[],54],[[],57],[[],56],[[],[[18,[54]]]],[[],[[18,[56]]]],[[[54,[21]],54],22],[[56,56],22],[[[54,[23]],24],25],[[[57,[23]],24],25],[[56,24],25],[[56,24],25],[[]],[[]],[[]],[[[57,[[0,[1,2,23]]]]],[[17,[59]]]],0,[[[57,[[0,[1,2,23]]]],32],17],[[[57,[[0,[1,2,23]]]],33]],[[[57,[[0,[1,2,23]]]],34,35]],[[[57,[[0,[1,2,23]]]]]],[[[57,[[0,[1,2,23]]]]],3],[[[57,[[0,[1,2,23]]]],[0,[1,2,23]],[59,[58]]],[[54,[[0,[1,2,23]]]]]],[[]],[[]],[[]],[[[54,[2]]],22],[[[57,[[0,[1,2,23]]]],33],22],[[[57,[[0,[1,2,23]]]],[0,[1,2,23]],15],22],[[[57,[[0,[1,2,23]]]]],40],[[[57,[[0,[1,2,23]]]],[37,[[0,[1,2,23]]]]],40],[[[57,[[0,[1,2,23]]]]],[[0,[40,44]]]],0,0,[[[57,[[0,[1,2,23]]]]],[[17,[15]]]],[[[57,[[0,[1,2,23]]]]],[[4,[[0,[1,2,23]],15]]]],[[[57,[[0,[1,2,23]]]]],[[17,[15]]]],[[[57,[[0,[1,2,23]]]]],[[4,[[0,[1,2,23]],15]]]],[[[57,[[0,[1,2,23]]]]],15],[[[57,[[0,[1,2,23]]]],15]],[[[57,[[0,[1,2,23]]]],[0,[1,2,23]],15],22],[[[57,[[0,[1,2,23]]]],33,[37,[[0,[1,2,23]]]]],38],[15,57],[[[57,[[0,[1,2,23]]]]],17],[[[57,[[0,[1,2,23]]]]],17],[[[57,[[0,[1,2,23]]]]],40],[[[57,[[0,[1,2,23]]]]],17],[[[57,[[0,[1,2,23]]]],15],17],[[[57,[[0,[1,2,23]]]],4]],[[[57,[[0,[1,2,23]]]]],40],[[[57,[[0,[1,2,23]]]],[37,[[0,[1,2,23]]]]],[[0,[40,1]]]],[[[57,[[0,[1,2,23]]]],33,[37,[[0,[1,2,23]]]]]],[54,18],[56,18],[[[57,[[0,[1,2,23]]]],[0,[1,2,23]],15],[[17,[32]]]],[[]],[[]],[[]],[[],43],[56,60],0,[56,60],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[[57,[[0,[1,2,23]]]],34],17],[[[57,[[0,[1,2,23]]]]],40],[[[57,[[0,[1,2,23]]]],45],40],[[],46],[[],46],[[],46],[[[57,[[0,[1,2,23]]]]],[[17,[[13,[[59,[58]]]]]]]],[[[57,[[0,[1,2,23]]]],[0,[1,2,23]],15],22],0,[[[57,[[0,[1,2,23]]]]],[[0,[40,1]]]],[[[57,[[0,[1,2,23]]]]],[[0,[40,1]]]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,[[61,62],[[18,[63]]]],[[61,64,15],[[18,[62,65]]]],[[61,64,15,6],[[18,[62,66]]]],[[61,67],[[18,[62,65]]]],[67,6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[67,67],[61,61],[63,63],[68,68],[65,65],[66,66],[[]],[[]],[[]],[[]],[[]],[[]],[[61,6],[[18,[62,63]]]],[[67,67],22],[[61,61],22],[[63,63],22],[[68,68],22],[[65,65],22],[[66,66],22],[[67,52],[[18,[67,67]]]],[[67,24],25],[[61,24],25],[[63,24],25],[[63,24],25],[[68,24],25],[[68,24],25],[[65,24],25],[[65,24],25],[[66,24],25],[[66,24],25],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[52,[[18,[67,[17,[67]]]]]],[[[4,[15,69]]],[[18,[61,63]]]],[62,[[18,[61,63]]]],[69],[[64,15],67],[67,[[18,[61,63]]]],[61,69],[[67,15],[[17,[67]]]],[[61,15],[[17,[67]]]],[61,[[18,[6]]]],[67,69],[67,15],0,[61,62],[[67,6],67],[[61,6],[[18,[62,68]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[67],[[61,6,6],[[18,[[17,[22]]]]]],[67,70],[61,70],[6,67],[70,17],0,[67,[[17,[67]]]],[71],[71],[71],[71],[[67,6],[[18,[67,67]]]],[67,72],[61,72],[61,67],[[]],[[]],[[]],[[]],[[]],[[]],[[],43],[[],43],[[],43],[[],43],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],0,[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[73,52],73],[[73,52],73],[[[74,[[0,[2,1]]]],[0,[2,1]],52],[[74,[[0,[2,1]]]]]],0,0,[[73,52],73],0,0,[[]],[[]],[[]],[[]],[67,73],[67,[[74,[[0,[2,1]]]]]],[[67,57],[[74,[[0,[2,1]]]]]],0,0,[[73,[0,[75,76,77]]],73],[[73,[0,[75,76,77]]],73],[[[74,[[0,[2,1]]]],[0,[75,76,77,1]]],[[74,[[0,[2,1]]]]]],[[[74,[[0,[2,1]]]],[0,[2,1]],[0,[75,76,77]]],[[74,[[0,[2,1]]]]]],[[73,[0,[75,76,77]]],73],[[]],[[]],[[]],[[]],0,0,[[73,57,[37,[[0,[1,2,23,76,77]]]]],73],[[73,52],73],[[73,52],73],[[[74,[[0,[2,1]]]],[0,[2,1]],52],[[74,[[0,[2,1]]]]]],[[73,52],73],0,0,[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],0,[[],46],[[],46],[[],46],[[],46],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,[51,39],[51,72],[55,72],0,0,[[[55,[2]],[55,[2]]]],[[[51,[[0,[1,2]]]],[55,[[0,[1,2]]]]]],[[[51,[[0,[1,2]]]],[51,[[0,[1,2]]]]],[[55,[[0,[1,2]]]]]],[51,51],[[[51,[16]],6,52,75],56],[[[51,[[0,[1,2]]]],52],[[55,[[0,[1,2]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[51,33],[[18,[20,78]]]],0,[[],[[17,[38]]]],[[],[[17,[60]]]],[[],[[17,[60]]]],[[],[[17,[38]]]],[[[51,[1]]],[[51,[1]]]],[[[79,[1,1]]],[[79,[1,1]]]],[[[80,[1,1]]],[[80,[1,1]]]],[[[55,[1]]],[[55,[1]]]],[[]],[[]],[[]],[[]],[[[79,[2,2]],79],14],[[[80,[2,2]],80],14],[[],51],[[],55],[79],[[],[[18,[55]]]],[[51,33],72],[[[51,[21]],51],22],[[[79,[21,21]],79],22],[[[80,[21,21]],80],22],[[78,78],22],[[[55,[21]],55],22],[[[51,[16]],6,52],72],[[[51,[16]],6,52],72],[51,72],[[[51,[23]],24],25],[[[79,[23,23]],24],25],[[[80,[23,23]],24],25],[[78,24],25],[[78,24],25],[[[55,[23]],24],25],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[51,72],[[[51,[16]],6,45],[[17,[10]]]],[[[51,[16]],6,34],17],[[51,45],[[17,[[81,[33]]]]]],[[51,45],[[17,[[79,[[81,[33]]]]]]]],[[51,34],[[17,[35]]]],[[[51,[[0,[1,2]]]]],[[55,[[0,[1,2]]]]]],[[[51,[[0,[1,2]]]],45,[0,[1,2]]],[[55,[[0,[1,2]]]]]],[[[51,[[0,[1,2]]]],45,20],[[55,[[0,[1,2]]]]]],[[[51,[[0,[1,2]]]],33],[[55,[[0,[1,2]]]]]],[[[51,[[0,[1,2]]]],34,35],[[55,[[0,[1,2]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[51,22],[[[55,[2]]],22],0,0,[[[51,[16]],6],72],[[[51,[[0,[1,2]]]]],[[51,[[0,[1,2]]]]]],[[[55,[2]]],[[55,[2]]]],[52,[[51,[[0,[1,2]]]]]],[82,17],[83,17],[[51,34],84],[[[79,[41,41]],79],[[17,[14]]]],[[[80,[41,41]],80],[[17,[14]]]],[71],[55,18],[[]],[[]],[[]],[[]],[[],43],[[[51,[16]],6,52,75],[[18,[56]]]],[[[51,[16]],6,52],72],[[[51,[16]],6,52],72],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[[51,[16]],6,45],[[18,[[17,[10]]]]]],[[[51,[16]],6,34],[[18,[17]]]],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[[51,[16]],6],72],0,0,[[51,45],[[17,[[4,[15,35]]]]]],[[51,45],40],0,[55,72],0,0,[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[[51,[[0,[1,2]]]],20],[[55,[[0,[1,2]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[51,[[0,[1,2]]]]],[[82,[[0,[1,2]]]]]],[[51,33],83],[[[51,[[0,[1,2]]]],45],[[83,[[0,[1,2]]]]]]],"p":[[8,"Clone"],[8,"Ord"],[3,"SpkTxOutIndex"],[3,"BTreeMap"],[3,"DescriptorId"],[3,"BlockId"],[3,"ConfirmationHeightAnchor"],[3,"ConfirmationTimeHeightAnchor"],[3,"Hash"],[4,"ChainPosition"],[4,"ConfirmationTime"],[3,"FullTxOut"],[3,"SpkIterator"],[4,"Ordering"],[15,"u32"],[8,"Anchor"],[4,"Option"],[4,"Result"],[8,"Deserializer"],[15,"u64"],[8,"PartialEq"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[3,"Block"],[15,"usize"],[3,"FromSliceError"],[15,"str"],[8,"Hash"],[8,"SliceIndex"],[3,"Script"],[3,"Transaction"],[3,"OutPoint"],[3,"TxOut"],[3,"ScriptBuf"],[8,"RangeBounds"],[3,"SignedAmount"],[3,"BTreeSet"],[8,"DoubleEndedIterator"],[8,"PartialOrd"],[8,"Serializer"],[3,"String"],[8,"ExactSizeIterator"],[3,"Txid"],[3,"TypeId"],[8,"Append"],[3,"ChangeSet"],[8,"Indexer"],[3,"IndexedTxGraph"],[3,"TxGraph"],[8,"IntoIterator"],[8,"Default"],[3,"ChangeSet"],[3,"ChangeSet"],[3,"Balance"],[3,"KeychainTxOutIndex"],[4,"DescriptorPublicKey"],[4,"Descriptor"],[3,"Amount"],[3,"LocalChain"],[6,"ChangeSet"],[3,"MissingGenesisError"],[3,"Header"],[3,"CannotConnectError"],[4,"ApplyHeaderError"],[3,"CheckPoint"],[3,"AlterCheckPointError"],[3,"BlockHash"],[3,"CheckPointIter"],[3,"Demand"],[8,"Iterator"],[3,"SyncRequest"],[3,"FullScanRequest"],[8,"FnMut"],[8,"Send"],[8,"Sync"],[4,"CalculateFeeError"],[3,"TxNode"],[3,"CanonicalTx"],[3,"Arc"],[3,"TxAncestors"],[3,"TxDescendants"],[3,"HashSet"],[8,"ChainOracle"],[8,"DescriptorExt"],[8,"AnchorFromBlockPosition"],[13,"Confirmed"],[13,"Unconfirmed"],[3,"SyncResult"],[3,"FullScanResult"]]},\ "bdk_coin_select":{"doc":"","t":[3,3,4,4,3,3,13,6,13,3,4,13,13,13,3,4,3,13,13,17,13,13,13,13,13,3,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,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,12,11,12,11,11,11,11,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,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,12,12,12,11,11,11,11,12,11,12,12,11,12,12,12,11,11,11,11,12,11,11,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,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,12,12,12,11],"n":["Bnb","BnbIter","BnbLimit","BranchStrategy","CoinSelector","CoinSelectorOpt","Continue","DecideStrategy","Duration","ExcessStrategy","ExcessStrategyKind","MinAbsoluteFee","MinDrainValue","Rounds","Selection","SelectionConstraint","SelectionError","SkipBoth","SkipInclusion","TXIN_BASE_WEIGHT","TargetFee","TargetValue","ToDrain","ToFee","ToRecipient","WeightedValue","advertise_new_score","all_selected","apply_selection","backtrack","base_weight","best_score","best_strategy","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","candidate","candidates","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","coin_select_bnb","current_excess","current_weight","deselect","drain_value","drain_waste","drain_weight","effective_target","effective_value","eq","eq","excess","excess_strategies","fee","feerate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward","from","from","from","from","from","from","from","from","from","from","from","from","from","from","fund_outputs","hash","input_count","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_segwit","is_selected","long_term_feerate","long_term_feerate","max_extra_target","min_absolute_fee","min_drain_value","new","new","new","next","opts","partial_cmp","pool","pool_pos","provide","recipient_value","rem_abs","rem_eff","select","select_all","select_until_finished","selected","selected","selected_absolute_value","selected_count","selected_effective_value","selected_indexes","selected_waste","selected_weight","selection","spend_drain_weight","target_feerate","target_value","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","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","unselected","unselected_indexes","value","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","waste","weight","weight","will_continue"],"q":["bdk_coin_select","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Bnb represents the current state of the BnB algorithm.","","Determines how we should limit rounds of branch and bound.","Strategy in which we should branch.","CoinSelector selects and deselects from a set of …","","We continue exploring subtrees of this node, starting with …","Closure to decide the branching strategy, alongside a …","","","","Min absolute fee is not met","Min drain value is not met","","","","","We skip both the inclusion and omission branches of this …","We continue exploring ONLY the omission branch of this …","Txin “base” fields include outpoint (32+4) and …","The target fee (given the feerate) is not met","The target is not met","","","","A WeightedValue represents an input candidate for …","Compare the advertised score with the current best. The …","","","Attempt to backtrack to the previously selected node’s …","The weight of the template transaction, including fixed …","","Returns the ExcessStrategy that results in the least waste.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This is a variation of the Branch and Bound Coin Selection …","Current excess.","Current weight of template tx + selected inputs.","","","","Additional weight if we include the drain (change) output.","This is the effective target value.","Effective value of this input candidate: …","","","","","","Returns feerate in sats/wu.","","","","","","","","","","","","","Continue down this branch and skip the inclusion branch if …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","The total number of inputs; so we can calculate extra …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Turns our Bnb state into an iterator.","","","Whether this WeightedValue contains at least one segwit …","","","The feerate","Additional leeway for the target value.","The minimum absolute fee. I.e., needed for RBF.","Minimum value allowed for a drain (change) output.","Creates a new Bnb.","Create a new WeightedValue that represents a single input.","","","","","","","","","","","","","","","","Absolute value sum of all selected inputs.","","Effective value sum of all selected inputs.","","Waste sum of all selected inputs.","Weight sum of all selected inputs.","","Weight of spending the drain (change) output in the future.","The feerate we should try and achieve in sats per weight …","The value we need to select. If the value is None, then …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Total value of the UTXO(s) that this WeightedValue …","","","","","","","","","","","","","","Total weight of including this/these UTXO(s). txin fields: …","",""],"i":[0,0,0,0,0,0,34,0,22,0,0,11,11,22,0,0,0,34,34,0,11,11,12,12,12,0,2,4,5,2,9,2,5,34,2,26,22,8,9,4,10,11,5,12,13,34,2,26,22,8,9,4,10,11,5,12,13,4,4,8,9,4,10,11,5,12,13,8,9,4,10,11,5,12,13,12,0,4,4,4,13,9,9,4,8,11,12,5,5,13,13,4,8,9,4,10,10,11,11,5,12,12,13,2,34,2,26,22,22,22,8,9,4,10,11,5,12,13,9,12,8,34,2,26,22,8,9,4,10,11,5,12,13,2,26,4,8,4,9,9,9,9,9,2,8,4,26,4,12,2,2,10,13,2,2,4,4,4,4,5,4,4,4,4,4,4,2,9,9,9,8,9,4,10,11,5,12,13,10,11,12,34,2,26,22,8,9,4,10,11,5,12,13,34,2,26,22,8,9,4,10,11,5,12,13,34,2,26,22,8,9,4,10,11,5,12,13,4,4,8,34,2,26,22,8,9,4,10,11,5,12,13,13,8,13,34],"f":[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,0,[[[2,[1]],1],3],[4,3],[5,6],[[[2,[1]]],3],0,0,[5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[4,7],8],0,[8,8],[9,9],[4,4],[10,10],[11,11],[5,5],[12,12],[13,13],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[12,12],14],[4,[[15,[4]]]],[4,16],[4,17],[[4,7],3],0,[9,16],0,[4,16],[[8,18],16],[[11,11],3],[[12,12],3],0,0,0,[13,18],[4,[[19,[5,10]]]],[[8,20],21],[[9,20],21],[[4,20],21],[[10,20],21],[[10,20],21],[[11,20],21],[[11,20],21],[[5,20],21],[[12,20],21],[[12,20],21],[[13,20],21],[[[2,[1]],3]],[[]],[[]],[[]],[[]],[7,22],[23,22],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[24,17],9],[12],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[2,[1]],25],[[26,[1]]]],[[]],[4,3],0,[[4,7],3],[9,18],0,0,0,0,[[4,27,1],[[2,[1]]]],[[28,17,3],8],[[27,9],4],[[[26,[[0,[1,29,30]]]]],15],0,[[12,12],[[15,[14]]]],0,0,[31],0,0,0,[[4,7],3],[4],[4,[[19,[5,10]]]],[4,6],0,[4,28],[4,7],[4,16],[4,6],[4,16],[4,17],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],32],[[],32],[[],32],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[4,6],[4,6],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[34,3]],"p":[[8,"Ord"],[3,"Bnb"],[15,"bool"],[3,"CoinSelector"],[3,"Selection"],[8,"Iterator"],[15,"usize"],[3,"WeightedValue"],[3,"CoinSelectorOpt"],[3,"SelectionError"],[4,"SelectionConstraint"],[4,"ExcessStrategyKind"],[3,"ExcessStrategy"],[4,"Ordering"],[4,"Option"],[15,"i64"],[15,"u32"],[15,"f32"],[4,"Result"],[3,"Formatter"],[6,"Result"],[4,"BnbLimit"],[3,"Duration"],[3,"TxOut"],[6,"DecideStrategy"],[3,"BnbIter"],[3,"Vec"],[15,"u64"],[8,"Copy"],[8,"Display"],[3,"Demand"],[3,"String"],[3,"TypeId"],[4,"BranchStrategy"]]},\ "bdk_electrum":{"doc":"This crate is used for updating structures of bdk_chain …","t":[8,3,3,2,11,11,11,11,12,11,11,11,2,11,11,11,11,10,11,11,11,11,11,12,10,11,11,11,11,11,11,11,11,11],"n":["ElectrumExt","ElectrumUpdate","RelevantTxids","bdk_chain","borrow","borrow","borrow_mut","borrow_mut","chain_update","clone","clone_into","default","electrum_client","fmt","fmt","from","from","full_scan","into","into","into_confirmation_time_tx_graph","into_tx_graph","missing_full_txs","relevant_txids","sync","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip"],"q":["bdk_electrum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Trait to extend Client functionality.","Combination of chain and transactions updates from electrum","Represents updates fetched from an Electrum server, but …","","","","","","Chain update","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Full scan the keychain scripts specified with the …","Calls U::from(self).","Calls U::from(self).","Finalizes the update by fetching missing txids from the …","Finalizes the TxGraph update by fetching missing txids …","Determine the full transactions that are missing from graph…","Transaction updates from electrum","Sync a set of scripts with the blockchain (via an Electrum …","","","","","","","","",""],"i":[0,0,0,0,1,4,1,4,4,1,1,1,0,1,4,1,4,20,1,4,1,1,1,4,20,1,1,4,1,4,1,4,1,4],"f":[0,0,0,0,[[]],[[]],[[]],[[]],0,[1,1],[[]],[[],1],0,[[1,2],3],[[4,2],3],[[]],[[]],[[5,[9,[[0,[6,7]],8]],10,10],[[12,[11]]]],[[]],[[]],[[1,13,[15,[14]]],[[12,[[17,[16]],11]]]],[[1,13,[15,[14]]],[[12,[[17,[18]],11]]]],[[1,17],[[15,[14]]]],0,[[5,8,8,8,10],[[12,[4,11]]]],[[]],[[],12],[[],12],[[],12],[[],12],[[],19],[[],19],[[]],[[]]],"p":[[3,"RelevantTxids"],[3,"Formatter"],[6,"Result"],[3,"ElectrumUpdate"],[3,"CheckPoint"],[8,"Ord"],[8,"Clone"],[8,"IntoIterator"],[3,"BTreeMap"],[15,"usize"],[4,"Error"],[4,"Result"],[3,"Client"],[3,"Txid"],[3,"Vec"],[3,"ConfirmationTimeHeightAnchor"],[3,"TxGraph"],[3,"ConfirmationHeightAnchor"],[3,"TypeId"],[8,"ElectrumExt"]]},\ "bdk_esplora":{"doc":"BDK Esplora","t":[6,8,8,2,10,10,10,10],"n":["Error","EsploraAsyncExt","EsploraExt","esplora_client","full_scan","full_scan","sync","sync"],"q":["bdk_esplora","","","","","","",""],"d":["esplora_client::Error","Trait to extend the functionality of …","Trait to extend the functionality of …","","Scan keychain scripts for transactions against Esplora, …","Scan keychain scripts for transactions against Esplora, …","Sync a set of scripts with the blockchain (via an Esplora …","Sync a set of scripts with the blockchain (via an Esplora …"],"i":[0,0,0,0,13,14,13,14],"f":[0,0,0,0,[[[3,[[0,[1,2]]]],4,4],[[7,[[5,[[0,[1,2]]]],6]]]],[[3,4,4],[[10,[[9,[8]]]]]],[[11,4],[[7,[12,6]]]],[[11,4],[[10,[[9,[8]]]]]]],"p":[[8,"Ord"],[8,"Clone"],[3,"FullScanRequest"],[15,"usize"],[3,"FullScanResult"],[6,"Error"],[4,"Result"],[8,"Future"],[3,"Box"],[3,"Pin"],[3,"SyncRequest"],[3,"SyncResult"],[8,"EsploraExt"],[8,"EsploraAsyncExt"]]},\ 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 4aef356b7e..58632cf5f8 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 @@ -2559,6 +2559,152 @@ 2558 2559 2560 +2561 +2562 +2563 +2564 +2565 +2566 +2567 +2568 +2569 +2570 +2571 +2572 +2573 +2574 +2575 +2576 +2577 +2578 +2579 +2580 +2581 +2582 +2583 +2584 +2585 +2586 +2587 +2588 +2589 +2590 +2591 +2592 +2593 +2594 +2595 +2596 +2597 +2598 +2599 +2600 +2601 +2602 +2603 +2604 +2605 +2606 +2607 +2608 +2609 +2610 +2611 +2612 +2613 +2614 +2615 +2616 +2617 +2618 +2619 +2620 +2621 +2622 +2623 +2624 +2625 +2626 +2627 +2628 +2629 +2630 +2631 +2632 +2633 +2634 +2635 +2636 +2637 +2638 +2639 +2640 +2641 +2642 +2643 +2644 +2645 +2646 +2647 +2648 +2649 +2650 +2651 +2652 +2653 +2654 +2655 +2656 +2657 +2658 +2659 +2660 +2661 +2662 +2663 +2664 +2665 +2666 +2667 +2668 +2669 +2670 +2671 +2672 +2673 +2674 +2675 +2676 +2677 +2678 +2679 +2680 +2681 +2682 +2683 +2684 +2685 +2686 +2687 +2688 +2689 +2690 +2691 +2692 +2693 +2694 +2695 +2696 +2697 +2698 +2699 +2700 +2701 +2702 +2703 +2704 +2705 +2706
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -2615,6 +2761,7 @@
     pub(crate) mod utils;
     
     pub mod error;
    +
     pub use utils::IsDust;
     
     use coin_selection::DefaultCoinSelectionAlgorithm;
    @@ -2866,6 +3013,8 @@
         MissingNetwork,
         /// Data loaded from persistence is missing genesis hash.
         MissingGenesis,
    +    /// Data loaded from persistence is missing descriptor.
    +    MissingDescriptor,
     }
     
     impl fmt::Display for LoadError {
    @@ -2878,6 +3027,7 @@
                 }
                 LoadError::MissingNetwork => write!(f, "loaded data is missing network type"),
                 LoadError::MissingGenesis => write!(f, "loaded data is missing genesis hash"),
    +            LoadError::MissingDescriptor => write!(f, "loaded data is missing descriptor"),
             }
         }
     }
    @@ -2913,6 +3063,13 @@
             /// The network type loaded from persistence.
             got: Option<Network>,
         },
    +    /// The loaded desccriptor does not match what was provided.
    +    LoadedDescriptorDoesNotMatch {
    +        /// The descriptor loaded from persistence.
    +        got: Option<ExtendedDescriptor>,
    +        /// The keychain of the descriptor not matching
    +        keychain: KeychainKind,
    +    },
     }
     
     impl fmt::Display for NewOrLoadError {
    @@ -2933,6 +3090,13 @@
                 NewOrLoadError::LoadedNetworkDoesNotMatch { expected, got } => {
                     write!(f, "loaded network type is not {}, got {:?}", expected, got)
                 }
    +            NewOrLoadError::LoadedDescriptorDoesNotMatch { got, keychain } => {
    +                write!(
    +                    f,
    +                    "loaded descriptor is different from what was provided, got {:?} for keychain {:?}",
    +                    got, keychain
    +                )
    +            }
             }
         }
     }
    @@ -3060,21 +3224,57 @@
         }
     
         /// Load [`Wallet`] from the given persistence backend.
    -    pub fn load<E: IntoWalletDescriptor>(
    -        descriptor: E,
    -        change_descriptor: Option<E>,
    +    ///
    +    /// Note that the descriptor secret keys are not persisted to the db; this means that after
    +    /// calling this method the [`Wallet`] **won't** know the secret keys, and as such, won't be
    +    /// able to sign transactions.
    +    ///
    +    /// If you wish to use the wallet to sign transactions, you need to add the secret keys
    +    /// manually to the [`Wallet`]:
    +    ///
    +    /// ```rust,no_run
    +    /// # use bdk::Wallet;
    +    /// # use bdk::signer::{SignersContainer, SignerOrdering};
    +    /// # use bdk::descriptor::Descriptor;
    +    /// # use bitcoin::key::Secp256k1;
    +    /// # use bdk::KeychainKind;
    +    /// # use bdk_file_store::Store;
    +    /// #
    +    /// # fn main() -> Result<(), anyhow::Error> {
    +    /// # let temp_dir = tempfile::tempdir().expect("must create tempdir");
    +    /// # let file_path = temp_dir.path().join("store.db");
    +    /// # let db: Store<bdk::wallet::ChangeSet> = Store::create_new(&[], &file_path).expect("must create db");
    +    /// let secp = Secp256k1::new();
    +    ///
    +    /// let (external_descriptor, external_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)").unwrap();
    +    /// let (internal_descriptor, internal_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)").unwrap();
    +    ///
    +    /// let external_signer_container = SignersContainer::build(external_keymap, &external_descriptor, &secp);
    +    /// let internal_signer_container = SignersContainer::build(internal_keymap, &internal_descriptor, &secp);
    +    ///
    +    /// let mut wallet = Wallet::load(db)?;
    +    ///
    +    /// external_signer_container.signers().into_iter()
    +    ///     .for_each(|s| wallet.add_signer(KeychainKind::External, SignerOrdering::default(), s.clone()));
    +    /// internal_signer_container.signers().into_iter()
    +    ///     .for_each(|s| wallet.add_signer(KeychainKind::Internal, SignerOrdering::default(), s.clone()));
    +    /// # Ok(())
    +    /// # }
    +    /// ```
    +    ///
    +    /// Alternatively, you can call [`Wallet::new_or_load`], which will add the private keys of the
    +    /// passed-in descriptors to the [`Wallet`].
    +    pub fn load(
             mut db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
         ) -> Result<Self, LoadError> {
             let changeset = db
                 .load_from_persistence()
                 .map_err(LoadError::Persist)?
                 .ok_or(LoadError::NotInitialized)?;
    -        Self::load_from_changeset(descriptor, change_descriptor, db, changeset)
    +        Self::load_from_changeset(db, changeset)
         }
     
    -    fn load_from_changeset<E: IntoWalletDescriptor>(
    -        descriptor: E,
    -        change_descriptor: Option<E>,
    +    fn load_from_changeset(
             db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
             changeset: ChangeSet,
         ) -> Result<Self, LoadError> {
    @@ -3083,10 +3283,23 @@
             let chain =
                 LocalChain::from_changeset(changeset.chain).map_err(|_| LoadError::MissingGenesis)?;
             let mut index = KeychainTxOutIndex::<KeychainKind>::default();
    +        let descriptor = changeset
    +            .indexed_tx_graph
    +            .indexer
    +            .keychains_added
    +            .get(&KeychainKind::External)
    +            .ok_or(LoadError::MissingDescriptor)?
    +            .clone();
    +        let change_descriptor = changeset
    +            .indexed_tx_graph
    +            .indexer
    +            .keychains_added
    +            .get(&KeychainKind::Internal)
    +            .cloned();
     
             let (signers, change_signers) =
                 create_signers(&mut index, &secp, descriptor, change_descriptor, network)
    -                .map_err(LoadError::Descriptor)?;
    +                .expect("Can't fail: we passed in valid descriptors, recovered from the changeset");
     
             let mut indexed_graph = IndexedTxGraph::new(index);
             indexed_graph.apply_changeset(changeset.indexed_tx_graph);
    @@ -3123,8 +3336,8 @@
             )
         }
     
    -    /// Either loads [`Wallet`] from persistence, or initializes it if it does not exist (with a
    -    /// custom genesis hash).
    +    /// Either loads [`Wallet`] from persistence, or initializes it if it does not exist, using the
    +    /// provided descriptor, change descriptor, network, and custom genesis hash.
         ///
         /// This method will fail if the loaded [`Wallet`] has different parameters to those provided.
         /// This is like [`Wallet::new_or_load`] with an additional `genesis_hash` parameter. This is
    @@ -3141,25 +3354,23 @@
                 .map_err(NewOrLoadError::Persist)?;
             match changeset {
                 Some(changeset) => {
    -                let wallet =
    -                    Self::load_from_changeset(descriptor, change_descriptor, db, changeset)
    -                        .map_err(|e| match e {
    -                            LoadError::Descriptor(e) => NewOrLoadError::Descriptor(e),
    -                            LoadError::Persist(e) => NewOrLoadError::Persist(e),
    -                            LoadError::NotInitialized => NewOrLoadError::NotInitialized,
    -                            LoadError::MissingNetwork => {
    -                                NewOrLoadError::LoadedNetworkDoesNotMatch {
    -                                    expected: network,
    -                                    got: None,
    -                                }
    -                            }
    -                            LoadError::MissingGenesis => {
    -                                NewOrLoadError::LoadedGenesisDoesNotMatch {
    -                                    expected: genesis_hash,
    -                                    got: None,
    -                                }
    -                            }
    -                        })?;
    +                let mut wallet = Self::load_from_changeset(db, changeset).map_err(|e| match e {
    +                    LoadError::Descriptor(e) => NewOrLoadError::Descriptor(e),
    +                    LoadError::Persist(e) => NewOrLoadError::Persist(e),
    +                    LoadError::NotInitialized => NewOrLoadError::NotInitialized,
    +                    LoadError::MissingNetwork => NewOrLoadError::LoadedNetworkDoesNotMatch {
    +                        expected: network,
    +                        got: None,
    +                    },
    +                    LoadError::MissingGenesis => NewOrLoadError::LoadedGenesisDoesNotMatch {
    +                        expected: genesis_hash,
    +                        got: None,
    +                    },
    +                    LoadError::MissingDescriptor => NewOrLoadError::LoadedDescriptorDoesNotMatch {
    +                        got: None,
    +                        keychain: KeychainKind::External,
    +                    },
    +                })?;
                     if wallet.network != network {
                         return Err(NewOrLoadError::LoadedNetworkDoesNotMatch {
                             expected: network,
    @@ -3172,6 +3383,73 @@
                             got: Some(wallet.chain.genesis_hash()),
                         });
                     }
    +
    +                let (expected_descriptor, expected_descriptor_keymap) = descriptor
    +                    .into_wallet_descriptor(&wallet.secp, network)
    +                    .map_err(NewOrLoadError::Descriptor)?;
    +                let wallet_descriptor = wallet.public_descriptor(KeychainKind::External).cloned();
    +                if wallet_descriptor != Some(expected_descriptor.clone()) {
    +                    return Err(NewOrLoadError::LoadedDescriptorDoesNotMatch {
    +                        got: wallet_descriptor,
    +                        keychain: KeychainKind::External,
    +                    });
    +                }
    +                // if expected descriptor has private keys add them as new signers
    +                if !expected_descriptor_keymap.is_empty() {
    +                    let signer_container = SignersContainer::build(
    +                        expected_descriptor_keymap,
    +                        &expected_descriptor,
    +                        &wallet.secp,
    +                    );
    +                    signer_container.signers().into_iter().for_each(|signer| {
    +                        wallet.add_signer(
    +                            KeychainKind::External,
    +                            SignerOrdering::default(),
    +                            signer.clone(),
    +                        )
    +                    });
    +                }
    +
    +                let expected_change_descriptor = if let Some(c) = change_descriptor {
    +                    Some(
    +                        c.into_wallet_descriptor(&wallet.secp, network)
    +                            .map_err(NewOrLoadError::Descriptor)?,
    +                    )
    +                } else {
    +                    None
    +                };
    +                let wallet_change_descriptor =
    +                    wallet.public_descriptor(KeychainKind::Internal).cloned();
    +
    +                match (expected_change_descriptor, wallet_change_descriptor) {
    +                    (Some((expected_descriptor, expected_keymap)), Some(wallet_descriptor))
    +                        if wallet_descriptor == expected_descriptor =>
    +                    {
    +                        // if expected change descriptor has private keys add them as new signers
    +                        if !expected_keymap.is_empty() {
    +                            let signer_container = SignersContainer::build(
    +                                expected_keymap,
    +                                &expected_descriptor,
    +                                &wallet.secp,
    +                            );
    +                            signer_container.signers().into_iter().for_each(|signer| {
    +                                wallet.add_signer(
    +                                    KeychainKind::Internal,
    +                                    SignerOrdering::default(),
    +                                    signer.clone(),
    +                                )
    +                            });
    +                        }
    +                    }
    +                    (None, None) => (),
    +                    (_, wallet_descriptor) => {
    +                        return Err(NewOrLoadError::LoadedDescriptorDoesNotMatch {
    +                            got: wallet_descriptor,
    +                            keychain: KeychainKind::Internal,
    +                        });
    +                    }
    +                }
    +
                     Ok(wallet)
                 }
                 None => Self::new_with_genesis_hash(
    @@ -3197,7 +3475,7 @@
         }
     
         /// Iterator over all keychains in this wallet
    -    pub fn keychains(&self) -> &BTreeMap<KeychainKind, ExtendedDescriptor> {
    +    pub fn keychains(&self) -> impl Iterator<Item = (&KeychainKind, &ExtendedDescriptor)> {
             self.indexed_graph.index.keychains()
         }
     
    @@ -3211,7 +3489,11 @@
         /// [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) max index.
         pub fn peek_address(&self, keychain: KeychainKind, mut index: u32) -> AddressInfo {
             let keychain = self.map_keychain(keychain);
    -        let mut spk_iter = self.indexed_graph.index.unbounded_spk_iter(&keychain);
    +        let mut spk_iter = self
    +            .indexed_graph
    +            .index
    +            .unbounded_spk_iter(&keychain)
    +            .expect("Must exist (we called map_keychain)");
             if !spk_iter.descriptor().has_wildcard() {
                 index = 0;
             }
    @@ -3238,7 +3520,11 @@
         /// If writing to persistent storage fails.
         pub fn reveal_next_address(&mut self, keychain: KeychainKind) -> anyhow::Result<AddressInfo> {
             let keychain = self.map_keychain(keychain);
    -        let ((index, spk), index_changeset) = self.indexed_graph.index.reveal_next_spk(&keychain);
    +        let ((index, spk), index_changeset) = self
    +            .indexed_graph
    +            .index
    +            .reveal_next_spk(&keychain)
    +            .expect("Must exist (we called map_keychain)");
     
             self.persist
                 .stage_and_commit(indexed_tx_graph::ChangeSet::from(index_changeset).into())?;
    @@ -3266,8 +3552,11 @@
             index: u32,
         ) -> anyhow::Result<impl Iterator<Item = AddressInfo> + '_> {
             let keychain = self.map_keychain(keychain);
    -        let (spk_iter, index_changeset) =
    -            self.indexed_graph.index.reveal_to_target(&keychain, index);
    +        let (spk_iter, index_changeset) = self
    +            .indexed_graph
    +            .index
    +            .reveal_to_target(&keychain, index)
    +            .expect("must exist (we called map_keychain)");
     
             self.persist
                 .stage_and_commit(indexed_tx_graph::ChangeSet::from(index_changeset).into())?;
    @@ -3290,7 +3579,11 @@
         /// If writing to persistent storage fails.
         pub fn next_unused_address(&mut self, keychain: KeychainKind) -> anyhow::Result<AddressInfo> {
             let keychain = self.map_keychain(keychain);
    -        let ((index, spk), index_changeset) = self.indexed_graph.index.next_unused_spk(&keychain);
    +        let ((index, spk), index_changeset) = self
    +            .indexed_graph
    +            .index
    +            .next_unused_spk(&keychain)
    +            .expect("must exist (we called map_keychain)");
     
             self.persist
                 .stage_and_commit(indexed_tx_graph::ChangeSet::from(index_changeset).into())?;
    @@ -3360,7 +3653,7 @@
                 .filter_chain_unspents(
                     &self.chain,
                     self.chain.tip().block_id(),
    -                self.indexed_graph.index.outpoints().iter().cloned(),
    +                self.indexed_graph.index.outpoints(),
                 )
                 .map(|((k, i), full_txo)| new_local_utxo(k, i, full_txo))
         }
    @@ -3374,7 +3667,7 @@
                 .filter_chain_txouts(
                     &self.chain,
                     self.chain.tip().block_id(),
    -                self.indexed_graph.index.outpoints().iter().cloned(),
    +                self.indexed_graph.index.outpoints(),
                 )
                 .map(|((k, i), full_txo)| new_local_utxo(k, i, full_txo))
         }
    @@ -3412,7 +3705,11 @@
             &self,
             keychain: KeychainKind,
         ) -> impl Iterator<Item = (u32, ScriptBuf)> + Clone {
    -        self.indexed_graph.index.unbounded_spk_iter(&keychain)
    +        let keychain = self.map_keychain(keychain);
    +        self.indexed_graph
    +            .index
    +            .unbounded_spk_iter(&keychain)
    +            .expect("Must exist (we called map_keychain)")
         }
     
         /// Returns the utxo owned by this wallet corresponding to `outpoint` if it exists in the
    @@ -3694,7 +3991,7 @@
             self.indexed_graph.graph().balance(
                 &self.chain,
                 self.chain.tip().block_id(),
    -            self.indexed_graph.index.outpoints().iter().cloned(),
    +            self.indexed_graph.index.outpoints(),
                 |&(k, _), _| k == KeychainKind::Internal,
             )
         }
    @@ -3781,17 +4078,9 @@
             coin_selection: Cs,
             params: TxParams,
         ) -> Result<Psbt, CreateTxError> {
    -        let external_descriptor = self
    -            .indexed_graph
    -            .index
    -            .keychains()
    -            .get(&KeychainKind::External)
    -            .expect("must exist");
    -        let internal_descriptor = self
    -            .indexed_graph
    -            .index
    -            .keychains()
    -            .get(&KeychainKind::Internal);
    +        let keychains: BTreeMap<_, _> = self.indexed_graph.index.keychains().collect();
    +        let external_descriptor = keychains.get(&KeychainKind::External).expect("must exist");
    +        let internal_descriptor = keychains.get(&KeychainKind::Internal);
     
             let external_policy = external_descriptor
                 .extract_policy(&self.signers, BuildSatisfaction::None, &self.secp)?
    @@ -4025,8 +4314,11 @@
                 Some(ref drain_recipient) => drain_recipient.clone(),
                 None => {
                     let change_keychain = self.map_keychain(KeychainKind::Internal);
    -                let ((index, spk), index_changeset) =
    -                    self.indexed_graph.index.next_unused_spk(&change_keychain);
    +                let ((index, spk), index_changeset) = self
    +                    .indexed_graph
    +                    .index
    +                    .next_unused_spk(&change_keychain)
    +                    .expect("Keychain exists (we called map_keychain)");
                     let spk = spk.into();
                     self.indexed_graph.index.mark_used(change_keychain, index);
                     self.persist
    @@ -4386,7 +4678,11 @@
         ///
         /// This can be used to build a watch-only version of a wallet
         pub fn public_descriptor(&self, keychain: KeychainKind) -> Option<&ExtendedDescriptor> {
    -        self.indexed_graph.index.keychains().get(&keychain)
    +        self.indexed_graph
    +            .index
    +            .keychains()
    +            .find(|(k, _)| *k == &keychain)
    +            .map(|(_, d)| d)
         }
     
         /// Finalize a PSBT, i.e., for each input determine if sufficient data is available to pass
    @@ -4437,17 +4733,9 @@
                     .get_utxo_for(n)
                     .and_then(|txout| self.get_descriptor_for_txout(&txout))
                     .or_else(|| {
    -                    self.indexed_graph
    -                        .index
    -                        .keychains()
    -                        .iter()
    -                        .find_map(|(_, desc)| {
    -                            desc.derive_from_psbt_input(
    -                                psbt_input,
    -                                psbt.get_utxo_for(n),
    -                                &self.secp,
    -                            )
    -                        })
    +                    self.indexed_graph.index.keychains().find_map(|(_, desc)| {
    +                        desc.derive_from_psbt_input(psbt_input, psbt.get_utxo_for(n), &self.secp)
    +                    })
                     });
     
                 match desc {
    @@ -4513,7 +4801,12 @@
     
         /// The index of the next address that you would get if you were to ask the wallet for a new address
         pub fn next_derivation_index(&self, keychain: KeychainKind) -> u32 {
    -        self.indexed_graph.index.next_index(&keychain).0
    +        let keychain = self.map_keychain(keychain);
    +        self.indexed_graph
    +            .index
    +            .next_index(&keychain)
    +            .expect("Keychain must exist (we called map_keychain)")
    +            .0
         }
     
         /// Informs the wallet that you no longer intend to broadcast a tx that was built from it.
    @@ -4680,7 +4973,6 @@
             if params.add_global_xpubs {
                 let all_xpubs = self
                     .keychains()
    -                .iter()
                     .flat_map(|(_, desc)| desc.get_extended_keys())
                     .collect::<Vec<_>>();
     
    @@ -5057,13 +5349,13 @@
     ) -> Result<(Arc<SignersContainer>, Arc<SignersContainer>), crate::descriptor::error::Error> {
         let (descriptor, keymap) = into_wallet_descriptor_checked(descriptor, secp, network)?;
         let signers = Arc::new(SignersContainer::build(keymap, &descriptor, secp));
    -    index.add_keychain(KeychainKind::External, descriptor);
    +    let _ = index.insert_descriptor(KeychainKind::External, descriptor);
     
         let change_signers = match change_descriptor {
             Some(descriptor) => {
                 let (descriptor, keymap) = into_wallet_descriptor_checked(descriptor, secp, network)?;
                 let signers = Arc::new(SignersContainer::build(keymap, &descriptor, secp));
    -            index.add_keychain(KeychainKind::Internal, descriptor);
    +            let _ = index.insert_descriptor(KeychainKind::Internal, descriptor);
                 signers
             }
             None => Arc::new(SignersContainer::new()),
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/descriptor_ext.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/descriptor_ext.rs.html
    index 098af8addf..10c8da4d6a 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/descriptor_ext.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/descriptor_ext.rs.html
    @@ -16,13 +16,58 @@
     16
     17
     18
    -
    use crate::miniscript::{Descriptor, DescriptorPublicKey};
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +
    use crate::{
    +    alloc::{string::ToString, vec::Vec},
    +    miniscript::{Descriptor, DescriptorPublicKey},
    +};
    +use bitcoin::hashes::{hash_newtype, sha256, Hash};
    +
    +hash_newtype! {
    +    /// Represents the ID of a descriptor, defined as the sha256 hash of
    +    /// the descriptor string, checksum excluded.
    +    ///
    +    /// This is useful for having a fixed-length unique representation of a descriptor,
    +    /// in particular, we use it to persist application state changes related to the
    +    /// descriptor without having to re-write the whole descriptor each time.
    +    ///
    +    pub struct DescriptorId(pub sha256::Hash);
    +}
     
     /// A trait to extend the functionality of a miniscript descriptor.
     pub trait DescriptorExt {
         /// Returns the minimum value (in satoshis) at which an output is broadcastable.
         /// Panics if the descriptor wildcard is hardened.
         fn dust_value(&self) -> u64;
    +
    +    /// Returns the descriptor id, calculated as the sha256 of the descriptor, checksum not
    +    /// included.
    +    fn descriptor_id(&self) -> DescriptorId;
     }
     
     impl DescriptorExt for Descriptor<DescriptorPublicKey> {
    @@ -33,6 +78,13 @@
                 .dust_value()
                 .to_sat()
         }
    +
    +    fn descriptor_id(&self) -> DescriptorId {
    +        let desc = self.to_string();
    +        let desc_without_checksum = desc.split('#').next().expect("Must be here");
    +        let descriptor_bytes = <Vec<u8>>::from(desc_without_checksum.as_bytes());
    +        DescriptorId(sha256::Hash::hash(&descriptor_bytes))
    +    }
     }
     
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html index 1be61fd130..ce18ece41a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html @@ -358,7 +358,6 @@ use bitcoin::{Block, OutPoint, Transaction, TxOut, Txid}; use crate::{ - keychain, tx_graph::{self, TxGraph}, Anchor, AnchorFromBlockPosition, Append, BlockId, }; @@ -674,8 +673,9 @@ } } -impl<A, K> From<keychain::ChangeSet<K>> for ChangeSet<A, keychain::ChangeSet<K>> { - fn from(indexer: keychain::ChangeSet<K>) -> Self { +#[cfg(feature = "miniscript")] +impl<A, K> From<crate::keychain::ChangeSet<K>> for ChangeSet<A, crate::keychain::ChangeSet<K>> { + fn from(indexer: crate::keychain::ChangeSet<K>) -> Self { Self { graph: Default::default(), indexer, diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain.rs.html index 988e503967..ecfd61cbd4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain.rs.html @@ -71,109 +71,6 @@ 71 72 73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176
    //! Module for keychain related structures.
     //!
     //! A keychain here is a set of application-defined indexes for a miniscript descriptor where we can
    @@ -186,78 +83,12 @@
     //!
     //! [`SpkTxOutIndex`]: crate::SpkTxOutIndex
     
    -use crate::{collections::BTreeMap, Append};
    -
    -#[cfg(feature = "miniscript")]
    +#[cfg(feature = "miniscript")]
     mod txout_index;
     use bitcoin::Amount;
     #[cfg(feature = "miniscript")]
     pub use txout_index::*;
     
    -/// Represents updates to the derivation index of a [`KeychainTxOutIndex`].
    -/// It maps each keychain `K` to its last revealed index.
    -///
    -/// It can be applied to [`KeychainTxOutIndex`] with [`apply_changeset`]. [`ChangeSet`]s are
    -/// monotone in that they will never decrease the revealed derivation index.
    -///
    -/// [`KeychainTxOutIndex`]: crate::keychain::KeychainTxOutIndex
    -/// [`apply_changeset`]: crate::keychain::KeychainTxOutIndex::apply_changeset
    -#[derive(Clone, Debug, PartialEq)]
    -#[cfg_attr(
    -    feature = "serde",
    -    derive(serde::Deserialize, serde::Serialize),
    -    serde(
    -        crate = "serde_crate",
    -        bound(
    -            deserialize = "K: Ord + serde::Deserialize<'de>",
    -            serialize = "K: Ord + serde::Serialize"
    -        )
    -    )
    -)]
    -#[must_use]
    -pub struct ChangeSet<K>(pub BTreeMap<K, u32>);
    -
    -impl<K> ChangeSet<K> {
    -    /// Get the inner map of the keychain to its new derivation index.
    -    pub fn as_inner(&self) -> &BTreeMap<K, u32> {
    -        &self.0
    -    }
    -}
    -
    -impl<K: Ord> Append for ChangeSet<K> {
    -    /// Append another [`ChangeSet`] into self.
    -    ///
    -    /// If the keychain already exists, increase the index when the other's index > self's index.
    -    /// If the keychain did not exist, append the new keychain.
    -    fn append(&mut self, mut other: Self) {
    -        self.0.iter_mut().for_each(|(key, index)| {
    -            if let Some(other_index) = other.0.remove(key) {
    -                *index = other_index.max(*index);
    -            }
    -        });
    -        // We use `extend` instead of `BTreeMap::append` due to performance issues with `append`.
    -        // Refer to https://github.com/rust-lang/rust/issues/34666#issuecomment-675658420
    -        self.0.extend(other.0);
    -    }
    -
    -    /// Returns whether the changeset are empty.
    -    fn is_empty(&self) -> bool {
    -        self.0.is_empty()
    -    }
    -}
    -
    -impl<K> Default for ChangeSet<K> {
    -    fn default() -> Self {
    -        Self(Default::default())
    -    }
    -}
    -
    -impl<K> AsRef<BTreeMap<K, u32>> for ChangeSet<K> {
    -    fn as_ref(&self) -> &BTreeMap<K, u32> {
    -        &self.0
    -    }
    -}
    -
     /// Balance, differentiated into various categories.
     #[derive(Debug, PartialEq, Eq, Clone, Default)]
     #[cfg_attr(
    @@ -313,42 +144,5 @@
             }
         }
     }
    -
    -#[cfg(test)]
    -mod test {
    -    use super::*;
    -
    -    #[test]
    -    fn append_keychain_derivation_indices() {
    -        #[derive(Ord, PartialOrd, Eq, PartialEq, Clone, Debug)]
    -        enum Keychain {
    -            One,
    -            Two,
    -            Three,
    -            Four,
    -        }
    -        let mut lhs_di = BTreeMap::<Keychain, u32>::default();
    -        let mut rhs_di = BTreeMap::<Keychain, u32>::default();
    -        lhs_di.insert(Keychain::One, 7);
    -        lhs_di.insert(Keychain::Two, 0);
    -        rhs_di.insert(Keychain::One, 3);
    -        rhs_di.insert(Keychain::Two, 5);
    -        lhs_di.insert(Keychain::Three, 3);
    -        rhs_di.insert(Keychain::Four, 4);
    -
    -        let mut lhs = ChangeSet(lhs_di);
    -        let rhs = ChangeSet(rhs_di);
    -        lhs.append(rhs);
    -
    -        // Exiting index doesn't update if the new index in `other` is lower than `self`.
    -        assert_eq!(lhs.0.get(&Keychain::One), Some(&7));
    -        // Existing index updates if the new index in `other` is higher than `self`.
    -        assert_eq!(lhs.0.get(&Keychain::Two), Some(&5));
    -        // Existing index is unchanged if keychain doesn't exist in `other`.
    -        assert_eq!(lhs.0.get(&Keychain::Three), Some(&3));
    -        // New keychain gets added if the keychain is in `other` but not in `self`.
    -        assert_eq!(lhs.0.get(&Keychain::Four), Some(&4));
    -    }
    -}
     
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain/txout_index.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain/txout_index.rs.html index 93859d7738..0de38aae3a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain/txout_index.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain/txout_index.rs.html @@ -688,14 +688,295 @@ 688 689 690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +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 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971
    use crate::{
         collections::*,
         indexed_tx_graph::Indexer,
         miniscript::{Descriptor, DescriptorPublicKey},
         spk_iter::BIP32_MAX_INDEX,
    -    SpkIterator, SpkTxOutIndex,
    +    DescriptorExt, DescriptorId, SpkIterator, SpkTxOutIndex,
     };
    -use bitcoin::{Amount, OutPoint, Script, SignedAmount, Transaction, TxOut, Txid};
    +use bitcoin::{hashes::Hash, Amount, OutPoint, Script, SignedAmount, Transaction, TxOut, Txid};
     use core::{
         fmt::Debug,
         ops::{Bound, RangeBounds},
    @@ -703,6 +984,79 @@
     
     use crate::Append;
     
    +/// Represents updates to the derivation index of a [`KeychainTxOutIndex`].
    +/// It maps each keychain `K` to a descriptor and its last revealed index.
    +///
    +/// It can be applied to [`KeychainTxOutIndex`] with [`apply_changeset`]. [`ChangeSet] are
    +/// monotone in that they will never decrease the revealed derivation index.
    +///
    +/// [`KeychainTxOutIndex`]: crate::keychain::KeychainTxOutIndex
    +/// [`apply_changeset`]: crate::keychain::KeychainTxOutIndex::apply_changeset
    +#[derive(Clone, Debug, PartialEq)]
    +#[cfg_attr(
    +    feature = "serde",
    +    derive(serde::Deserialize, serde::Serialize),
    +    serde(
    +        crate = "serde_crate",
    +        bound(
    +            deserialize = "K: Ord + serde::Deserialize<'de>",
    +            serialize = "K: Ord + serde::Serialize"
    +        )
    +    )
    +)]
    +#[must_use]
    +pub struct ChangeSet<K> {
    +    /// Contains the keychains that have been added and their respective descriptor
    +    pub keychains_added: BTreeMap<K, Descriptor<DescriptorPublicKey>>,
    +    /// Contains for each descriptor_id the last revealed index of derivation
    +    pub last_revealed: BTreeMap<DescriptorId, u32>,
    +}
    +
    +impl<K: Ord> Append for ChangeSet<K> {
    +    /// Append another [`ChangeSet`] into self.
    +    ///
    +    /// For each keychain in `keychains_added` in the given [`ChangeSet`]:
    +    /// If the keychain already exist with a different descriptor, we overwrite the old descriptor.
    +    ///
    +    /// For each `last_revealed` in the given [`ChangeSet`]:
    +    /// If the keychain already exists, increase the index when the other's index > self's index.
    +    fn append(&mut self, other: Self) {
    +        // We use `extend` instead of `BTreeMap::append` due to performance issues with `append`.
    +        // Refer to https://github.com/rust-lang/rust/issues/34666#issuecomment-675658420
    +        self.keychains_added.extend(other.keychains_added);
    +
    +        // for `last_revealed`, entries of `other` will take precedence ONLY if it is greater than
    +        // what was originally in `self`.
    +        for (desc_id, index) in other.last_revealed {
    +            use crate::collections::btree_map::Entry;
    +            match self.last_revealed.entry(desc_id) {
    +                Entry::Vacant(entry) => {
    +                    entry.insert(index);
    +                }
    +                Entry::Occupied(mut entry) => {
    +                    if *entry.get() < index {
    +                        entry.insert(index);
    +                    }
    +                }
    +            }
    +        }
    +    }
    +
    +    /// Returns whether the changeset are empty.
    +    fn is_empty(&self) -> bool {
    +        self.last_revealed.is_empty() && self.keychains_added.is_empty()
    +    }
    +}
    +
    +impl<K> Default for ChangeSet<K> {
    +    fn default() -> Self {
    +        Self {
    +            last_revealed: BTreeMap::default(),
    +            keychains_added: BTreeMap::default(),
    +        }
    +    }
    +}
    +
     const DEFAULT_LOOKAHEAD: u32 = 25;
     
     /// [`KeychainTxOutIndex`] controls how script pubkeys are revealed for multiple keychains, and
    @@ -744,7 +1098,7 @@
     ///
     /// # Change sets
     ///
    -/// Methods that can update the last revealed index will return [`super::ChangeSet`] to report
    +/// Methods that can update the last revealed index or add keychains will return [`super::ChangeSet`] to report
     /// these changes. This can be persisted for future recovery.
     ///
     /// ## Synopsis
    @@ -769,14 +1123,43 @@
     /// # let secp = bdk_chain::bitcoin::secp256k1::Secp256k1::signing_only();
     /// # let (external_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/0/*)").unwrap();
     /// # let (internal_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/1/*)").unwrap();
    -/// # let (descriptor_for_user_42, _) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/2/*)").unwrap();
    -/// txout_index.add_keychain(MyKeychain::External, external_descriptor);
    -/// txout_index.add_keychain(MyKeychain::Internal, internal_descriptor);
    -/// txout_index.add_keychain(MyKeychain::MyAppUser { user_id: 42 }, descriptor_for_user_42);
    +/// # let (descriptor_42, _) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/2/*)").unwrap();
    +/// let _ = txout_index.insert_descriptor(MyKeychain::External, external_descriptor);
    +/// let _ = txout_index.insert_descriptor(MyKeychain::Internal, internal_descriptor);
    +/// let _ = txout_index.insert_descriptor(MyKeychain::MyAppUser { user_id: 42 }, descriptor_42);
     ///
     /// let new_spk_for_user = txout_index.reveal_next_spk(&MyKeychain::MyAppUser{ user_id: 42 });
     /// ```
     ///
    +/// # Non-recommend keychain to descriptor assignments
    +///
    +/// A keychain (`K`) is used to identify a descriptor. However, the following keychain to descriptor
    +/// arrangements result in behavior that is harder to reason about and is not recommended.
    +///
    +/// ## Multiple keychains identifying the same descriptor
    +///
    +/// Although a single keychain variant can only identify a single descriptor, multiple keychain
    +/// variants can identify the same descriptor.
    +///
    +/// If multiple keychains identify the same descriptor:
    +/// 1. Methods that take in a keychain (such as [`reveal_next_spk`]) will work normally when any
    +/// keychain (that identifies that descriptor) is passed in.
    +/// 2. Methods that return data which associates with a descriptor (such as [`outpoints`],
    +/// [`txouts`], [`unused_spks`], etc.) the method will return the highest-ranked keychain variant
    +/// that identifies the descriptor. Rank is determined by the [`Ord`] implementation of the keychain
    +/// type.
    +///
    +/// This arrangement is not recommended since some methods will return a single keychain variant
    +/// even though multiple keychain variants identify the same descriptor.
    +///
    +/// ## Reassigning the descriptor of a single keychain
    +///
    +/// Descriptors added to [`KeychainTxOutIndex`] are never removed. However, a keychain that
    +/// identifies a descriptor can be reassigned to identify a different descriptor. This may result in
    +/// a situation where a descriptor has no associated keychain(s), and relevant [`TxOut`]s,
    +/// [`OutPoint`]s and [`Script`]s (of that descriptor) will not be return by [`KeychainTxOutIndex`].
    +/// Therefore, reassigning the descriptor of a single keychain is not recommended.
    +///
     /// [`Ord`]: core::cmp::Ord
     /// [`SpkTxOutIndex`]: crate::spk_txout_index::SpkTxOutIndex
     /// [`Descriptor`]: crate::miniscript::Descriptor
    @@ -789,13 +1172,27 @@
     /// [`new`]: KeychainTxOutIndex::new
     /// [`unbounded_spk_iter`]: KeychainTxOutIndex::unbounded_spk_iter
     /// [`all_unbounded_spk_iters`]: KeychainTxOutIndex::all_unbounded_spk_iters
    +/// [`outpoints`]: KeychainTxOutIndex::outpoints
    +/// [`txouts`]: KeychainTxOutIndex::txouts
    +/// [`unused_spks`]: KeychainTxOutIndex::unused_spks
     #[derive(Clone, Debug)]
     pub struct KeychainTxOutIndex<K> {
    -    inner: SpkTxOutIndex<(K, u32)>,
    -    // descriptors of each keychain
    -    keychains: BTreeMap<K, Descriptor<DescriptorPublicKey>>,
    +    inner: SpkTxOutIndex<(DescriptorId, u32)>,
    +    // keychain -> (descriptor, descriptor id) map
    +    keychains_to_descriptors: BTreeMap<K, (DescriptorId, Descriptor<DescriptorPublicKey>)>,
    +    // descriptor id -> keychain set
    +    // Because different keychains can have the same descriptor, we rank keychains by `Ord` so that
    +    // that the first keychain variant (according to `Ord`) has the highest rank. When associated
    +    // data (such as spks, outpoints) are returned with a keychain, we return the highest-ranked
    +    // keychain with it.
    +    descriptor_ids_to_keychain_set: HashMap<DescriptorId, BTreeSet<K>>,
    +    // descriptor_id -> descriptor map
    +    // This is a "monotone" map, meaning that its size keeps growing, i.e., we never delete
    +    // descriptors from it. This is useful for revealing spks for descriptors that don't have
    +    // keychains associated.
    +    descriptor_ids_to_descriptors: BTreeMap<DescriptorId, Descriptor<DescriptorPublicKey>>,
         // last revealed indexes
    -    last_revealed: BTreeMap<K, u32>,
    +    last_revealed: BTreeMap<DescriptorId, u32>,
         // lookahead settings for each keychain
         lookahead: u32,
     }
    @@ -811,7 +1208,13 @@
     
         fn index_txout(&mut self, outpoint: OutPoint, txout: &TxOut) -> Self::ChangeSet {
             match self.inner.scan_txout(outpoint, txout).cloned() {
    -            Some((keychain, index)) => self.reveal_to_target(&keychain, index).1,
    +            Some((descriptor_id, index)) => {
    +                // We want to reveal spks for descriptors that aren't tracked by any keychain, and
    +                // so we call reveal with descriptor_id
    +                let (_, changeset) = self.reveal_to_target_with_id(descriptor_id, index)
    +                    .expect("descriptors are added in a monotone manner, there cannot be a descriptor id with no corresponding descriptor");
    +                changeset
    +            }
                 None => super::ChangeSet::default(),
             }
         }
    @@ -825,7 +1228,13 @@
         }
     
         fn initial_changeset(&self) -> Self::ChangeSet {
    -        super::ChangeSet(self.last_revealed.clone())
    +        super::ChangeSet {
    +            keychains_added: self
    +                .keychains()
    +                .map(|(k, v)| (k.clone(), v.clone()))
    +                .collect(),
    +            last_revealed: self.last_revealed.clone(),
    +        }
         }
     
         fn apply_changeset(&mut self, changeset: Self::ChangeSet) {
    @@ -851,7 +1260,9 @@
         pub fn new(lookahead: u32) -> Self {
             Self {
                 inner: SpkTxOutIndex::default(),
    -            keychains: BTreeMap::new(),
    +            keychains_to_descriptors: BTreeMap::new(),
    +            descriptor_ids_to_keychain_set: HashMap::new(),
    +            descriptor_ids_to_descriptors: BTreeMap::new(),
                 last_revealed: BTreeMap::new(),
                 lookahead,
             }
    @@ -860,26 +1271,37 @@
     
     /// Methods that are *re-exposed* from the internal [`SpkTxOutIndex`].
     impl<K: Clone + Ord + Debug> KeychainTxOutIndex<K> {
    +    /// Get the highest-ranked keychain that is currently associated with the given `desc_id`.
    +    fn keychain_of_desc_id(&self, desc_id: &DescriptorId) -> Option<&K> {
    +        let keychains = self.descriptor_ids_to_keychain_set.get(desc_id)?;
    +        keychains.iter().next()
    +    }
    +
         /// Return a reference to the internal [`SpkTxOutIndex`].
         ///
         /// **WARNING:** The internal index will contain lookahead spks. Refer to
         /// [struct-level docs](KeychainTxOutIndex) for more about `lookahead`.
    -    pub fn inner(&self) -> &SpkTxOutIndex<(K, u32)> {
    +    pub fn inner(&self) -> &SpkTxOutIndex<(DescriptorId, u32)> {
             &self.inner
         }
     
    -    /// Get a reference to the set of indexed outpoints.
    -    pub fn outpoints(&self) -> &BTreeSet<((K, u32), OutPoint)> {
    -        self.inner.outpoints()
    +    /// Get the set of indexed outpoints, corresponding to tracked keychains.
    +    pub fn outpoints(&self) -> impl DoubleEndedIterator<Item = ((K, u32), OutPoint)> + '_ {
    +        self.inner
    +            .outpoints()
    +            .iter()
    +            .filter_map(|((desc_id, index), op)| {
    +                let keychain = self.keychain_of_desc_id(desc_id)?;
    +                Some(((keychain.clone(), *index), *op))
    +            })
         }
     
         /// Iterate over known txouts that spend to tracked script pubkeys.
    -    pub fn txouts(
    -        &self,
    -    ) -> impl DoubleEndedIterator<Item = (K, u32, OutPoint, &TxOut)> + ExactSizeIterator {
    -        self.inner
    -            .txouts()
    -            .map(|((k, i), op, txo)| (k.clone(), *i, op, txo))
    +    pub fn txouts(&self) -> impl DoubleEndedIterator<Item = (K, u32, OutPoint, &TxOut)> + '_ {
    +        self.inner.txouts().filter_map(|((desc_id, i), op, txo)| {
    +            let keychain = self.keychain_of_desc_id(desc_id)?;
    +            Some((keychain.clone(), *i, op, txo))
    +        })
         }
     
         /// Finds all txouts on a transaction that has previously been scanned and indexed.
    @@ -889,32 +1311,39 @@
         ) -> impl DoubleEndedIterator<Item = (K, u32, OutPoint, &TxOut)> {
             self.inner
                 .txouts_in_tx(txid)
    -            .map(|((k, i), op, txo)| (k.clone(), *i, op, txo))
    +            .filter_map(|((desc_id, i), op, txo)| {
    +                let keychain = self.keychain_of_desc_id(desc_id)?;
    +                Some((keychain.clone(), *i, op, txo))
    +            })
         }
     
    -    /// Return the [`TxOut`] of `outpoint` if it has been indexed.
    +    /// Return the [`TxOut`] of `outpoint` if it has been indexed, and if it corresponds to a
    +    /// tracked keychain.
         ///
         /// The associated keychain and keychain index of the txout's spk is also returned.
         ///
         /// This calls [`SpkTxOutIndex::txout`] internally.
         pub fn txout(&self, outpoint: OutPoint) -> Option<(K, u32, &TxOut)> {
    -        self.inner
    -            .txout(outpoint)
    -            .map(|((k, i), txo)| (k.clone(), *i, txo))
    +        let ((descriptor_id, index), txo) = self.inner.txout(outpoint)?;
    +        let keychain = self.keychain_of_desc_id(descriptor_id)?;
    +        Some((keychain.clone(), *index, txo))
         }
     
         /// Return the script that exists under the given `keychain`'s `index`.
         ///
         /// This calls [`SpkTxOutIndex::spk_at_index`] internally.
         pub fn spk_at_index(&self, keychain: K, index: u32) -> Option<&Script> {
    -        self.inner.spk_at_index(&(keychain, index))
    +        let descriptor_id = self.keychains_to_descriptors.get(&keychain)?.0;
    +        self.inner.spk_at_index(&(descriptor_id, index))
         }
     
         /// Returns the keychain and keychain index associated with the spk.
         ///
         /// This calls [`SpkTxOutIndex::index_of_spk`] internally.
         pub fn index_of_spk(&self, script: &Script) -> Option<(K, u32)> {
    -        self.inner.index_of_spk(script).cloned()
    +        let (desc_id, last_index) = self.inner.index_of_spk(script)?;
    +        let keychain = self.keychain_of_desc_id(desc_id)?;
    +        Some((keychain.clone(), *last_index))
         }
     
         /// Returns whether the spk under the `keychain`'s `index` has been used.
    @@ -924,7 +1353,11 @@
         ///
         /// This calls [`SpkTxOutIndex::is_used`] internally.
         pub fn is_used(&self, keychain: K, index: u32) -> bool {
    -        self.inner.is_used(&(keychain, index))
    +        let descriptor_id = self.keychains_to_descriptors.get(&keychain).map(|k| k.0);
    +        match descriptor_id {
    +            Some(descriptor_id) => self.inner.is_used(&(descriptor_id, index)),
    +            None => false,
    +        }
         }
     
         /// Marks the script pubkey at `index` as used even though the tracker hasn't seen an output
    @@ -932,7 +1365,9 @@
         ///
         /// This only has an effect when the `index` had been added to `self` already and was unused.
         ///
    -    /// Returns whether the `index` was initially present as `unused`.
    +    /// Returns whether the spk under the given `keychain` and `index` is successfully
    +    /// marked as used. Returns false either when there is no descriptor under the given
    +    /// keychain, or when the spk is already marked as used.
         ///
         /// This is useful when you want to reserve a script pubkey for something but don't want to add
         /// the transaction output using it to the index yet. Other callers will consider `index` on
    @@ -942,7 +1377,11 @@
         ///
         /// [`unmark_used`]: Self::unmark_used
         pub fn mark_used(&mut self, keychain: K, index: u32) -> bool {
    -        self.inner.mark_used(&(keychain, index))
    +        let descriptor_id = self.keychains_to_descriptors.get(&keychain).map(|k| k.0);
    +        match descriptor_id {
    +            Some(descriptor_id) => self.inner.mark_used(&(descriptor_id, index)),
    +            None => false,
    +        }
         }
     
         /// Undoes the effect of [`mark_used`]. Returns whether the `index` is inserted back into
    @@ -955,7 +1394,11 @@
         ///
         /// [`mark_used`]: Self::mark_used
         pub fn unmark_used(&mut self, keychain: K, index: u32) -> bool {
    -        self.inner.unmark_used(&(keychain, index))
    +        let descriptor_id = self.keychains_to_descriptors.get(&keychain).map(|k| k.0);
    +        match descriptor_id {
    +            Some(descriptor_id) => self.inner.unmark_used(&(descriptor_id, index)),
    +            None => false,
    +        }
         }
     
         /// Computes the total value transfer effect `tx` has on the script pubkeys belonging to the
    @@ -969,7 +1412,7 @@
             range: impl RangeBounds<K>,
         ) -> (Amount, Amount) {
             self.inner
    -            .sent_and_received(tx, Self::map_to_inner_bounds(range))
    +            .sent_and_received(tx, self.map_to_inner_bounds(range))
         }
     
         /// Computes the net value that this transaction gives to the script pubkeys in the index and
    @@ -980,34 +1423,76 @@
         ///
         /// [`sent_and_received`]: Self::sent_and_received
         pub fn net_value(&self, tx: &Transaction, range: impl RangeBounds<K>) -> SignedAmount {
    -        self.inner.net_value(tx, Self::map_to_inner_bounds(range))
    +        self.inner.net_value(tx, self.map_to_inner_bounds(range))
         }
     }
     
     impl<K: Clone + Ord + Debug> KeychainTxOutIndex<K> {
    -    /// Return a reference to the internal map of keychain to descriptors.
    -    pub fn keychains(&self) -> &BTreeMap<K, Descriptor<DescriptorPublicKey>> {
    -        &self.keychains
    +    /// Return the map of the keychain to descriptors.
    +    pub fn keychains(
    +        &self,
    +    ) -> impl DoubleEndedIterator<Item = (&K, &Descriptor<DescriptorPublicKey>)> + ExactSizeIterator + '_
    +    {
    +        self.keychains_to_descriptors
    +            .iter()
    +            .map(|(k, (_, d))| (k, d))
         }
     
    -    /// Add a keychain to the tracker's `txout_index` with a descriptor to derive addresses.
    +    /// Insert a descriptor with a keychain associated to it.
         ///
    -    /// Adding a keychain means you will be able to derive new script pubkeys under that keychain
    +    /// Adding a descriptor means you will be able to derive new script pubkeys under it
         /// and the txout index will discover transaction outputs with those script pubkeys.
         ///
    -    /// # Panics
    -    ///
    -    /// This will panic if a different `descriptor` is introduced to the same `keychain`.
    -    pub fn add_keychain(&mut self, keychain: K, descriptor: Descriptor<DescriptorPublicKey>) {
    -        let old_descriptor = &*self
    -            .keychains
    -            .entry(keychain.clone())
    -            .or_insert_with(|| descriptor.clone());
    -        assert_eq!(
    -            &descriptor, old_descriptor,
    -            "keychain already contains a different descriptor"
    -        );
    +    /// When trying to add a keychain that already existed under a different descriptor, or a descriptor
    +    /// that already existed with a different keychain, the old keychain (or descriptor) will be
    +    /// overwritten.
    +    pub fn insert_descriptor(
    +        &mut self,
    +        keychain: K,
    +        descriptor: Descriptor<DescriptorPublicKey>,
    +    ) -> super::ChangeSet<K> {
    +        let mut changeset = super::ChangeSet::<K>::default();
    +        let desc_id = descriptor.descriptor_id();
    +
    +        let old_desc = self
    +            .keychains_to_descriptors
    +            .insert(keychain.clone(), (desc_id, descriptor.clone()));
    +
    +        if let Some((old_desc_id, _)) = old_desc {
    +            // nothing needs to be done if caller reinsterted the same descriptor under the same
    +            // keychain
    +            if old_desc_id == desc_id {
    +                return changeset;
    +            }
    +            // we should remove old descriptor that is associated with this keychain as the index
    +            // is designed to track one descriptor per keychain (however different keychains can
    +            // share the same descriptor)
    +            let _is_keychain_removed = self
    +                .descriptor_ids_to_keychain_set
    +                .get_mut(&old_desc_id)
    +                .expect("we must have already inserted this descriptor")
    +                .remove(&keychain);
    +            debug_assert!(_is_keychain_removed);
    +        }
    +
    +        self.descriptor_ids_to_keychain_set
    +            .entry(desc_id)
    +            .or_default()
    +            .insert(keychain.clone());
    +        self.descriptor_ids_to_descriptors
    +            .insert(desc_id, descriptor.clone());
             self.replenish_lookahead(&keychain, self.lookahead);
    +
    +        changeset
    +            .keychains_added
    +            .insert(keychain.clone(), descriptor);
    +        changeset
    +    }
    +
    +    /// Gets the descriptor associated with the keychain. Returns `None` if the keychain doesn't
    +    /// have a descriptor associated with it.
    +    pub fn get_descriptor(&self, keychain: &K) -> Option<&Descriptor<DescriptorPublicKey>> {
    +        self.keychains_to_descriptors.get(keychain).map(|(_, d)| d)
         }
     
         /// Get the lookahead setting.
    @@ -1023,63 +1508,60 @@
         ///
         /// This does not change the global `lookahead` setting.
         pub fn lookahead_to_target(&mut self, keychain: &K, target_index: u32) {
    -        let (next_index, _) = self.next_index(keychain);
    +        if let Some((next_index, _)) = self.next_index(keychain) {
    +            let temp_lookahead = (target_index + 1)
    +                .checked_sub(next_index)
    +                .filter(|&index| index > 0);
     
    -        let temp_lookahead = (target_index + 1)
    -            .checked_sub(next_index)
    -            .filter(|&index| index > 0);
    -
    -        if let Some(temp_lookahead) = temp_lookahead {
    -            self.replenish_lookahead(keychain, temp_lookahead);
    +            if let Some(temp_lookahead) = temp_lookahead {
    +                self.replenish_lookahead(keychain, temp_lookahead);
    +            }
             }
         }
     
         fn replenish_lookahead(&mut self, keychain: &K, lookahead: u32) {
    -        let descriptor = self.keychains.get(keychain).expect("keychain must exist");
    -        let next_store_index = self.next_store_index(keychain);
    -        let next_reveal_index = self.last_revealed.get(keychain).map_or(0, |v| *v + 1);
    -
    -        for (new_index, new_spk) in
    -            SpkIterator::new_with_range(descriptor, next_store_index..next_reveal_index + lookahead)
    -        {
    -            let _inserted = self
    -                .inner
    -                .insert_spk((keychain.clone(), new_index), new_spk);
    -            debug_assert!(_inserted, "replenish lookahead: must not have existing spk: keychain={:?}, lookahead={}, next_store_index={}, next_reveal_index={}", keychain, lookahead, next_store_index, next_reveal_index);
    +        let descriptor_opt = self.keychains_to_descriptors.get(keychain).cloned();
    +        if let Some((descriptor_id, descriptor)) = descriptor_opt {
    +            let next_store_index = self.next_store_index(descriptor_id);
    +            let next_reveal_index = self.last_revealed.get(&descriptor_id).map_or(0, |v| *v + 1);
    +
    +            for (new_index, new_spk) in SpkIterator::new_with_range(
    +                descriptor,
    +                next_store_index..next_reveal_index + lookahead,
    +            ) {
    +                let _inserted = self.inner.insert_spk((descriptor_id, new_index), new_spk);
    +                debug_assert!(_inserted, "replenish lookahead: must not have existing spk: keychain={:?}, lookahead={}, next_store_index={}, next_reveal_index={}", keychain, lookahead, next_store_index, next_reveal_index);
    +            }
             }
         }
     
    -    fn next_store_index(&self, keychain: &K) -> u32 {
    +    fn next_store_index(&self, descriptor_id: DescriptorId) -> u32 {
             self.inner()
                 .all_spks()
    -            // This range is filtering out the spks with a keychain different than
    -            // `keychain`. We don't use filter here as range is more optimized.
    -            .range((keychain.clone(), u32::MIN)..(keychain.clone(), u32::MAX))
    +            // This range is keeping only the spks with descriptor_id equal to
    +            // `descriptor_id`. We don't use filter here as range is more optimized.
    +            .range((descriptor_id, u32::MIN)..(descriptor_id, u32::MAX))
                 .last()
                 .map_or(0, |((_, index), _)| *index + 1)
         }
     
    -    /// Get an unbounded spk iterator over a given `keychain`.
    -    ///
    -    /// # Panics
    -    ///
    -    /// This will panic if the given `keychain`'s descriptor does not exist.
    -    pub fn unbounded_spk_iter(&self, keychain: &K) -> SpkIterator<Descriptor<DescriptorPublicKey>> {
    -        SpkIterator::new(
    -            self.keychains
    -                .get(keychain)
    -                .expect("keychain does not exist")
    -                .clone(),
    -        )
    +    /// Get an unbounded spk iterator over a given `keychain`. Returns `None` if the provided
    +    /// keychain doesn't exist
    +    pub fn unbounded_spk_iter(
    +        &self,
    +        keychain: &K,
    +    ) -> Option<SpkIterator<Descriptor<DescriptorPublicKey>>> {
    +        let descriptor = self.keychains_to_descriptors.get(keychain)?.1.clone();
    +        Some(SpkIterator::new(descriptor))
         }
     
         /// Get unbounded spk iterators for all keychains.
         pub fn all_unbounded_spk_iters(
             &self,
         ) -> BTreeMap<K, SpkIterator<Descriptor<DescriptorPublicKey>>> {
    -        self.keychains
    +        self.keychains_to_descriptors
                 .iter()
    -            .map(|(k, descriptor)| (k.clone(), SpkIterator::new(descriptor.clone())))
    +            .map(|(k, (_, descriptor))| (k.clone(), SpkIterator::new(descriptor.clone())))
                 .collect()
         }
     
    @@ -1088,18 +1570,27 @@
             &self,
             range: impl RangeBounds<K>,
         ) -> impl DoubleEndedIterator<Item = (&K, u32, &Script)> + Clone {
    -        self.keychains.range(range).flat_map(|(keychain, _)| {
    -            let start = Bound::Included((keychain.clone(), u32::MIN));
    -            let end = match self.last_revealed.get(keychain) {
    -                Some(last_revealed) => Bound::Included((keychain.clone(), *last_revealed)),
    -                None => Bound::Excluded((keychain.clone(), u32::MIN)),
    -            };
    -
    -            self.inner
    -                .all_spks()
    -                .range((start, end))
    -                .map(|((keychain, i), spk)| (keychain, *i, spk.as_script()))
    -        })
    +        self.keychains_to_descriptors
    +            .range(range)
    +            .flat_map(|(_, (descriptor_id, _))| {
    +                let start = Bound::Included((*descriptor_id, u32::MIN));
    +                let end = match self.last_revealed.get(descriptor_id) {
    +                    Some(last_revealed) => Bound::Included((*descriptor_id, *last_revealed)),
    +                    None => Bound::Excluded((*descriptor_id, u32::MIN)),
    +                };
    +
    +                self.inner
    +                    .all_spks()
    +                    .range((start, end))
    +                    .map(|((descriptor_id, i), spk)| {
    +                        (
    +                            self.keychain_of_desc_id(descriptor_id)
    +                                .expect("must have keychain"),
    +                            *i,
    +                            spk.as_script(),
    +                        )
    +                    })
    +            })
         }
     
         /// Iterate over revealed spks of the given `keychain`.
    @@ -1113,20 +1604,29 @@
     
         /// Iterate over revealed, but unused, spks of all keychains.
         pub fn unused_spks(&self) -> impl DoubleEndedIterator<Item = (K, u32, &Script)> + Clone {
    -        self.keychains.keys().flat_map(|keychain| {
    +        self.keychains_to_descriptors.keys().flat_map(|keychain| {
                 self.unused_keychain_spks(keychain)
                     .map(|(i, spk)| (keychain.clone(), i, spk))
             })
         }
     
         /// Iterate over revealed, but unused, spks of the given `keychain`.
    +    /// Returns an empty iterator if the provided keychain doesn't exist.
         pub fn unused_keychain_spks(
             &self,
             keychain: &K,
         ) -> impl DoubleEndedIterator<Item = (u32, &Script)> + Clone {
    -        let next_i = self.last_revealed.get(keychain).map_or(0, |&i| i + 1);
    +        let desc_id = self
    +            .keychains_to_descriptors
    +            .get(keychain)
    +            .map(|(desc_id, _)| *desc_id)
    +            // We use a dummy desc id if we can't find the real one in our map. In this way,
    +            // if this method was to be called with a non-existent keychain, we would return an
    +            // empty iterator
    +            .unwrap_or_else(|| DescriptorId::from_byte_array([0; 32]));
    +        let next_i = self.last_revealed.get(&desc_id).map_or(0, |&i| i + 1);
             self.inner
    -            .unused_spks((keychain.clone(), u32::MIN)..(keychain.clone(), next_i))
    +            .unused_spks((desc_id, u32::MIN)..(desc_id, next_i))
                 .map(|((_, i), spk)| (*i, spk))
         }
     
    @@ -1141,17 +1641,15 @@
         ///
         /// Not checking the second field of the tuple may result in address reuse.
         ///
    -    /// # Panics
    -    ///
    -    /// Panics if the `keychain` does not exist.
    -    pub fn next_index(&self, keychain: &K) -> (u32, bool) {
    -        let descriptor = self.keychains.get(keychain).expect("keychain must exist");
    -        let last_index = self.last_revealed.get(keychain).cloned();
    +    /// Returns None if the provided `keychain` doesn't exist.
    +    pub fn next_index(&self, keychain: &K) -> Option<(u32, bool)> {
    +        let (descriptor_id, descriptor) = self.keychains_to_descriptors.get(keychain)?;
    +        let last_index = self.last_revealed.get(descriptor_id).cloned();
     
             // we can only get the next index if the wildcard exists.
             let has_wildcard = descriptor.has_wildcard();
     
    -        match last_index {
    +        Some(match last_index {
                 // if there is no index, next_index is always 0.
                 None => (0, true),
                 // descriptors without wildcards can only have one index.
    @@ -1163,19 +1661,27 @@
                 Some(index) if index == BIP32_MAX_INDEX => (index, false),
                 // get the next derivation index.
                 Some(index) => (index + 1, true),
    -        }
    +        })
         }
     
         /// Get the last derivation index that is revealed for each keychain.
         ///
         /// Keychains with no revealed indices will not be included in the returned [`BTreeMap`].
    -    pub fn last_revealed_indices(&self) -> &BTreeMap<K, u32> {
    -        &self.last_revealed
    +    pub fn last_revealed_indices(&self) -> BTreeMap<K, u32> {
    +        self.last_revealed
    +            .iter()
    +            .filter_map(|(desc_id, index)| {
    +                let keychain = self.keychain_of_desc_id(desc_id)?;
    +                Some((keychain.clone(), *index))
    +            })
    +            .collect()
         }
     
    -    /// Get the last derivation index revealed for `keychain`.
    +    /// Get the last derivation index revealed for `keychain`. Returns None if the keychain doesn't
    +    /// exist, or if the keychain doesn't have any revealed scripts.
         pub fn last_revealed_index(&self, keychain: &K) -> Option<u32> {
    -        self.last_revealed.get(keychain).cloned()
    +        let descriptor_id = self.keychains_to_descriptors.get(keychain)?.0;
    +        self.last_revealed.get(&descriptor_id).cloned()
         }
     
         /// Convenience method to call [`Self::reveal_to_target`] on multiple keychains.
    @@ -1190,68 +1696,59 @@
             let mut spks = BTreeMap::new();
     
             for (keychain, &index) in keychains {
    -            let (new_spks, new_changeset) = self.reveal_to_target(keychain, index);
    -            if !new_changeset.is_empty() {
    -                spks.insert(keychain.clone(), new_spks);
    -                changeset.append(new_changeset.clone());
    +            if let Some((new_spks, new_changeset)) = self.reveal_to_target(keychain, index) {
    +                if !new_changeset.is_empty() {
    +                    spks.insert(keychain.clone(), new_spks);
    +                    changeset.append(new_changeset.clone());
    +                }
                 }
             }
     
             (spks, changeset)
         }
     
    -    /// Reveals script pubkeys of the `keychain`'s descriptor **up to and including** the
    -    /// `target_index`.
    +    /// Convenience method to call `reveal_to_target` with a descriptor_id instead of a keychain.
    +    /// This is useful for revealing spks of descriptors for which we don't have a keychain
    +    /// tracked.
    +    /// Refer to the `reveal_to_target` documentation for more.
         ///
    -    /// If the `target_index` cannot be reached (due to the descriptor having no wildcard and/or
    -    /// the `target_index` is in the hardened index range), this method will make a best-effort and
    -    /// reveal up to the last possible index.
    -    ///
    -    /// This returns an iterator of newly revealed indices (alongside their scripts) and a
    -    /// [`super::ChangeSet`], which reports updates to the latest revealed index. If no new script
    -    /// pubkeys are revealed, then both of these will be empty.
    -    ///
    -    /// # Panics
    -    ///
    -    /// Panics if `keychain` does not exist.
    -    pub fn reveal_to_target(
    +    /// Returns None if the provided `descriptor_id` doesn't correspond to a tracked descriptor.
    +    fn reveal_to_target_with_id(
             &mut self,
    -        keychain: &K,
    +        descriptor_id: DescriptorId,
             target_index: u32,
    -    ) -> (
    +    ) -> Option<(
             SpkIterator<Descriptor<DescriptorPublicKey>>,
             super::ChangeSet<K>,
    -    ) {
    -        let descriptor = self.keychains.get(keychain).expect("keychain must exist");
    +    )> {
    +        let descriptor = self
    +            .descriptor_ids_to_descriptors
    +            .get(&descriptor_id)?
    +            .clone();
             let has_wildcard = descriptor.has_wildcard();
     
             let target_index = if has_wildcard { target_index } else { 0 };
             let next_reveal_index = self
                 .last_revealed
    -            .get(keychain)
    +            .get(&descriptor_id)
                 .map_or(0, |index| *index + 1);
     
    -        debug_assert!(next_reveal_index + self.lookahead >= self.next_store_index(keychain));
    +        debug_assert!(next_reveal_index + self.lookahead >= self.next_store_index(descriptor_id));
     
             // If the target_index is already revealed, we are done
             if next_reveal_index > target_index {
    -            return (
    -                SpkIterator::new_with_range(
    -                    descriptor.clone(),
    -                    next_reveal_index..next_reveal_index,
    -                ),
    +            return Some((
    +                SpkIterator::new_with_range(descriptor, next_reveal_index..next_reveal_index),
                     super::ChangeSet::default(),
    -            );
    +            ));
             }
     
             // We range over the indexes that are not stored and insert their spks in the index.
             // Indexes from next_reveal_index to next_reveal_index + lookahead are already stored (due
             // to lookahead), so we only range from next_reveal_index + lookahead to target + lookahead
             let range = next_reveal_index + self.lookahead..=target_index + self.lookahead;
    -        for (new_index, new_spk) in SpkIterator::new_with_range(descriptor, range) {
    -            let _inserted = self
    -                .inner
    -                .insert_spk((keychain.clone(), new_index), new_spk);
    +        for (new_index, new_spk) in SpkIterator::new_with_range(descriptor.clone(), range) {
    +            let _inserted = self.inner.insert_spk((descriptor_id, new_index), new_spk);
                 debug_assert!(_inserted, "must not have existing spk");
                 debug_assert!(
                     has_wildcard || new_index == 0,
    @@ -1259,36 +1756,68 @@
                 );
             }
     
    -        let _old_index = self.last_revealed.insert(keychain.clone(), target_index);
    +        let _old_index = self.last_revealed.insert(descriptor_id, target_index);
             debug_assert!(_old_index < Some(target_index));
    -        (
    -            SpkIterator::new_with_range(descriptor.clone(), next_reveal_index..target_index + 1),
    -            super::ChangeSet(core::iter::once((keychain.clone(), target_index)).collect()),
    -        )
    +        Some((
    +            SpkIterator::new_with_range(descriptor, next_reveal_index..target_index + 1),
    +            super::ChangeSet {
    +                keychains_added: BTreeMap::new(),
    +                last_revealed: core::iter::once((descriptor_id, target_index)).collect(),
    +            },
    +        ))
    +    }
    +
    +    /// Reveals script pubkeys of the `keychain`'s descriptor **up to and including** the
    +    /// `target_index`.
    +    ///
    +    /// If the `target_index` cannot be reached (due to the descriptor having no wildcard and/or
    +    /// the `target_index` is in the hardened index range), this method will make a best-effort and
    +    /// reveal up to the last possible index.
    +    ///
    +    /// This returns an iterator of newly revealed indices (alongside their scripts) and a
    +    /// [`super::ChangeSet`], which reports updates to the latest revealed index. If no new script
    +    /// pubkeys are revealed, then both of these will be empty.
    +    ///
    +    /// Returns None if the provided `keychain` doesn't exist.
    +    pub fn reveal_to_target(
    +        &mut self,
    +        keychain: &K,
    +        target_index: u32,
    +    ) -> Option<(
    +        SpkIterator<Descriptor<DescriptorPublicKey>>,
    +        super::ChangeSet<K>,
    +    )> {
    +        let descriptor_id = self.keychains_to_descriptors.get(keychain)?.0;
    +        self.reveal_to_target_with_id(descriptor_id, target_index)
         }
     
         /// Attempts to reveal the next script pubkey for `keychain`.
         ///
         /// Returns the derivation index of the revealed script pubkey, the revealed script pubkey and a
         /// [`super::ChangeSet`] which represents changes in the last revealed index (if any).
    +    /// Returns None if the provided keychain doesn't exist.
         ///
         /// When a new script cannot be revealed, we return the last revealed script and an empty
         /// [`super::ChangeSet`]. There are two scenarios when a new script pubkey cannot be derived:
         ///
         ///  1. The descriptor has no wildcard and already has one script revealed.
         ///  2. The descriptor has already revealed scripts up to the numeric bound.
    -    ///
    -    /// # Panics
    -    ///
    -    /// Panics if the `keychain` does not exist.
    -    pub fn reveal_next_spk(&mut self, keychain: &K) -> ((u32, &Script), super::ChangeSet<K>) {
    -        let (next_index, _) = self.next_index(keychain);
    -        let changeset = self.reveal_to_target(keychain, next_index).1;
    +    ///  3. There is no descriptor associated with the given keychain.
    +    pub fn reveal_next_spk(
    +        &mut self,
    +        keychain: &K,
    +    ) -> Option<((u32, &Script), super::ChangeSet<K>)> {
    +        let descriptor_id = self.keychains_to_descriptors.get(keychain)?.0;
    +        let (next_index, _) = self.next_index(keychain).expect("We know keychain exists");
    +        let changeset = self
    +            .reveal_to_target(keychain, next_index)
    +            .expect("We know keychain exists")
    +            .1;
             let script = self
                 .inner
    -            .spk_at_index(&(keychain.clone(), next_index))
    +            .spk_at_index(&(descriptor_id, next_index))
                 .expect("script must already be stored");
    -        ((next_index, script), changeset)
    +        Some(((next_index, script), changeset))
         }
     
         /// Gets the next unused script pubkey in the keychain. I.e., the script pubkey with the lowest
    @@ -1300,21 +1829,22 @@
         /// has used all scripts up to the derivation bounds, then the last derived script pubkey will be
         /// returned.
         ///
    -    /// # Panics
    -    ///
    -    /// Panics if `keychain` has never been added to the index
    -    pub fn next_unused_spk(&mut self, keychain: &K) -> ((u32, &Script), super::ChangeSet<K>) {
    +    /// Returns None if the provided keychain doesn't exist.
    +    pub fn next_unused_spk(
    +        &mut self,
    +        keychain: &K,
    +    ) -> Option<((u32, &Script), super::ChangeSet<K>)> {
             let need_new = self.unused_keychain_spks(keychain).next().is_none();
             // this rather strange branch is needed because of some lifetime issues
             if need_new {
                 self.reveal_next_spk(keychain)
             } else {
    -            (
    +            Some((
                     self.unused_keychain_spks(keychain)
                         .next()
                         .expect("we already know next exists"),
                     super::ChangeSet::default(),
    -            )
    +            ))
             }
         }
     
    @@ -1333,21 +1863,35 @@
             &'a self,
             range: impl RangeBounds<K> + 'a,
         ) -> impl DoubleEndedIterator<Item = (&'a K, u32, OutPoint)> + 'a {
    -        let bounds = Self::map_to_inner_bounds(range);
    +        let bounds = self.map_to_inner_bounds(range);
             self.inner
                 .outputs_in_range(bounds)
    -            .map(move |((keychain, i), op)| (keychain, *i, op))
    +            .map(move |((desc_id, i), op)| {
    +                let keychain = self
    +                    .keychain_of_desc_id(desc_id)
    +                    .expect("keychain must exist");
    +                (keychain, *i, op)
    +            })
         }
     
    -    fn map_to_inner_bounds(bound: impl RangeBounds<K>) -> impl RangeBounds<(K, u32)> {
    +    fn map_to_inner_bounds(
    +        &self,
    +        bound: impl RangeBounds<K>,
    +    ) -> impl RangeBounds<(DescriptorId, u32)> {
    +        let get_desc_id = |keychain| {
    +            self.keychains_to_descriptors
    +                .get(keychain)
    +                .map(|(desc_id, _)| *desc_id)
    +                .unwrap_or_else(|| DescriptorId::from_byte_array([0; 32]))
    +        };
             let start = match bound.start_bound() {
    -            Bound::Included(keychain) => Bound::Included((keychain.clone(), u32::MIN)),
    -            Bound::Excluded(keychain) => Bound::Excluded((keychain.clone(), u32::MAX)),
    +            Bound::Included(keychain) => Bound::Included((get_desc_id(keychain), u32::MIN)),
    +            Bound::Excluded(keychain) => Bound::Excluded((get_desc_id(keychain), u32::MAX)),
                 Bound::Unbounded => Bound::Unbounded,
             };
             let end = match bound.end_bound() {
    -            Bound::Included(keychain) => Bound::Included((keychain.clone(), u32::MAX)),
    -            Bound::Excluded(keychain) => Bound::Excluded((keychain.clone(), u32::MIN)),
    +            Bound::Included(keychain) => Bound::Included((get_desc_id(keychain), u32::MAX)),
    +            Bound::Excluded(keychain) => Bound::Excluded((get_desc_id(keychain), u32::MIN)),
                 Bound::Unbounded => Bound::Unbounded,
             };
     
    @@ -1363,7 +1907,7 @@
         /// Returns the highest derivation index of each keychain that [`KeychainTxOutIndex`] has found
         /// a [`TxOut`] with it's script pubkey.
         pub fn last_used_indices(&self) -> BTreeMap<K, u32> {
    -        self.keychains
    +        self.keychains_to_descriptors
                 .iter()
                 .filter_map(|(keychain, _)| {
                     self.last_used_index(keychain)
    @@ -1372,10 +1916,28 @@
                 .collect()
         }
     
    -    /// Applies the derivation changeset to the [`KeychainTxOutIndex`], extending the number of
    -    /// derived scripts per keychain, as specified in the `changeset`.
    +    /// Applies the derivation changeset to the [`KeychainTxOutIndex`], as specified in the
    +    /// [`ChangeSet::append`] documentation:
    +    /// - Extends the number of derived scripts per keychain
    +    /// - Adds new descriptors introduced
    +    /// - If a descriptor is introduced for a keychain that already had a descriptor, overwrites
    +    /// the old descriptor
         pub fn apply_changeset(&mut self, changeset: super::ChangeSet<K>) {
    -        let _ = self.reveal_to_target_multi(&changeset.0);
    +        let ChangeSet {
    +            keychains_added,
    +            last_revealed,
    +        } = changeset;
    +        for (keychain, descriptor) in keychains_added {
    +            let _ = self.insert_descriptor(keychain, descriptor);
    +        }
    +        let last_revealed = last_revealed
    +            .into_iter()
    +            .filter_map(|(desc_id, index)| {
    +                let keychain = self.keychain_of_desc_id(&desc_id)?;
    +                Some((keychain.clone(), index))
    +            })
    +            .collect();
    +        let _ = self.reveal_to_target_multi(&last_revealed);
         }
     }
     
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html index 3379f8e794..b6b797405e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html @@ -144,7 +144,7 @@ #[cfg(feature = "miniscript")] mod descriptor_ext; #[cfg(feature = "miniscript")] -pub use descriptor_ext::DescriptorExt; +pub use descriptor_ext::{DescriptorExt, DescriptorId}; #[cfg(feature = "miniscript")] mod spk_iter; #[cfg(feature = "miniscript")] diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_iter.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_iter.rs.html index 6c3e406b59..42463fa3ad 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_iter.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_iter.rs.html @@ -265,14 +265,6 @@ 265 266 267 -268 -269 -270 -271 -272 -273 -274 -275
    use crate::{
         bitcoin::{secp256k1::Secp256k1, ScriptBuf},
         miniscript::{Descriptor, DescriptorPublicKey},
    @@ -433,8 +425,8 @@
             let (external_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/0/*)").unwrap();
             let (internal_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/1/*)").unwrap();
     
    -        txout_index.add_keychain(TestKeychain::External, external_descriptor.clone());
    -        txout_index.add_keychain(TestKeychain::Internal, internal_descriptor.clone());
    +        let _ = txout_index.insert_descriptor(TestKeychain::External, external_descriptor.clone());
    +        let _ = txout_index.insert_descriptor(TestKeychain::Internal, internal_descriptor.clone());
     
             (txout_index, external_descriptor, internal_descriptor)
         }
    @@ -533,20 +525,12 @@
                 None
             );
         }
    +}
     
    -    // The following dummy traits were created to test if SpkIterator is working properly.
    -    #[allow(unused)]
    -    trait TestSendStatic: Send + 'static {
    -        fn test(&self) -> u32 {
    -            20
    -        }
    -    }
    -
    -    impl TestSendStatic for SpkIterator<Descriptor<DescriptorPublicKey>> {
    -        fn test(&self) -> u32 {
    -            20
    -        }
    -    }
    +#[test]
    +fn spk_iterator_is_send_and_static() {
    +    fn is_send_and_static<A: Send + 'static>() {}
    +    is_send_and_static::<SpkIterator<Descriptor<DescriptorPublicKey>>>()
     }
     
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html index 6032ed8789..a8be3b9f94 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html @@ -595,7 +595,7 @@ graph.graph().balance( &*chain, synced_to.block_id(), - graph.index.outpoints().iter().cloned(), + graph.index.outpoints(), |(k, _), _| k == &Keychain::Internal, ) }; @@ -719,7 +719,7 @@ graph.graph().balance( &*chain, synced_to.block_id(), - graph.index.outpoints().iter().cloned(), + graph.index.outpoints(), |(k, _), _| k == &Keychain::Internal, ) }; diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html index 3ed9db620a..2270c98f7b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html @@ -725,6 +725,18 @@ 725 726 727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739
    pub use anyhow;
     use anyhow::Context;
     use bdk_coin_select::{coin_select_bnb, CoinSelector, CoinSelectorOpt, WeightedValue};
    @@ -976,14 +988,20 @@
             script_pubkey: address.script_pubkey(),
         }];
     
    -    let internal_keychain = if graph.index.keychains().get(&Keychain::Internal).is_some() {
    +    let internal_keychain = if graph
    +        .index
    +        .keychains()
    +        .any(|(k, _)| *k == Keychain::Internal)
    +    {
             Keychain::Internal
         } else {
             Keychain::External
         };
     
    -    let ((change_index, change_script), change_changeset) =
    -        graph.index.next_unused_spk(&internal_keychain);
    +    let ((change_index, change_script), change_changeset) = graph
    +        .index
    +        .next_unused_spk(&internal_keychain)
    +        .expect("Must exist");
         changeset.append(change_changeset);
     
         // Clone to drop the immutable reference.
    @@ -993,9 +1011,10 @@
             &graph
                 .index
                 .keychains()
    -            .get(&internal_keychain)
    +            .find(|(k, _)| *k == &internal_keychain)
                 .expect("must exist")
    -            .at_derivation_index(change_index)
    +            .1
    +            .at_derivation_index(change_index)
                 .expect("change_index can't be hardened"),
             &assets,
         )
    @@ -1011,9 +1030,10 @@
             min_drain_value: graph
                 .index
                 .keychains()
    -            .get(&internal_keychain)
    +            .find(|(k, _)| *k == &internal_keychain)
                 .expect("must exist")
    -            .dust_value(),
    +            .1
    +            .dust_value(),
             ..CoinSelectorOpt::fund_outputs(
                 &outputs,
                 &change_output,
    @@ -1143,7 +1163,7 @@
         assets: &bdk_tmp_plan::Assets<K>,
     ) -> Result<Vec<PlannedUtxo<K, A>>, O::Error> {
         let chain_tip = chain.get_chain_tip()?;
    -    let outpoints = graph.index.outpoints().iter().cloned();
    +    let outpoints = graph.index.outpoints();
         graph
             .graph()
             .try_filter_chain_unspents(chain, chain_tip, outpoints)
    @@ -1155,9 +1175,10 @@
                 let desc = graph
                     .index
                     .keychains()
    -                .get(&k)
    +                .find(|(keychain, _)| *keychain == &k)
                     .expect("keychain must exist")
    -                .at_derivation_index(i)
    +                .1
    +                .at_derivation_index(i)
                     .expect("i can't be hardened");
                 let plan = bdk_tmp_plan::plan_satisfaction(&desc, assets)?;
                 Some(Ok((plan, full_txo)))
    @@ -1192,7 +1213,8 @@
                             _ => unreachable!("only these two variants exist in match arm"),
                         };
     
    -                    let ((spk_i, spk), index_changeset) = spk_chooser(index, &Keychain::External);
    +                    let ((spk_i, spk), index_changeset) =
    +                        spk_chooser(index, &Keychain::External).expect("Must exist");
                         let db = &mut *db.lock().unwrap();
                         db.stage_and_commit(C::from((
                             local_chain::ChangeSet::default(),
    @@ -1244,7 +1266,7 @@
                 let balance = graph.graph().try_balance(
                     chain,
                     chain.get_chain_tip()?,
    -                graph.index.outpoints().iter().cloned(),
    +                graph.index.outpoints(),
                     |(k, _), _| k == &Keychain::Internal,
                 )?;
     
    @@ -1274,7 +1296,7 @@
                 let graph = &*graph.lock().unwrap();
                 let chain = &*chain.lock().unwrap();
                 let chain_tip = chain.get_chain_tip()?;
    -            let outpoints = graph.index.outpoints().iter().cloned();
    +            let outpoints = graph.index.outpoints();
     
                 match txout_cmd {
                     TxOutCmd::List {
    @@ -1422,9 +1444,11 @@
     
         let mut index = KeychainTxOutIndex::<Keychain>::default();
     
    -    let (descriptor, mut keymap) =
    +    // TODO: descriptors are already stored in the db, so we shouldn't re-insert
    +    // them in the index here. However, the keymap is not stored in the database.
    +    let (descriptor, mut keymap) =
             Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, &args.descriptor)?;
    -    index.add_keychain(Keychain::External, descriptor);
    +    let _ = index.insert_descriptor(Keychain::External, descriptor);
     
         if let Some((internal_descriptor, internal_keymap)) = args
             .change_descriptor
    @@ -1433,7 +1457,7 @@
             .transpose()?
         {
             keymap.extend(internal_keymap);
    -        index.add_keychain(Keychain::Internal, internal_descriptor);
    +        let _ = index.insert_descriptor(Keychain::Internal, internal_descriptor);
         }
     
         let mut db_backend = match Store::<C>::open_or_create_new(db_magic, &args.db_path) {
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html
    index 842c5754ac..d740cf8b8b 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html
    @@ -572,7 +572,7 @@
                 let mut outpoints: Box<dyn Iterator<Item = OutPoint>> = Box::new(core::iter::empty());
     
                 if utxos {
    -                let init_outpoints = graph.index.outpoints().iter().cloned();
    +                let init_outpoints = graph.index.outpoints();
     
                     let utxos = graph
                         .graph()
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html
    index d8166c3d92..36e849f8b7 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html
    @@ -640,7 +640,7 @@
                         // We want to search for whether the UTXO is spent, and spent by which
                         // transaction. We provide the outpoint of the UTXO to
                         // `EsploraExt::update_tx_graph_without_keychain`.
    -                    let init_outpoints = graph.index.outpoints().iter().cloned();
    +                    let init_outpoints = graph.index.outpoints();
                         let utxos = graph
                             .graph()
                             .filter_chain_unspents(&*chain, local_tip.block_id(), init_outpoints)