From: github-actions Date: Thu, 27 Oct 2022 02:58:50 +0000 (+0000) Subject: Publish autogenerated nightly docs X-Git-Url: http://internal-gitweb-vhost/script/%22https:/database/struct.EncoderStringWriter.html?a=commitdiff_plain;h=2c1f5a63c2bc5d91c799220b561fd97d1bb0d111;p=bitcoindevkit.org Publish autogenerated nightly docs --- diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/all.html index da2f371ef9..08dcabd460 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/all.html @@ -5,5 +5,5 @@

List of all items

Structs

Enums

Traits

Macros

Functions

Typedefs

+ logo

List of all items

Structs

Enums

Traits

Macros

Functions

Typedefs

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/any/enum.AnyBlockchainConfig.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/any/enum.AnyBlockchainConfig.html index 95531cf984..5bf41afc26 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/any/enum.AnyBlockchainConfig.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/any/enum.AnyBlockchainConfig.html @@ -4,7 +4,7 @@

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/enum.CompactFiltersError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/enum.CompactFiltersError.html index 66490b824d..5b8b6c39fd 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/enum.CompactFiltersError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/enum.CompactFiltersError.html @@ -46,7 +46,7 @@
🔬 This is a nightly-only experimental API. (backtrace)

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

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

Performs the conversion.

+

Performs the conversion.

Performs the conversion.

Performs the conversion.

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html index 41fe8c6e82..2cb5d33f1a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.BitcoinPeerConfig.html @@ -4,7 +4,7 @@

This method tests for !=.

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html index 5a4baaedeb..289fafe1bc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.CompactFiltersBlockchainConfig.html @@ -4,7 +4,7 @@

This method tests for !=.

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Mempool.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Mempool.html index 10d2e44f5c..ff3433d9a3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Mempool.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Mempool.html @@ -9,13 +9,13 @@

Struct bdk::blockchain::compact_filters::Mempool

source · []
pub struct Mempool(_);
This is supported on crate feature compact_filters only.
Expand description

Container for unconfirmed, but valid Bitcoin transactions

It is normally shared between Peers with the use of Arc, so that transactions are not duplicated in memory.

-

Implementations

Create a new empty mempool

+

Implementations

Create a new empty mempool

Add a transaction to the mempool

Note that this doesn’t propagate the transaction to other peers. To do that, broadcast should be used.

-

Look-up a transaction in the mempool given an [Inventory] request

-

Return whether or not the mempool contains a transaction with a given txid

-

Return the list of transactions contained in the mempool

+

Look-up a transaction in the mempool given an [Inventory] request

+

Return whether or not the mempool contains a transaction with a given txid

+

Return the list of transactions contained in the mempool

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

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Peer.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Peer.html index 9fc61061df..43f20d69ba 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Peer.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/compact_filters/struct.Peer.html @@ -6,21 +6,21 @@ logo

Peer

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

A Bitcoin peer

-

Implementations

Connect to a peer over a plaintext TCP connection

+

Struct bdk::blockchain::compact_filters::Peer

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

A Bitcoin peer

+

Implementations

Connect to a peer over a plaintext TCP connection

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

-

Connect to a peer through a SOCKS5 proxy, optionally by using some credentials, specified +

Connect to a peer through a SOCKS5 proxy, optionally by using some credentials, specified as a tuple of (username, password)

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

-

Return the [VersionMessage] sent by the peer

-

Return the Bitcoin [Network] in use

-

Return the mempool used by this peer

-

Return whether or not the peer is still connected

-

Send a raw Bitcoin message to the peer

-

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

-

Trait Implementations

Formats the value using the given formatter. Read more

+

Return the [VersionMessage] sent by the peer

+

Return the Bitcoin [Network] in use

+

Return the mempool used by this peer

+

Return whether or not the peer is still connected

+

Send a raw Bitcoin message to the peer

+

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

+

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html index c9416a7b15..4aaa88ef69 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/electrum/struct.ElectrumBlockchainConfig.html @@ -4,7 +4,7 @@

This method tests for !=.

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/enum.EsploraError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/enum.EsploraError.html index d0aae36613..f581c20432 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/enum.EsploraError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/enum.EsploraError.html @@ -36,12 +36,12 @@
🔬 This is a nightly-only experimental API. (backtrace)

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

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

Performs the conversion.

+

Performs the conversion.

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/struct.EsploraBlockchain.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/struct.EsploraBlockchain.html index 090e247bc0..9d4c0a83fb 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/struct.EsploraBlockchain.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/struct.EsploraBlockchain.html @@ -4,7 +4,7 @@
+

EsploraBlockchain

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

Structure that implements the logic to sync with Esplora

Example

@@ -16,12 +16,16 @@

Get a [Transaction] given its [Txid].

Get a [Txid] of a transaction given its index in a block with a given hash.

Get the status of a [Transaction] given its [Txid].

-

Get a [BlockHeader] given a particular block height.

+
👎 Deprecated since 0.1.2:

Deprecated to improve alignment with Esplora API. Users should use get_block_hash and get_header_by_hash methods directly.

+

Get a [BlockHeader] given a particular block height.

+

Get a [BlockHeader] given a particular block hash.

+

Get the [BlockStatus] given a particular [BlockHash].

Get a merkle inclusion proof for a [Transaction] with the given [Txid].

Get the spending status of an output given a [Txid] and the output index.

Broadcast a [Transaction] to Esplora

Get the height of the current blockchain tip.

Get the [BlockHash] of the current blockchain tip.

+

Get the [BlockHash] of a specific block height

Get an map where the key is the confirmation target (in number of blocks) and the value is the estimated feerate (in sat/vB).

Get confirmed transaction history for the specified address/scripthash, @@ -30,16 +34,16 @@ More can be requested by specifying the last txid seen by the previous query.

Trait Implementations

Return the set of Capability supported by this backend

Broadcast a transaction

Estimate the fee rate required to confirm a transaction in a given target of blocks

-

Type that contains the configuration

-

Create a new instance given a configuration

+

Type that contains the configuration

+

Create a new instance given a configuration

Formats the value using the given formatter. Read more

The resulting type after dereferencing.

Dereferences the value.

Performs the conversion.

-

fetch block hash given its height

+

fetch block hash given its height

Return the current height

Fetch a transaction given its txid

-

Setup the backend and populate the internal database for the first time Read more

+

Setup the backend and populate the internal database for the first time Read more

If not overridden, it defaults to calling Self::wallet_setup internally. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html index 50e252c2b1..c779025bd3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/esplora/struct.EsploraBlockchainConfig.html @@ -4,7 +4,7 @@

This method tests for !=.

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/index.html index b7d2fe8d1f..b3b06de4c6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/index.html @@ -6,7 +6,7 @@ logo

Module rpc

logo
-

Module bdk::blockchain::rpc

source · []
This is supported on crate feature rpc only.
Expand description

Rpc Blockchain

+

Module bdk::blockchain::rpc

source · []
This is supported on crate feature rpc only.
Expand description

Rpc Blockchain

Backend that gets blockchain data from Bitcoin Core RPC

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

Example

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcBlockchainFactory.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcBlockchainFactory.html index 74629289a8..d717ea53f9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcBlockchainFactory.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcBlockchainFactory.html @@ -6,7 +6,7 @@ logo

RpcBlockchainFactory

logo
pub struct RpcBlockchainFactory {
+    

Struct bdk::blockchain::rpc::RpcBlockchainFactory

source · []
pub struct RpcBlockchainFactory {
     pub url: String,
     pub auth: Auth,
     pub network: Network,
@@ -34,13 +34,13 @@ objects for different wallet names and with different rescan heights.

wallet_name_prefix: Option<String>

The optional prefix used to build the full wallet name for blockchains

default_skip_blocks: u32

Default number of blocks to skip which will be inherited by blockchain unless overridden

sync_params: Option<RpcSyncParams>

Sync parameters

-

Trait Implementations

The type returned when building a blockchain from this factory

-

Build a new blockchain for the given descriptor wallet_name Read more

+

Trait Implementations

The type returned when building a blockchain from this factory

+

Build a new blockchain for the given descriptor wallet_name Read more

Build a new blockchain for a given wallet Read more

This is supported on neither WebAssembly nor crate feature async-interface.

Use BlockchainFactory::build_for_wallet to get a blockchain, then sync the wallet Read more

-

Returns a copy of the 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

+

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcConfig.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcConfig.html index aed37a008f..0ead722584 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcConfig.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcConfig.html @@ -4,7 +4,7 @@

This method tests for !=.

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcSyncParams.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcSyncParams.html index fa46382e92..4a0097f7a2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcSyncParams.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/rpc/struct.RpcSyncParams.html @@ -4,7 +4,7 @@

This method tests for !=.

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/struct.EsploraBlockchain.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/struct.EsploraBlockchain.html index e3e89a2200..1024626bab 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/struct.EsploraBlockchain.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/struct.EsploraBlockchain.html @@ -4,7 +4,7 @@
+

EsploraBlockchain

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

Structure that implements the logic to sync with Esplora

Example

@@ -16,12 +16,16 @@

Get a [Transaction] given its [Txid].

Get a [Txid] of a transaction given its index in a block with a given hash.

Get the status of a [Transaction] given its [Txid].

-

Get a [BlockHeader] given a particular block height.

+
👎 Deprecated since 0.1.2:

Deprecated to improve alignment with Esplora API. Users should use get_block_hash and get_header_by_hash methods directly.

+

Get a [BlockHeader] given a particular block height.

+

Get a [BlockHeader] given a particular block hash.

+

Get the [BlockStatus] given a particular [BlockHash].

Get a merkle inclusion proof for a [Transaction] with the given [Txid].

Get the spending status of an output given a [Txid] and the output index.

Broadcast a [Transaction] to Esplora

Get the height of the current blockchain tip.

Get the [BlockHash] of the current blockchain tip.

+

Get the [BlockHash] of a specific block height

Get an map where the key is the confirmation target (in number of blocks) and the value is the estimated feerate (in sat/vB).

Get confirmed transaction history for the specified address/scripthash, @@ -30,16 +34,16 @@ More can be requested by specifying the last txid seen by the previous query.

Trait Implementations

Return the set of Capability supported by this backend

Broadcast a transaction

Estimate the fee rate required to confirm a transaction in a given target of blocks

-

Type that contains the configuration

-

Create a new instance given a configuration

+

Type that contains the configuration

+

Create a new instance given a configuration

Formats the value using the given formatter. Read more

The resulting type after dereferencing.

Dereferences the value.

Performs the conversion.

-

fetch block hash given its height

+

fetch block hash given its height

Return the current height

Fetch a transaction given its txid

-

Setup the backend and populate the internal database for the first time Read more

+

Setup the backend and populate the internal database for the first time Read more

If not overridden, it defaults to calling Self::wallet_setup internally. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.BlockchainFactory.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.BlockchainFactory.html index 4775acba9c..c68429d891 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.BlockchainFactory.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.BlockchainFactory.html @@ -41,5 +41,5 @@ immediately dropped. Keep in mind that specific blockchain factories may perform operations to build a blockchain for a given wallet, so if a wallet needs to be synced often it’s recommended to use BlockchainFactory::build_for_wallet to reuse the same blockchain multiple times.

-

Implementations on Foreign Types

Implementors

+

Implementations on Foreign Types

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.ConfigurableBlockchain.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.ConfigurableBlockchain.html index 4d79814192..a6d6dbc7d9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.ConfigurableBlockchain.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.ConfigurableBlockchain.html @@ -12,5 +12,5 @@ }
Expand description

Trait for Blockchain types that can be created given a configuration

Associated Types

Type that contains the configuration

Required methods

Create a new instance given a configuration

-

Implementors

+

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.GetBlockHash.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.GetBlockHash.html index 160f8ec21f..d0947f198d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.GetBlockHash.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.GetBlockHash.html @@ -10,5 +10,5 @@ fn get_block_hash(&self, height: u64) -> Result<BlockHash, Error>; }
Expand description

Trait for getting block hash by block height

Required methods

fetch block hash given its height

-

Implementations on Foreign Types

Implementors

+

Implementations on Foreign Types

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.WalletSync.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.WalletSync.html index 291f2f1c44..378ebd0308 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.WalletSync.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/blockchain/trait.WalletSync.html @@ -28,5 +28,5 @@ in the blockchain to populate the database with BatchOperations::del_utxo.

The progress_update object can be used to give the caller updates about the progress by using Progress::update.

-

Implementations on Foreign Types

Implementors

+

Implementations on Foreign Types

Implementors

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/index.html deleted file mode 100644 index b15eb0cac9..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/index.html +++ /dev/null @@ -1,38 +0,0 @@ -bdk::descriptor::derived - Rust - -
Expand description

Derived descriptor keys

-

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

-

The AsDerived trait provides a quick way to derive descriptors to obtain a -Descriptor<DerivedDescriptorKey> type. This, in turn, can be used to derive public -keys for arbitrary derivation indexes.

-

Combining this with Wallet::get_signers, secret keys can also be derived.

-

Example

-
use bdk::descriptor::{AsDerived, DescriptorPublicKey};
-use bdk::miniscript::{ToPublicKey, TranslatePk, MiniscriptKey};
-
-let secp = Secp256k1::gen_new();
-
-let key = DescriptorPublicKey::from_str("[aa600a45/84'/0'/0']tpubDCbDXFKoLTQp44wQuC12JgSn5g9CWGjZdpBHeTqyypZ4VvgYjTJmK9CkyR5bFvG9f4PutvwmvpYCLkFx2rpx25hiMs4sUgxJveW8ZzSAVAc/0/*")?;
-let (descriptor, _, _) = bdk::descriptor!(wpkh(key))?;
-
-// derived: wpkh([aa600a45/84'/0'/0']tpubDCbDXFKoLTQp44wQuC12JgSn5g9CWGjZdpBHeTqyypZ4VvgYjTJmK9CkyR5bFvG9f4PutvwmvpYCLkFx2rpx25hiMs4sUgxJveW8ZzSAVAc/0/42)#3ladd0t2
-let derived = descriptor.as_derived(42, &secp);
-println!("derived: {}", derived);
-
-// with_pks: wpkh(02373ecb54c5e83bd7e0d40adf78b65efaf12fafb13571f0261fc90364eee22e1e)#p4jjgvll
-let with_pks = derived.translate_pk_infallible(|pk| pk.to_public_key(), |pkh| pkh.to_public_key().to_pubkeyhash());
-println!("with_pks: {}", with_pks);
-

Structs

-

Extended DescriptorPublicKey that has been derived

-

Traits

-

Utilities to derive descriptors

-
- \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/sidebar-items.js deleted file mode 100644 index 8303be4fb7..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["DerivedDescriptorKey","Extended [`DescriptorPublicKey`] that has been derived"]],"trait":[["AsDerived","Utilities to derive descriptors"]]}); \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/struct.DerivedDescriptorKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/struct.DerivedDescriptorKey.html deleted file mode 100644 index 5215afd6bb..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/struct.DerivedDescriptorKey.html +++ /dev/null @@ -1,80 +0,0 @@ -DerivedDescriptorKey in bdk::descriptor::derived - Rust - -
pub struct DerivedDescriptorKey<'s>(_, _);
Expand description

Extended DescriptorPublicKey that has been derived

-

Derived keys are guaranteed to never contain wildcards of any kind

-

Implementations

Construct a new derived key

-

Panics if the key is wildcard

-

Methods from Deref<Target = DescriptorPublicKey>

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

-

Full path, from the master key

-

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

-

Whether or not the key has a wildcards

-

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

-

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

-

To ensure there are no wildcards, call .derive(0) or similar; -to avoid hardened derivation steps, start from a DescriptorSecretKey -and call as_public, or call TranslatePk2::translate_pk2 with -some function which has access to secret key data.

-

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

-

The resulting type after dereferencing.

-

Dereferences the value.

-

Formats the value using the given formatter. Read more

-

Feeds this value into the given Hasher. Read more

-

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

-

The associated Hash type with the publicKey

-

Converts an object to PublicHash

-

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

-

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

-

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

-

Compares and returns the maximum of two values. Read more

-

Compares and returns the minimum of two values. Read more

-

Restrict a value to a certain interval. Read more

-

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

-

This method tests for !=.

-

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

-

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

-

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

-

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

-

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

-

Converts an object to a public key

-

Convert an object to x-only pubkey

-

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

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Performs the conversion.

-

The alignment of pointer.

-

The type for initializers.

-

Initializes a with the given initializer. Read more

-

Dereferences the given pointer. Read more

-

Mutably dereferences the given pointer. Read more

-

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

-

The resulting type after obtaining ownership.

-

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

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

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

-

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/descriptor/derived/trait.AsDerived.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/trait.AsDerived.html deleted file mode 100644 index b57a1f6748..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/derived/trait.AsDerived.html +++ /dev/null @@ -1,18 +0,0 @@ -AsDerived in bdk::descriptor::derived - Rust - -
pub trait AsDerived {
-    fn as_derived<'s>(
        &self,
        index: u32,
        secp: &'s Secp256k1<All>
    ) -> Descriptor<DerivedDescriptorKey<'s>>; -
fn as_derived_fixed<'s>(
        &self,
        secp: &'s Secp256k1<All>
    ) -> Descriptor<DerivedDescriptorKey<'s>>; -}
Expand description

Utilities to derive descriptors

-

Check out the module level documentation for more.

-

Required methods

Derive a descriptor and transform all of its keys to DerivedDescriptorKey

-

Transform the keys into DerivedDescriptorKey.

-

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

-

Implementors

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

Descriptor

logo
pub enum Descriptor<Pk> where
    Pk: MiniscriptKey, 
{ Bare(Bare<Pk>), @@ -51,38 +51,84 @@ Errors when miniscript exceeds resource limits under p2sh context

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

Get the [DescriptorType] of Descriptor

-

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

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

Checks whether the descriptor is safe.

+

Checks whether all the spend paths in the descriptor are possible on the +bitcoin network under the current standardness and consensus rules. Also +checks whether the descriptor requires signatures on all spend paths and +whether the script is malleable.

+

In general, all the guarantees of miniscript hold only for safe scripts. +The signer may not be able to find satisfactions even if one exists.

+

Computes an upper bound on the weight of a satisfying witness to the +transaction.

+

Assumes all ec-signatures are 73 bytes, including push opcode and +sighash suffix. Includes the weight of the VarInts encoding the +scriptSig and witness stack length.

Errors
-

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

-

Whether or not the descriptor has any wildcards

-

Derives all wildcard keys in the descriptor using the supplied index

-

Panics if given an index ≥ 2^31

-

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

-

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

-
Examples
+

When the descriptor is impossible to safisfy (ex: sh(OP_FALSE)).

+

Computes the Bitcoin address of the descriptor, if one exists

+

Some descriptors like pk() don’t have an address.

+
Errors
+

For raw/bare descriptors that don’t have an address.

+

Computes the scriptpubkey of the descriptor.

+

Computes the scriptSig that will be in place for an unsigned input +spending an output with this descriptor. For pre-segwit descriptors, +which use the scriptSig for signatures, this returns the empty script.

+

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

+

Computes the the underlying script before any hashing is done. For +Bare, Pkh and Wpkh this is the scriptPubkey; for ShWpkh and Sh +this is the redeemScript; for the others it is the witness script.

+
Errors
+

If the descriptor is a taproot descriptor.

+

Computes the scriptCode of a transaction output.

+

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

+
Errors
+

If the descriptor is a taproot descriptor.

+

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

+

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

+

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

+
👎 Deprecated:

use has_wildcards instead

+

Whether or not the descriptor has any wildcards

+

Whether or not the descriptor has any wildcards i.e. /*.

+

Replaces all wildcards (i.e. /*) in the descriptor with a particular derivation index, +turning it into a definite descriptor.

+
Panics
+

If index ≥ 2^31

+
👎 Deprecated:

use at_derivation_index instead

+

Deprecated name for [at_derivation_index].

+

Convert all the public keys in the descriptor to [bitcoin::PublicKey] by deriving them or +otherwise converting them. All [bitcoin::XOnlyPublicKey]s are converted to by adding a +default(0x02) y-coordinate.

+

This is a shorthand for:

+ +
    .expect("Valid ranged descriptor");
+let derived_descriptor = descriptor.at_derivation_index(index).derived_descriptor(&secp);
+

and is only here really here for backwards compatbility. +See at_derivation_index and [derived_descriptor] for more documentation.

+
Errors
+

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

+

Parse a descriptor that may contain secret keys

+

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

+

Serialize a descriptor to string with its secret keys

+

Utility method for deriving the descriptor at each index in a range to find one matching +script_pubkey.

+

If it finds a match then it returns the index it was derived at and the concrete +descriptor at that index. If the descriptor is non-derivable then it will simply check the +script pubkey against the descriptor and return it if it matches (in this case the index +returned will be meaningless).

+

Convert all the public keys in the descriptor to [bitcoin::PublicKey] by deriving them or +otherwise converting them. All [bitcoin::XOnlyPublicKey]s are converted to by adding a +default(0x02) y-coordinate.

+
Examples
use miniscript::descriptor::{Descriptor, DescriptorPublicKey};
 use miniscript::bitcoin::secp256k1;
 use std::str::FromStr;
@@ -91,77 +137,29 @@ spend info is also cached.

let secp = secp256k1::Secp256k1::verification_only(); let descriptor = Descriptor::<DescriptorPublicKey>::from_str("tr(xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ/0/*)") .expect("Valid ranged descriptor"); -let result = descriptor.derived_descriptor(&secp, 0).expect("Non-hardened derivation"); +let result = descriptor.at_derivation_index(0).derived_descriptor(&secp).expect("Non-hardened derivation"); assert_eq!(result.to_string(), "tr(03cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115)#6qm9h8ym");
-
Errors
+
Errors

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

-

Parse a descriptor that may contain secret keys

-

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

-

Serialize a descriptor to string with its secret keys

-

Trait Implementations

Derive a descriptor and transform all of its keys to DerivedDescriptorKey

-

Transform the keys into DerivedDescriptorKey. Read more

-

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

-

Whether the descriptor is safe -Checks whether all the spend paths in the descriptor are possible -on the bitcoin network under the current standardness and consensus rules -Also checks whether the descriptor requires signauture on all spend paths -And whether the script is malleable. -In general, all the guarantees of miniscript hold only for safe scripts. -All the analysis guarantees of miniscript only hold safe scripts. -The signer may not be able to find satisfactions even if one exists

-

Computes the Bitcoin address of the descriptor, if one exists

-

Computes the scriptpubkey of the descriptor

-

Computes the scriptSig that will be in place for an unsigned -input spending an output with this descriptor. For pre-segwit -descriptors, which use the scriptSig for signatures, this -returns the empty script.

-

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

-

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

-
    -
  • When the descriptor is Tr
  • -
-

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

-

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

-

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

-

Get the scriptCode of a transaction output.

-

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

-

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

-

Deserialize this value from the given Serde deserializer. Read more

+

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 +

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 +

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

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

Performs the conversion.

-

The associated error which can be returned from parsing.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

The associated error which can be returned from parsing.

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

-

Parse an expression tree into a descriptor

+

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

Convert the object into an abstract policy

@@ -180,13 +178,9 @@ operator.

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

Serialize this value into the given Serde serializer. Read more

-

Convert a descriptor using abstract keys to one using specific keys -This will panic if translatefpk returns an uncompressed key when -converting to a Segwit descriptor. To prevent this panic, ensure -translatefpk returns an error in this case instead.

-

The associated output type. This must be Self

-

Calls translate_pk with conversion functions that cannot fail

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Converts a descriptor using abstract keys to one using specific keys.

+

The associated output type. This must be Self<Q>.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

@@ -201,18 +195,6 @@ translatefpk returns an error in this case instead.

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

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

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

Converts the given value to a String. Read more

-

Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk Read more

-

Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk Read more

-

Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk Read more

-

Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk Read more

-

Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk Read more

-

Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk 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.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.DescriptorPublicKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.DescriptorPublicKey.html index bf5b85380e..959c695c0f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.DescriptorPublicKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/enum.DescriptorPublicKey.html @@ -1,51 +1,57 @@ -DescriptorPublicKey in bdk::descriptor - Rust +DescriptorPublicKey in bdk::descriptor - Rust
+

DescriptorPublicKey

logo
pub enum DescriptorPublicKey {
-    SinglePub(DescriptorSinglePub),
+    Single(SinglePub),
     XPub(DescriptorXKey<ExtendedPubKey>),
-}
Expand description

The MiniscriptKey corresponding to Descriptors. This can -either be Single public key or a Xpub

-

Variants

SinglePub(DescriptorSinglePub)

Single Public Key

-

XPub(DescriptorXKey<ExtendedPubKey>)

Xpub

+}
Expand description

The descriptor pubkey, either a single pubkey or an xpub.

+

Variants

Single(SinglePub)

Single public key.

+

XPub(DescriptorXKey<ExtendedPubKey>)

Extended public key (xpub).

Implementations

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

Full path, from the master key

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

-

Whether or not the key has a wildcards

-

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

-

Panics if given an index ≥ 2^31

-

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

-

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

-

To ensure there are no wildcards, call .derive(0) or similar; -to avoid hardened derivation steps, start from a DescriptorSecretKey -and call as_public, or call TranslatePk2::translate_pk2 with -some function which has access to secret key data.

+
👎 Deprecated:

use has_wildcard instead

+

Whether or not the key has a wildcard

+

Whether or not the key has a wildcard

+
👎 Deprecated:

use at_derivation_index instead

+

Deprecated name of [at_derivation_index].

+

Replaces any wildcard (i.e. /*) in the key with a particular derivation index, turning it into a +definite key (i.e. one where all the derivation paths are set).

+
Returns
+
    +
  • If this key is not an xpub, returns self.
  • +
  • If this key is an xpub but does not have a wildcard, returns self.
  • +
  • Otherwise, returns the xpub at derivation index (removing the wildcard).
  • +
+
Panics
+

If index ≥ 2^31

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Formats the value using the given formatter. Read more

+

Performs the conversion.

The associated error which can be returned from parsing.

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

Feeds this value into the given Hasher. Read more

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

Turn the key into a DescriptorKey within the requested ScriptContext

-

The associated Hash type with the publicKey

-

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

-

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

-

Converts an object to PublicHash

+

The associated [sha256::Hash] for this [MiniscriptKey], +used in the hash256 fragment. Read more

+

The associated [hash256::Hash] for this [MiniscriptKey], +used in the hash256 fragment. Read more

+

The associated [ripedmd160::Hash] for this [MiniscriptKey] type. +used in the ripemd160 fragment Read more

+

The associated [hash160::Hash] for this [MiniscriptKey] type. +used in the hash160 fragment Read more

+

Returns true if the pubkey is uncompressed. Defaults to false.

+

Returns true if the pubkey is an x-only pubkey. Defaults to false.

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

@@ -63,7 +69,7 @@ operator.

impl Eq for DescriptorPublicKey

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

-

Performs the conversion.

+

Performs the conversion.

Performs the conversion.

The alignment of pointer.

The type for initializers.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/error/enum.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/error/enum.Error.html index 544265be1b..b018009c5b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/error/enum.Error.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/error/enum.Error.html @@ -36,7 +36,7 @@
🔬 This is a nightly-only experimental API. (backtrace)

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

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

Performs the conversion.

+

Performs the conversion.

Performs the conversion.

Performs the conversion.

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/index.html index 17c58340da..4eb1fa5370 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/index.html @@ -6,23 +6,21 @@ logo

Module descriptor

logo
-

Module bdk::descriptor

source · []
Expand description

Descriptors

+

Module bdk::descriptor

source · []
Expand description

Descriptors

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

Re-exports

-
pub use self::checksum::get_checksum;
pub use self::derived::AsDerived;
pub use self::derived::DerivedDescriptorKey;
pub use self::error::Error as DescriptorError;
pub use self::policy::Policy;

Modules

+
pub use self::checksum::get_checksum;
pub use self::error::Error as DescriptorError;
pub use self::policy::Policy;

Modules

Descriptor checksum

-

Derived descriptor keys

Descriptor errors

Descriptor policy

Descriptor templates

Structs

-

Instance of an extended key with origin and derivation path

+

An extended key with origin, derivation path, and wildcard.

Top-level script AST type

Enums

Script descriptor

-

The MiniscriptKey corresponding to Descriptors. This can -either be Single public key or a Xpub

+

The descriptor pubkey, either a single pubkey or an xpub.

Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.BuildSatisfaction.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.BuildSatisfaction.html index e405a778bd..1f6b2be32c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.BuildSatisfaction.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.BuildSatisfaction.html @@ -6,7 +6,7 @@ logo

BuildSatisfaction

logo
pub enum BuildSatisfaction<'a> {
+    

Enum bdk::descriptor::policy::BuildSatisfaction

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

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

Like Psbt variant and also check for expired timelocks

-

Trait Implementations

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.PkOrF.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.PkOrF.html index df6e4525dd..cb44be6ab9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.PkOrF.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.PkOrF.html @@ -6,7 +6,7 @@ logo

PkOrF

logo
pub enum PkOrF {
+    

Enum bdk::descriptor::policy::PkOrF

source · []
pub enum PkOrF {
     Pubkey(PublicKey),
     XOnlyPubkey(XOnlyPublicKey),
     Fingerprint(Fingerprint),
@@ -14,16 +14,16 @@
 

Variants

Pubkey(PublicKey)

A legacy public key

XOnlyPubkey(XOnlyPublicKey)

A x-only public key

Fingerprint(Fingerprint)

An extended key fingerprint

-

Trait Implementations

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Feeds this value into the given Hasher. Read more

+

Formats the value using the given formatter. Read more

+

Feeds this value into the given Hasher. Read more

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

-

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

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

-

This method tests for !=.

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

This method tests for !=.

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

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

PolicyError

logo
pub enum PolicyError {
+    

Enum bdk::descriptor::policy::PolicyError

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

AddOnPartialComplete

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

MixedTimelockUnits

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

IncompatibleConditions

Incompatible conditions (not currently used)

-

Trait Implementations

Formats the value using the given formatter. Read more

-

Formats the value using the given formatter. Read more

-

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

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

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

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

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

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

-

Performs the conversion.

+

Performs the conversion.

Performs the conversion.

-

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

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

-

This method tests for !=.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

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

Satisfaction

logo
pub enum Satisfaction {
+    

Enum bdk::descriptor::policy::Satisfaction

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

Complete

Fields

condition: Condition

Extra conditions that also need to be satisfied

Can satisfy the policy item

None

Cannot satisfy or contribute to the policy item

-

Implementations

Returns whether the Satisfaction is a leaf item

-

Trait Implementations

Returns a copy of the value. Read more

+

Implementations

Returns whether the Satisfaction is a leaf item

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Performs the conversion.

-

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

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

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

-

This method tests for !=.

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

This method tests for !=.

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.SatisfiableItem.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.SatisfiableItem.html index 2f218a606f..175be3339f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.SatisfiableItem.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/enum.SatisfiableItem.html @@ -6,7 +6,7 @@ logo

SatisfiableItem

logo
pub enum SatisfiableItem {
+    

Enum bdk::descriptor::policy::SatisfiableItem

source · []
pub enum SatisfiableItem {
     EcdsaSignature(PkOrF),
     SchnorrSignature(PkOrF),
     Sha256Preimage {
@@ -22,10 +22,10 @@
         hash: Hash,
     },
     AbsoluteTimelock {
-        value: u32,
+        value: LockTime,
     },
     RelativeTimelock {
-        value: u32,
+        value: Sequence,
     },
     Multisig {
         keys: Vec<PkOrF>,
@@ -46,9 +46,9 @@
 

RIPEMD160 preimage hash

Hash160Preimage

Fields

hash: Hash

The digest value

SHA256 then RIPEMD160 preimage hash

-

AbsoluteTimelock

Fields

value: u32

The timestamp value

+

AbsoluteTimelock

Fields

value: LockTime

The timelock value

Absolute timeclock timestamp

-

RelativeTimelock

Fields

value: u32

The locktime value

+

RelativeTimelock

Fields

value: Sequence

The timelock value

Relative timelock locktime

Multisig

Fields

keys: Vec<PkOrF>

The raw public key or extended key fingerprint

threshold: usize

The required threshold count

@@ -56,17 +56,17 @@

Thresh

Fields

items: Vec<Policy>

The policy items

threshold: usize

The required threshold count

Threshold items with threshold count

-

Implementations

Returns whether the SatisfiableItem is a leaf item

-

Returns a unique id for the SatisfiableItem

-

Trait Implementations

Returns a copy of the value. Read more

+

Implementations

Returns whether the SatisfiableItem is a leaf item

+

Returns a unique id for the SatisfiableItem

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Performs the conversion.

-

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

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

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

-

This method tests for !=.

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

This method tests for !=.

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

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

Module policy

logo
-

Module bdk::descriptor::policy

source · []
Expand description

Descriptor policy

+

Module bdk::descriptor::policy

source · []
Expand description

Descriptor policy

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

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

@@ -22,7 +22,8 @@ in a more human-readable format.

let policy = extended_desc.extract_policy(&signers, BuildSatisfaction::None, &secp)?; println!("policy: {}", serde_json::to_string(&policy)?);

Structs

-

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

+

An extra condition that must be satisfied but that is out of control of the user +TODO: use bitcoin::LockTime and bitcoin::Sequence

Descriptor spending policy

Enums

Options to build the satisfaction field in the policy

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/sidebar-items.js index e3e9dae9a0..f785c48037 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"enum":[["BuildSatisfaction","Options to build the satisfaction field in the policy"],["PkOrF","A unique identifier for a key"],["PolicyError","Errors that can happen while extracting and manipulating policies"],["Satisfaction","Represent if and how much a policy item is satisfied by the wallet’s descriptor"],["SatisfiableItem","An item that needs to be satisfied"]],"struct":[["Condition","An extra condition that must be satisfied but that is out of control of the user"],["Policy","Descriptor spending policy"]],"type":[["ConditionMap","Type for a map of sets of [`Condition`] items keyed by each set’s index"],["FoldedConditionMap","Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set’s indexes"]]}); \ No newline at end of file +initSidebarItems({"enum":[["BuildSatisfaction","Options to build the satisfaction field in the policy"],["PkOrF","A unique identifier for a key"],["PolicyError","Errors that can happen while extracting and manipulating policies"],["Satisfaction","Represent if and how much a policy item is satisfied by the wallet’s descriptor"],["SatisfiableItem","An item that needs to be satisfied"]],"struct":[["Condition","An extra condition that must be satisfied but that is out of control of the user TODO: use `bitcoin::LockTime` and `bitcoin::Sequence`"],["Policy","Descriptor spending policy"]],"type":[["ConditionMap","Type for a map of sets of [`Condition`] items keyed by each set’s index"],["FoldedConditionMap","Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set’s indexes"]]}); \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Condition.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Condition.html index 7769f1e421..97e735981d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Condition.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Condition.html @@ -1,40 +1,37 @@ -Condition in bdk::descriptor::policy - Rust +Condition in bdk::descriptor::policy - Rust
+

Condition

logo
pub struct Condition {
-    pub csv: Option<u32>,
-    pub timelock: Option<u32>,
-}
Expand description

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

-

Fields

csv: Option<u32>

Optional CheckSequenceVerify condition

-
timelock: Option<u32>

Optional timelock condition

-

Implementations

Returns true if there are no extra conditions to verify

-

Trait Implementations

Returns a copy of the value. Read more

+

Struct bdk::descriptor::policy::Condition

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

An extra condition that must be satisfied but that is out of control of the user +TODO: use bitcoin::LockTime and bitcoin::Sequence

+

Fields

csv: Option<Sequence>

Optional CheckSequenceVerify condition

+
timelock: Option<LockTime>

Optional timelock condition

+

Implementations

Returns true if there are no extra conditions to verify

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

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

-

Feeds this value into the given Hasher. Read more

+

Formats the value using the given formatter. Read more

+

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

+

Feeds this value into the given Hasher. Read more

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

-

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

-

Compares and returns the maximum of two values. Read more

-

Compares and returns the minimum of two values. Read more

-

Restrict a value to a certain interval. Read more

-

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

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

-

This method tests for !=.

-

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

+

This method tests for !=.

+

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

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

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

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

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

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Policy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Policy.html index 449a0aec06..6696f30774 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Policy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/policy/struct.Policy.html @@ -6,7 +6,7 @@ logo

Policy

logo
pub struct Policy {
+    

Struct bdk::descriptor::policy::Policy

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

Type of this policy node

satisfaction: Satisfaction

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

contribution: Satisfaction

How the wallet’s descriptor can satisfy this policy node

-

Implementations

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

Implementations

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

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

-

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

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

-

Trait Implementations

Returns a copy of the value. Read more

+

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Performs the conversion.

-

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

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

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

-

This method tests for !=.

-

Serialize this value into the given Serde serializer. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

This method tests for !=.

+

Serialize this value into the given Serde serializer. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

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

ConditionMap

logo
-

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

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

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

+

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

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

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

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

FoldedConditionMap

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

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

+

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

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

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

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/sidebar-items.js index 10d06287cf..9ada5a941a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"enum":[["Descriptor","Script descriptor"],["DescriptorPublicKey","The MiniscriptKey corresponding to Descriptors. This can either be Single public key or a Xpub"],["Legacy","Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript under `Bare` ScriptContext"],["Segwitv0","Segwitv0 ScriptContext"],["Wildcard","Whether a descriptor has a wildcard in it"]],"mod":[["checksum","Descriptor checksum"],["derived","Derived descriptor keys"],["error","Descriptor errors"],["policy","Descriptor policy"],["template","Descriptor templates"]],"struct":[["DescriptorXKey","Instance of an extended key with origin and derivation path"],["Miniscript","Top-level script AST type"]],"trait":[["ExtractPolicy","Trait implemented on [`Descriptor`]s to add a method to extract the spending [`policy`]"],["IntoWalletDescriptor","Trait for types which can be converted into an [`ExtendedDescriptor`] and a [`KeyMap`] usable by a wallet in a specific [`Network`]"],["ScriptContext","The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"]],"type":[["DerivedDescriptor","Alias for a [`Descriptor`] that contains extended derived keys"],["ExtendedDescriptor","Alias for a [`Descriptor`] that can contain extended keys using [`DescriptorPublicKey`]"],["HdKeyPaths","Alias for the type of maps that represent derivation paths in a `psbt::Input` or `psbt::Output`"],["KeyMap","Alias type for a map of public key to secret key"],["TapKeyOrigins","Alias for the type of maps that represent taproot key origins in a `psbt::Input` or `psbt::Output`"]]}); \ No newline at end of file +initSidebarItems({"enum":[["Descriptor","Script descriptor"],["DescriptorPublicKey","The descriptor pubkey, either a single pubkey or an xpub."],["Legacy","Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript under `Bare` ScriptContext"],["Segwitv0","Segwitv0 ScriptContext"],["Wildcard","Whether a descriptor has a wildcard in it"]],"mod":[["checksum","Descriptor checksum"],["error","Descriptor errors"],["policy","Descriptor policy"],["template","Descriptor templates"]],"struct":[["DescriptorXKey","An extended key with origin, derivation path, and wildcard."],["Miniscript","Top-level script AST type"]],"trait":[["ExtractPolicy","Trait implemented on [`Descriptor`]s to add a method to extract the spending [`policy`]"],["IntoWalletDescriptor","Trait for types which can be converted into an [`ExtendedDescriptor`] and a [`KeyMap`] usable by a wallet in a specific [`Network`]"],["ScriptContext","The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"]],"type":[["DerivedDescriptor","Alias for a [`Descriptor`] that contains extended derived keys"],["ExtendedDescriptor","Alias for a [`Descriptor`] that can contain extended keys using [`DescriptorPublicKey`]"],["HdKeyPaths","Alias for the type of maps that represent derivation paths in a `psbt::Input` or `psbt::Output`"],["KeyMap","Alias type for a map of public key to secret key"],["TapKeyOrigins","Alias for the type of maps that represent taproot key origins in a `psbt::Input` or `psbt::Output`"]]}); \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.DescriptorXKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.DescriptorXKey.html index c6c445d389..9347a04ed7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.DescriptorXKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.DescriptorXKey.html @@ -1,4 +1,4 @@ -DescriptorXKey in bdk::descriptor - Rust +DescriptorXKey in bdk::descriptor - Rust @@ -11,7 +11,7 @@ pub xkey: K, pub derivation_path: DerivationPath, pub wildcard: Wildcard, -}
Expand description

Instance of an extended key with origin and derivation path

+}
Expand description

An extended key with origin, derivation path, and wildcard.

Fields

origin: Option<(Fingerprint, DerivationPath)>

Origin information

xkey: K

The extended key

derivation_path: DerivationPath

The derivation path

@@ -27,15 +27,33 @@ origin’s and key’s paths.

let ctx = miniscript::bitcoin::secp256k1::Secp256k1::signing_only(); -let key = DescriptorPublicKey::from_str("[d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*")?; +let key = DescriptorPublicKey::from_str("[d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*").or(Err(()))?; let xpub = match key { DescriptorPublicKey::XPub(xpub) => xpub, _ => panic!("Parsing Error"), }; -assert_eq!(xpub.matches(&(bip32::Fingerprint::from_str("d34db33f")?, bip32::DerivationPath::from_str("m/44'/0'/0'/1/42")?), &ctx), Some(bip32::DerivationPath::from_str("m/44'/0'/0'/1")?)); -assert_eq!(xpub.matches(&(bip32::Fingerprint::from_str("ffffffff")?, bip32::DerivationPath::from_str("m/44'/0'/0'/1/42")?), &ctx), None); -assert_eq!(xpub.matches(&(bip32::Fingerprint::from_str("d34db33f")?, bip32::DerivationPath::from_str("m/44'/0'/0'/100/0")?), &ctx), None);
+assert_eq!( + xpub.matches(&( + bip32::Fingerprint::from_str("d34db33f").or(Err(()))?, + bip32::DerivationPath::from_str("m/44'/0'/0'/1/42").or(Err(()))? + ), &ctx), + Some(bip32::DerivationPath::from_str("m/44'/0'/0'/1").or(Err(()))?) +); +assert_eq!( + xpub.matches(&( + bip32::Fingerprint::from_str("ffffffff").or(Err(()))?, + bip32::DerivationPath::from_str("m/44'/0'/0'/1/42").or(Err(()))? + ), &ctx), + None +); +assert_eq!( + xpub.matches(&( + bip32::Fingerprint::from_str("d34db33f").or(Err(()))?, + bip32::DerivationPath::from_str("m/44'/0'/0'/100/0").or(Err(()))? + ), &ctx), + None +);

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.Miniscript.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.Miniscript.html index 2943b0f632..5d2a88feb9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.Miniscript.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/struct.Miniscript.html @@ -4,7 +4,7 @@

Whether the miniscript can exceed the resource limits(Opcodes, Stack limit etc)

Whether the miniscript contains a combination of timelocks

Whether the miniscript has repeated Pk or Pkh

+

Whether the given miniscript contains a raw pkh fragment

Check whether the underlying Miniscript is safe under the current context Lifting these polices would create a semantic representation that does not represent the underlying semantics when miniscript is spent. @@ -28,6 +29,7 @@ Signing logic may not find satisfaction even if one exists.

Use this function to check whether the guarantees of library hold. Most functions of the library like would still work, but results cannot be relied upon

+

Check whether the miniscript follows the given Extra policy [ExtParams]

Iterator-related extensions for Miniscript

Creates a new [Iter] iterator that will iterate over all Miniscript items within AST by traversing its branches. For the specific algorithm please see @@ -35,44 +37,12 @@ AST by traversing its branches. For the specific algorithm please see

Creates a new [PkIter] iterator that will iterate over all plain public keys (and not key hash values) present in Miniscript items within AST by traversing all its branches. For the specific algorithm please see [PkIter::next] function.

-

Creates a new [PkhIter] iterator that will iterate over all public keys hashes (and not -plain public keys) present in Miniscript items within AST by traversing all its branches. -For the specific algorithm please see [PkhIter::next] function.

-

Creates a new [PkPkhIter] iterator that will iterate over all plain public keys and -key hash values present in Miniscript items within AST by traversing all its branches. -For the specific algorithm please see [PkPkhIter::next] function.

Enumerates all child nodes of the current AST node (self) and returns a Vec referencing them.

Returns child node with given index, if any

-

Returns Vec with cloned version of all public keys from the current miniscript item, -if any. Otherwise returns an empty Vec.

-

NB: The function analyzes only single miniscript item and not any of its descendants in AST. -To obtain a list of all public keys within AST use Miniscript::iter_pk() function, for example -miniscript.iter_pubkeys().collect().

-

Returns Vec with hashes of all public keys from the current miniscript item, if any. -Otherwise returns an empty Vec.

-

For each public key the function computes hash; for each hash of the public key the function -returns its cloned copy.

-

NB: The function analyzes only single miniscript item and not any of its descendants in AST. -To obtain a list of all public key hashes within AST use Miniscript::iter_pkh() function, -for example miniscript.iter_pubkey_hashes().collect().

-

Returns Vec of [PkPkh] entries, representing either public keys or public key -hashes, depending on the data from the current miniscript item. If there is no public -keys or hashes, the function returns an empty Vec.

-

NB: The function analyzes only single miniscript item and not any of its descendants in AST. -To obtain a list of all public keys or hashes within AST use Miniscript::iter_pk_pkh() -function, for example miniscript.iter_pubkeys_and_hashes().collect().

Returns Option::Some with cloned n’th public key from the current miniscript item, if any. Otherwise returns Option::None.

NB: The function analyzes only single miniscript item and not any of its descendants in AST.

-

Returns Option::Some with hash of n’th public key from the current miniscript item, -if any. Otherwise returns Option::None.

-

For each public key the function computes hash; for each hash of the public key the function -returns it cloned copy.

-

NB: The function analyzes only single miniscript item and not any of its descendants in AST.

-

Returns Option::Some with hash of n’th public key or hash from the current miniscript item, -if any. Otherwise returns Option::None.

-

NB: The function analyzes only single miniscript item and not any of its descendants in AST.

Add type information(Type and Extdata) to Miniscript based on AstElem fragment. Dependent on display and clone because of Error Display code of type_check.

@@ -85,38 +55,40 @@ scripts without sig or scripts that can exceed resource limits. Some of the analysis guarantees of miniscript are lost when dealing with insane scripts. In general, in a multi-party setting users should only accept sane scripts.

-

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

Attempt to parse an miniscript with extra features that not yet specified in the spec. +Users should not use this function unless they scripts can/will change in the future. +Currently, this function supports the following features: +- Parsing all insane scripts +- Parsing miniscripts with raw pubkey hashes

+

Allowed extra features can be specified by the ext [ExtParams] argument.

+

Attempt to parse a Script into Miniscript representation.

+

This function will fail parsing for scripts that do not clear the +Miniscript::sanity_check checks. Use Miniscript::parse_insane to parse such scripts.

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

Encode as a Bitcoin script

Size, in bytes of the script-pubkey. If this Miniscript is used outside of segwit (e.g. in a bare or P2SH descriptor), this quantity should be @@ -140,18 +112,11 @@ will handle the segwit/non-segwit technicalities for you.

All signatures are assumed to be 73 bytes in size, including the length prefix (segwit) or push opcode (pre-segwit) and sighash postfix.

-

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

-

Attempt to produce non-malleable satisfying witness for the +

Attempt to produce non-malleable satisfying witness for the witness script represented by the parse tree

Attempt to produce a malleable satisfying witness for the witness script represented by the parse tree

-

Lifting corresponds conversion of miniscript into Policy +

Lifting corresponds conversion of miniscript into Policy [policy.semantic.Policy] for human readable or machine analysis. However, naively lifting miniscripts can result in incorrect interpretations that don’t correspond underlying semantics when @@ -161,24 +126,34 @@ This can occur if the miniscript contains a

  • Timelock combination
  • Contains a spend that exceeds resource limits
  • +

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

    +

    Attempt to parse an Miniscripts that don’t follow the spec. +Use this to parse scripts with repeated pubkeys, timelock mixing, malleable +scripts, raw pubkey hashes without sig or scripts that can exceed resource limits.

    +

    Use [ExtParams] builder to specify the types of non-sane rules to allow while parsing.

    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

    -

    Deserialize this value from the given Serde deserializer. 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 +

    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 +

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

    -

    Parse a Miniscript from string and perform sanity checks +

    Parse a Miniscript from string and perform sanity checks See Miniscript::from_str_insane to parse scripts from string that do not clear the Miniscript::sanity_check checks.

    -

    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 Miniscript. As a general rule, this +

    The associated error which can be returned from parsing.

    +

    Parse an expression tree into a Miniscript. As a general rule, this should not be called directly; rather go through the descriptor API.

    -

    Feeds this value into the given Hasher. Read more

    +

    Feeds this value into the given Hasher. Read more

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

    Convert the object into an abstract policy

    Ord of Miniscript must depend only on node and not the type information. @@ -205,15 +180,13 @@ operator.

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

    Serialize this value into the given Serde serializer. Read more

    -

    This will panic if translatefpk returns an uncompressed key when -converting to a Segwit descriptor. To prevent this panic, ensure -translatefpk returns an error in this case instead.

    -

    The associated output type. This must be Self

    -

    Calls translate_pk with conversion functions that cannot fail

    +

    Translates a struct from one generic to another where the translation +for Pk is provided by [Translator]

    +

    The associated output type. This must be Self<Q>.

    Eq of Miniscript must depend only on node and not the type information. The type information and extra_properties can be deterministically determined by the ast.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    Performs the conversion.

    @@ -228,18 +201,6 @@ by the ast.

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

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

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

    Converts the given value to a String. Read more

    -

    Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk Read more

    -

    Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk Read more

    -

    Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk Read more

    -

    Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk Read more

    -

    Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk Read more

    -

    Translate a struct from one generic to another where the -translation for Pk is provided by translatefpk 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.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/index.html index 7cee2870df..9f3eb04e5c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/index.html @@ -6,7 +6,7 @@ logo

    Module template

    logo
    Expand description

    Descriptor templates

    +

    Module bdk::descriptor::template

    source · []
    Expand description

    Descriptor templates

    This module contains the definition of various common script templates that are ready to be used. See the documentation of each template for an example.

    Structs

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/type.DescriptorTemplateOut.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/type.DescriptorTemplateOut.html index 4e06dc5979..baf04090cc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/type.DescriptorTemplateOut.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/template/type.DescriptorTemplateOut.html @@ -7,6 +7,6 @@

    DescriptorTemplateOut

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

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

    -

    Trait Implementations

    Convert to wallet descriptor

    +

    Trait Implementations

    Convert to wallet descriptor

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

    ExtractPolicy

    logo
    pub trait ExtractPolicy {
    +    

    Trait bdk::descriptor::ExtractPolicy

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

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

    -

    Required methods

    Extract the spending policy

    -

    Implementors

    +

    Required methods

    Extract the spending policy

    +

    Implementors

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

    IntoWalletDescriptor

    logo
    pub trait IntoWalletDescriptor {
    +    

    Trait bdk::descriptor::IntoWalletDescriptor

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

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

    -

    Required methods

    Convert to wallet descriptor

    -

    Implementations on Foreign Types

    Implementors

    Required methods

    Convert to wallet descriptor

    +

    Implementations on Foreign Types

    Implementors

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ScriptContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ScriptContext.html index a2814541a2..6d60b6c570 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ScriptContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/descriptor/trait.ScriptContext.html @@ -91,5 +91,5 @@ ones for satisfaction

    Check whether the top-level is type B

    Other top level checks that are context specific

    Check top level consensus rules.

    -

    Implementations on Foreign Types

    Implementors

    +

    Implementations on Foreign Types

    Implementors

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

    DerivedDescriptor

    logo
    -

    Type Definition bdk::descriptor::DerivedDescriptor

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

    Alias for a Descriptor that contains extended derived keys

    +

    Type Definition bdk::descriptor::DerivedDescriptor

    source · []
    pub type DerivedDescriptor = Descriptor<DefiniteDescriptorKey>;
    Expand description

    Alias for a Descriptor that contains extended derived keys

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

    ExtendedDescriptor

    logo
    -

    Type Definition bdk::descriptor::ExtendedDescriptor

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

    Alias for a Descriptor that can contain extended keys using DescriptorPublicKey

    -

    Trait Implementations

    Convert to wallet descriptor

    +

    Type Definition bdk::descriptor::ExtendedDescriptor

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

    Alias for a Descriptor that can contain extended keys using DescriptorPublicKey

    +

    Trait Implementations

    Convert to wallet descriptor

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

    HdKeyPaths

    logo
    -

    Type Definition bdk::descriptor::HdKeyPaths

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

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

    Type Definition bdk::descriptor::HdKeyPaths

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

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

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

    TapKeyOrigins

    logo
    -

    Type Definition bdk::descriptor::TapKeyOrigins

    source · []
    pub type TapKeyOrigins = BTreeMap<XOnlyPublicKey, (Vec<TapLeafHash>, KeySource)>;
    Expand description

    Alias for the type of maps that represent taproot key origins in a psbt::Input or +

    Type Definition bdk::descriptor::TapKeyOrigins

    source · []
    pub type TapKeyOrigins = BTreeMap<XOnlyPublicKey, (Vec<TapLeafHash>, KeySource)>;
    Expand description

    Alias for the type of maps that represent taproot key origins in a psbt::Input or psbt::Output

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.Error.html index 1d13db6203..a532aa1f23 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.Error.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.Error.html @@ -4,7 +4,7 @@
    +

    Error

    logo

    Enum bdk::Error

    source · []
    pub enum Error {
     
    Show 44 variants InvalidU32Bytes(Vec<u8>), @@ -45,9 +45,9 @@ ProgressUpdateError, InvalidOutpoint(OutPoint), Descriptor(Error), - AddressValidator(AddressValidatorError), Encode(Error), Miniscript(Error), + MiniscriptPsbt(MiniscriptPsbtError), Bip32(Error), Secp256k1(Error), Json(Error), @@ -100,9 +100,9 @@ explicit origin provided

    ProgressUpdateError

    Progress update error (maybe the channel has been closed)

    InvalidOutpoint(OutPoint)

    Requested outpoint doesn’t exist in the tx (vout greater than available outputs)

    Descriptor(Error)

    Error related to the parsing and usage of descriptors

    -

    AddressValidator(AddressValidatorError)

    Error that can be returned to fail the validation of an address

    Encode(Error)

    Encoding error

    Miniscript(Error)

    Miniscript error

    +

    MiniscriptPsbt(MiniscriptPsbtError)

    Miniscript PSBT error

    Bip32(Error)

    BIP32 error

    Secp256k1(Error)

    An ECDSA error

    Json(Error)

    Error serializing or deserializing JSON data

    @@ -118,37 +118,36 @@ are needed to satisfy stop_gap.

    Rpc(Error)

    Rpc client error

    Rusqlite(Error)

    Rusqlite client error

    Trait Implementations

    Formats the value using the given formatter. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

    +

    Formats the value using the given formatter. Read more

    +

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

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

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

    👎 Deprecated since 1.42.0:

    use the Display impl or to_string()

    👎 Deprecated since 1.33.0:

    replaced by Error::source, which can support downcasting

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    Performs the conversion.

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    +

    Performs the conversion.

    Performs the conversion.

    The alignment of pointer.

    The type for initializers.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.KeychainKind.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.KeychainKind.html index cc71072f3c..6562deb37f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.KeychainKind.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.KeychainKind.html @@ -28,7 +28,7 @@ by ==.

    Calculate the base32 serialized length

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    -

    Error type if conversion fails

    +

    Error type if conversion fails

    Check if all values are in range and return array-like struct of u5 values

    Performs the conversion.

    Performs the conversion.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.Utxo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.Utxo.html index e3587bf5df..a7142a1613 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.Utxo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/enum.Utxo.html @@ -4,7 +4,7 @@

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

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    Performs the conversion.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/fn.version.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/fn.version.html index d396fd94a0..26d058bd84 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/fn.version.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/fn.version.html @@ -6,6 +6,6 @@ logo
    logo
    -

    Function bdk::version

    source · []
    pub fn version() -> &'static str
    Expand description

    Get the version of BDK at runtime

    +

    Function bdk::version

    source · []
    pub fn version() -> &'static str
    Expand description

    Get the version of BDK at runtime

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

    Crate bdk

    logo
    -

    Crate bdk

    source · []
    Expand description

    A modern, lightweight, descriptor-based wallet library written in Rust.

    +

    Crate bdk

    source · []
    Expand description

    A modern, lightweight, descriptor-based wallet library written in Rust.

    About

    The BDK library aims to be the core building block for Bitcoin wallets of any kind.

      @@ -149,7 +149,7 @@ BDK.

    • key-value-db: key value database based on sled for caching blockchain data

    Re-exports

    -
    pub extern crate bitcoin;
    pub extern crate bitcoincore_rpc;
    pub extern crate electrum_client;
    pub extern crate esplora_client;
    pub extern crate hwi;
    pub extern crate miniscript;
    pub extern crate rusqlite;
    pub extern crate sled;
    pub use descriptor::template;
    pub use descriptor::HdKeyPaths;
    pub use wallet::address_validator;
    pub use wallet::signer;
    pub use wallet::signer::SignOptions;
    pub use wallet::tx_builder::TxBuilder;
    pub use wallet::SyncOptions;
    pub use wallet::Wallet;

    Modules

    +
    pub extern crate bitcoin;
    pub extern crate bitcoincore_rpc;
    pub extern crate electrum_client;
    pub extern crate esplora_client;
    pub extern crate hwi;
    pub extern crate miniscript;
    pub extern crate rusqlite;
    pub extern crate sled;
    pub use descriptor::template;
    pub use descriptor::HdKeyPaths;
    pub use wallet::signer;
    pub use wallet::signer::SignOptions;
    pub use wallet::tx_builder::TxBuilder;
    pub use wallet::SyncOptions;
    pub use wallet::Wallet;

    Modules

    Blockchain backends

    Database types

    Descriptors

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorPublicKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorPublicKey.html index fff4662d60..c47cb982bb 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorPublicKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorPublicKey.html @@ -1,51 +1,57 @@ -DescriptorPublicKey in bdk::keys - Rust +DescriptorPublicKey in bdk::keys - Rust
    +

    DescriptorPublicKey

    logo
    pub enum DescriptorPublicKey {
    -    SinglePub(DescriptorSinglePub),
    +    Single(SinglePub),
         XPub(DescriptorXKey<ExtendedPubKey>),
    -}
    Expand description

    The MiniscriptKey corresponding to Descriptors. This can -either be Single public key or a Xpub

    -

    Variants

    SinglePub(DescriptorSinglePub)

    Single Public Key

    -

    XPub(DescriptorXKey<ExtendedPubKey>)

    Xpub

    +}
    Expand description

    The descriptor pubkey, either a single pubkey or an xpub.

    +

    Variants

    Single(SinglePub)

    Single public key.

    +

    XPub(DescriptorXKey<ExtendedPubKey>)

    Extended public key (xpub).

    Implementations

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

    Full path, from the master key

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

    -

    Whether or not the key has a wildcards

    -

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

    -

    Panics if given an index ≥ 2^31

    -

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

    -

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

    -

    To ensure there are no wildcards, call .derive(0) or similar; -to avoid hardened derivation steps, start from a DescriptorSecretKey -and call as_public, or call TranslatePk2::translate_pk2 with -some function which has access to secret key data.

    +
    👎 Deprecated:

    use has_wildcard instead

    +

    Whether or not the key has a wildcard

    +

    Whether or not the key has a wildcard

    +
    👎 Deprecated:

    use at_derivation_index instead

    +

    Deprecated name of [at_derivation_index].

    +

    Replaces any wildcard (i.e. /*) in the key with a particular derivation index, turning it into a +definite key (i.e. one where all the derivation paths are set).

    +
    Returns
    +
      +
    • If this key is not an xpub, returns self.
    • +
    • If this key is an xpub but does not have a wildcard, returns self.
    • +
    • Otherwise, returns the xpub at derivation index (removing the wildcard).
    • +
    +
    Panics
    +

    If index ≥ 2^31

    Trait Implementations

    Returns a copy of the value. Read more

    Performs copy-assignment from source. Read more

    Formats the value using the given formatter. Read more

    Formats the value using the given formatter. Read more

    +

    Performs the conversion.

    The associated error which can be returned from parsing.

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

    Feeds this value into the given Hasher. Read more

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

    Turn the key into a DescriptorKey within the requested ScriptContext

    -

    The associated Hash type with the publicKey

    -

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

    -

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

    -

    Converts an object to PublicHash

    +

    The associated [sha256::Hash] for this [MiniscriptKey], +used in the hash256 fragment. Read more

    +

    The associated [hash256::Hash] for this [MiniscriptKey], +used in the hash256 fragment. Read more

    +

    The associated [ripedmd160::Hash] for this [MiniscriptKey] type. +used in the ripemd160 fragment Read more

    +

    The associated [hash160::Hash] for this [MiniscriptKey] type. +used in the hash160 fragment Read more

    +

    Returns true if the pubkey is uncompressed. Defaults to false.

    +

    Returns true if the pubkey is an x-only pubkey. Defaults to false.

    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

    @@ -63,7 +69,7 @@ operator.

    impl Eq for DescriptorPublicKey

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    +

    Performs the conversion.

    Performs the conversion.

    The alignment of pointer.

    The type for initializers.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorSecretKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorSecretKey.html index 1bd25e8420..ecfdd10150 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorSecretKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.DescriptorSecretKey.html @@ -1,23 +1,20 @@ -DescriptorSecretKey in bdk::keys - Rust +DescriptorSecretKey in bdk::keys - Rust
    +

    DescriptorSecretKey

    logo
    pub enum DescriptorSecretKey {
    -    SinglePriv(DescriptorSinglePriv),
    +    Single(SinglePriv),
         XPrv(DescriptorXKey<ExtendedPrivKey>),
    -}
    Expand description

    A Secret Key that can be either a single key or an Xprv

    -

    Variants

    SinglePriv(DescriptorSinglePriv)

    Single Secret Key

    -

    XPrv(DescriptorXKey<ExtendedPrivKey>)

    Xprv

    -

    Implementations

    Return the public version of this key, by applying either -DescriptorSinglePriv::as_public or DescriptorXKey<bip32::ExtendedPrivKey>::as_public -depending on the type of key.

    -

    If the key is an “XPrv”, the hardened derivation steps will be applied before converting it -to a public key. See the documentation of DescriptorXKey<bip32::ExtendedPrivKey>::as_public -for more details.

    +}
    Expand description

    The descriptor secret key, either a single private key or an xprv.

    +

    Variants

    Single(SinglePriv)

    Single private key.

    +

    XPrv(DescriptorXKey<ExtendedPrivKey>)

    Extended private key (xpriv).

    +

    Implementations

    Returns the public version of this key.

    +

    If the key is an “XPrv”, the hardened derivation steps will be applied +before converting it to a public key.

    Trait Implementations

    Formats the value using the given formatter. Read more

    Formats the value using the given formatter. Read more

    The associated error which can be returned from parsing.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.KeyError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.KeyError.html index b559b1e22c..5d6aa09535 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.KeyError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.KeyError.html @@ -28,7 +28,7 @@
    👎 Deprecated since 1.33.0:

    replaced by Error::source, which can support downcasting

    Performs the conversion.

    Performs the conversion.

    -

    Performs the conversion.

    +

    Performs the conversion.

    Performs the conversion.

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.SinglePubKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.SinglePubKey.html index d8e4e7d3b2..c55d7c67b9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.SinglePubKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/enum.SinglePubKey.html @@ -1,4 +1,4 @@ -SinglePubKey in bdk::keys - Rust +SinglePubKey in bdk::keys - Rust @@ -9,9 +9,9 @@

    Enum bdk::keys::SinglePubKey

    []
    pub enum SinglePubKey {
         FullKey(PublicKey),
         XOnly(XOnlyPublicKey),
    -}
    Expand description

    Single public key without any origin or range information

    -

    Variants

    FullKey(PublicKey)

    FullKey (compressed or uncompressed)

    -

    XOnly(XOnlyPublicKey)

    XOnlyPublicKey

    +}
    Expand description

    Single public key without any origin or range information.

    +

    Variants

    FullKey(PublicKey)

    A bitcoin public key (compressed or uncompressed).

    +

    XOnly(XOnlyPublicKey)

    An xonly public key.

    Trait Implementations

    Returns a copy of the value. Read more

    Performs copy-assignment from source. Read more

    Formats the value using the given formatter. Read more

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/index.html index 8f2d1a53a5..0778c51260 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/index.html @@ -10,20 +10,19 @@

    Modules

    bip39keys-bip39

    BIP-0039

    Structs

    -

    A Single Descriptor Secret Key with optional origin information

    -

    A Single Descriptor Key with optional origin information

    -

    Output of a GeneratableKey key generation

    +

    Output of a GeneratableKey key generation

    Options for generating a [PrivateKey]

    +

    A descriptor [bitcoin::PrivateKey] with optional origin information.

    +

    A descriptor SinglePubKey with optional origin information.

    Contents of a “sortedmulti” descriptor

    Enums

    Container for public or secret keys

    -

    The MiniscriptKey corresponding to Descriptors. This can -either be Single public key or a Xpub

    -

    A Secret Key that can be either a single key or an Xprv

    +

    The descriptor pubkey, either a single pubkey or an xpub.

    +

    The descriptor secret key, either a single private key or an xprv.

    Enum for extended keys that can be either xprv or xpub

    Errors thrown while working with keys

    Enum representation of the known valid ScriptContexts

    -

    Single public key without any origin or range information

    +

    Single public key without any origin or range information.

    Traits

    Trait for keys that can be derived.

    Trait that adds extra useful methods to ScriptContexts

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

    A Single Descriptor Secret Key with optional origin information

    -

    Fields

    origin: Option<(Fingerprint, DerivationPath)>

    Origin information

    -
    key: PrivateKey

    The key

    -

    Trait Implementations

    Formats the value using the given formatter. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The alignment of pointer.

    -

    The type for initializers.

    -

    Initializes a with the given initializer. Read more

    -

    Dereferences the given pointer. Read more

    -

    Mutably dereferences the given pointer. Read more

    -

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

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.DescriptorSinglePub.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.DescriptorSinglePub.html deleted file mode 100644 index 1301c1e64d..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.DescriptorSinglePub.html +++ /dev/null @@ -1,53 +0,0 @@ -DescriptorSinglePub in bdk::keys - Rust - -
    pub struct DescriptorSinglePub {
    -    pub origin: Option<(Fingerprint, DerivationPath)>,
    -    pub key: SinglePubKey,
    -}
    Expand description

    A Single Descriptor Key with optional origin information

    -

    Fields

    origin: Option<(Fingerprint, DerivationPath)>

    Origin information

    -
    key: SinglePubKey

    The key

    -

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

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

    -

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

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

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

    -

    This method tests for !=.

    -

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

    -

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

    -

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

    -

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

    -

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The alignment of pointer.

    -

    The type for initializers.

    -

    Initializes a with the given initializer. Read more

    -

    Dereferences the given pointer. Read more

    -

    Mutably dereferences the given pointer. Read more

    -

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

    -

    The resulting type after obtaining ownership.

    -

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

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

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

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.SinglePriv.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.SinglePriv.html new file mode 100644 index 0000000000..3e5a27ed7b --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.SinglePriv.html @@ -0,0 +1,32 @@ +SinglePriv in bdk::keys - Rust + +
    pub struct SinglePriv {
    +    pub origin: Option<(Fingerprint, DerivationPath)>,
    +    pub key: PrivateKey,
    +}
    Expand description

    A descriptor [bitcoin::PrivateKey] with optional origin information.

    +

    Fields

    origin: Option<(Fingerprint, DerivationPath)>

    Origin information (fingerprint and derivation path).

    +
    key: PrivateKey

    The private key.

    +

    Trait Implementations

    Formats the value using the given formatter. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    The alignment of pointer.

    +

    The type for initializers.

    +

    Initializes a with the given initializer. Read more

    +

    Dereferences the given pointer. Read more

    +

    Mutably dereferences the given pointer. Read more

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.SinglePub.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.SinglePub.html new file mode 100644 index 0000000000..7dbce9a1b0 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.SinglePub.html @@ -0,0 +1,53 @@ +SinglePub in bdk::keys - Rust + +
    +

    Struct bdk::keys::SinglePub

    []
    pub struct SinglePub {
    +    pub origin: Option<(Fingerprint, DerivationPath)>,
    +    pub key: SinglePubKey,
    +}
    Expand description

    A descriptor SinglePubKey with optional origin information.

    +

    Fields

    origin: Option<(Fingerprint, DerivationPath)>

    Origin information (fingerprint and derivation path).

    +
    key: SinglePubKey

    The public key.

    +

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

    Feeds this value into the given Hasher. Read more

    +

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

    +

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

    +

    Compares and returns the maximum of two values. Read more

    +

    Compares and returns the minimum of two values. Read more

    +

    Restrict a value to a certain interval. Read more

    +

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

    +

    This method tests for !=.

    +

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

    +

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

    +

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

    +

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

    +

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

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Performs the conversion.

    +

    Performs the conversion.

    +

    The alignment of pointer.

    +

    The type for initializers.

    +

    Initializes a with the given initializer. Read more

    +

    Dereferences the given pointer. Read more

    +

    Mutably dereferences the given pointer. Read more

    +

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

    +

    The resulting type after obtaining ownership.

    +

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

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

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.SortedMultiVec.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.SortedMultiVec.html index 81fa14c509..04993a957f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.SortedMultiVec.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/struct.SortedMultiVec.html @@ -16,9 +16,9 @@

    Implementations

    Create a new instance of SortedMultiVec given a list of keys and the threshold

    Internally checks all the applicable size limits and pubkey types limitations according to the current Ctx.

    Parse an expression tree into a SortedMultiVec

    -

    This will panic if translatefpk returns an uncompressed key when +

    This will panic if fpk returns an uncompressed key when converting to a Segwit descriptor. To prevent this panic, ensure -translatefpk returns an error in this case instead.

    +fpk returns an error in this case instead.

    utility function to sanity a sorted multi vec

    Create Terminal::Multi containing sorted pubkeys

    Encode as a Bitcoin script

    @@ -48,9 +48,9 @@ postfix.

    Performs copy-assignment from source. Read more

    Formats the value using the given formatter. Read more

    Formats the value using the given formatter. Read more

    -

    Run a predicate on every key in the descriptor, returning whether +

    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 +

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

    Feeds this value into the given Hasher. Read more

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

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.IntoDescriptorKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.IntoDescriptorKey.html index f6f33c7a1e..b39601a2b6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.IntoDescriptorKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.IntoDescriptorKey.html @@ -42,8 +42,8 @@ checking.

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

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for MyKeyType { fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> { Ok(DescriptorKey::from_public( - DescriptorPublicKey::SinglePub(DescriptorSinglePub { + DescriptorPublicKey::Single(SinglePub { origin: None, key: SinglePubKey::FullKey(self.pubkey), }), diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ScriptContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ScriptContext.html index 3302f52e2f..0561acb6fb 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ScriptContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/keys/trait.ScriptContext.html @@ -91,5 +91,5 @@ ones for satisfaction

    Check whether the top-level is type B

    Other top level checks that are context specific

    Check top level consensus rules.

    -

    Implementations on Foreign Types

    Implementors

    +

    Implementations on Foreign Types

    Implementors

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/struct.TransactionDetails.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/struct.TransactionDetails.html index 6b0d43e33c..736801df20 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/struct.TransactionDetails.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/struct.TransactionDetails.html @@ -4,7 +4,7 @@
    +

    TransactionDetails

    logo
    pub struct TransactionDetails {
         pub transaction: Option<Transaction>,
    @@ -29,7 +29,6 @@ transaction, unconfirmed transaction contains None.

    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

    Deserialize this value from the given Serde deserializer. Read more

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

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/struct.WeightedUtxo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/struct.WeightedUtxo.html index 70bd2631ae..325d651853 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/struct.WeightedUtxo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/struct.WeightedUtxo.html @@ -4,7 +4,7 @@

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

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    Performs the conversion.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/enum.AddressValidatorError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/enum.AddressValidatorError.html deleted file mode 100644 index adeaab10f5..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/enum.AddressValidatorError.html +++ /dev/null @@ -1,53 +0,0 @@ -AddressValidatorError in bdk::wallet::address_validator - Rust - -
    pub enum AddressValidatorError {
    -    UserRejected,
    -    ConnectionError,
    -    TimeoutError,
    -    InvalidScript,
    -    Message(String),
    -}
    Expand description

    Errors that can be returned to fail the validation of an address

    -

    Variants

    UserRejected

    User rejected the address

    -

    ConnectionError

    Network connection error

    -

    TimeoutError

    Network request timeout error

    -

    InvalidScript

    Invalid script

    -

    Message(String)

    A custom error message

    -

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

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

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

    -
    👎 Deprecated since 1.42.0:

    use the Display impl or to_string()

    -
    👎 Deprecated since 1.33.0:

    replaced by Error::source, which can support downcasting

    -

    Performs the conversion.

    -

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

    -

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The alignment of pointer.

    -

    The type for initializers.

    -

    Initializes a with the given initializer. Read more

    -

    Dereferences the given pointer. Read more

    -

    Mutably dereferences the given pointer. Read more

    -

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

    -

    The resulting type after obtaining ownership.

    -

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

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

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

    -

    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/wallet/address_validator/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/index.html deleted file mode 100644 index 372a2f0b0c..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/index.html +++ /dev/null @@ -1,53 +0,0 @@ -bdk::wallet::address_validator - Rust - -
    Expand description

    Address validation callbacks

    -

    The typical usage of those callbacks is for displaying the newly-generated address on a -hardware wallet, so that the user can cross-check its correctness.

    -

    More generally speaking though, these callbacks can also be used to “do something” every time -an address is generated, without necessarily checking or validating it.

    -

    An address validator can be attached to a Wallet by using the -Wallet::add_address_validator method, and -whenever a new address is generated (either explicitly by the user with -Wallet::get_address or internally to create a change -address) all the attached validators will be polled, in sequence. All of them must complete -successfully to continue.

    -

    Example

    -
    #[derive(Debug)]
    -struct PrintAddressAndContinue;
    -
    -impl AddressValidator for PrintAddressAndContinue {
    -    fn validate(
    -        &self,
    -        keychain: KeychainKind,
    -        hd_keypaths: &HdKeyPaths,
    -        script: &Script
    -    ) -> Result<(), AddressValidatorError> {
    -        let address = Address::from_script(script, Network::Testnet)
    -            .as_ref()
    -            .map(Address::to_string)
    -            .unwrap_or(script.to_string());
    -        println!("New address of type {:?}: {}", keychain, address);
    -        println!("HD keypaths: {:#?}", hd_keypaths);
    -
    -        Ok(())
    -    }
    -}
    -
    -let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
    -let mut wallet = Wallet::new(descriptor, None, Network::Testnet, MemoryDatabase::default())?;
    -wallet.add_address_validator(Arc::new(PrintAddressAndContinue));
    -
    -let address = wallet.get_address(New)?;
    -println!("Address: {}", address);
    -

    Enums

    -

    Errors that can be returned to fail the validation of an address

    -

    Traits

    -

    Trait to build address validators

    -
    - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/sidebar-items.js deleted file mode 100644 index 58959ba340..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"enum":[["AddressValidatorError","Errors that can be returned to fail the validation of an address"]],"trait":[["AddressValidator","Trait to build address validators"]]}); \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/trait.AddressValidator.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/trait.AddressValidator.html deleted file mode 100644 index e7477b64b2..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/address_validator/trait.AddressValidator.html +++ /dev/null @@ -1,20 +0,0 @@ -AddressValidator in bdk::wallet::address_validator - Rust - -
    pub trait AddressValidator: Send + Sync + Debug {
    -    fn validate(
            &self,
            keychain: KeychainKind,
            hd_keypaths: &HdKeyPaths,
            script: &Script
        ) -> Result<(), AddressValidatorError>; -}
    👎 Deprecated:

    AddressValidator was rarely used. Address validation can occur outside of BDK

    -
    Expand description

    Trait to build address validators

    -

    All the address validators attached to a wallet with Wallet::add_address_validator will be polled -every time an address (external or internal) is generated by the wallet. Errors returned in the -validator will be propagated up to the original caller that triggered the address generation.

    -

    For a usage example see this module’s documentation.

    -

    Required methods

    👎 Deprecated:

    AddressValidator was rarely used. Address validation can occur outside of BDK

    -

    Validate or inspect an address

    -

    Implementors

    - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/coin_selection/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/coin_selection/index.html index 376cb33600..5342acbb26 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/coin_selection/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/coin_selection/index.html @@ -6,7 +6,7 @@ logo

    Module coin_selection

    logo
    Expand description

    Coin selection

    +

    Module bdk::wallet::coin_selection

    source · []
    Expand description

    Coin selection

    This module provides the trait CoinSelectionAlgorithm that can be implemented to define custom coin selection algorithms.

    You can specify a custom coin selection algorithm through the coin_selection method on diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.AddressIndex.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.AddressIndex.html index d819c27c00..f1808d7e51 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.AddressIndex.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/enum.AddressIndex.html @@ -6,7 +6,7 @@ logo

    AddressIndex

    logo
    pub enum AddressIndex {
    +    

    Enum bdk::wallet::AddressIndex

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

    -

    Trait Implementations

    Formats the value using the given formatter. Read more

    +

    Trait Implementations

    Formats the value using the given formatter. Read more

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

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

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

    +

    Function bdk::wallet::get_funded_wallet

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

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

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

    Deterministically generate a unique name given the descriptors defining the wallet

    +

    Function bdk::wallet::wallet_name_from_descriptor

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

    Deterministically generate a unique name given the descriptors defining the wallet

    Compatible with wallet_name_from_descriptor

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/index.html index 4e943240bc..a03d821588 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/index.html @@ -6,11 +6,10 @@ logo

    Module wallet

    logo
    -

    Module bdk::wallet

    source · []
    Expand description

    Wallet

    +

    Module bdk::wallet

    source · []
    Expand description

    Wallet

    This module defines the Wallet structure.

    Modules

    -

    Address validation callbacks

    -

    Coin selection

    +

    Coin selection

    Wallet export

    hardwaresignerhardware-signer

    HWI Signer

    Generalized signers

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/sidebar-items.js index 82f860a114..441045a7bb 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"enum":[["AddressIndex","The address index selection strategy to use to derived an address from the wallet’s external descriptor. See [`Wallet::get_address`]. If you’re unsure which one to use use `WalletIndex::New`."]],"fn":[["get_funded_wallet","Return a fake wallet that appears to be funded for testing."],["wallet_name_from_descriptor","Deterministically generate a unique name given the descriptors defining the wallet"]],"mod":[["address_validator","Address validation callbacks"],["coin_selection","Coin selection"],["export","Wallet export"],["hardwaresigner","HWI Signer"],["signer","Generalized signers"],["time","Cross-platform time"],["tx_builder","Transaction builder"],["verify","Verify transactions against the consensus rules"]],"struct":[["AddressInfo","A derived address and the index it was found at For convenience this automatically derefs to `Address`"],["SyncOptions","Options to a `sync`."],["Wallet","A Bitcoin wallet"]],"trait":[["IsDust","Trait to check if a value is below the dust limit. We are performing dust value calculation for a given script public key using rust-bitcoin to keep it compatible with network dust rate"]]}); \ No newline at end of file +initSidebarItems({"enum":[["AddressIndex","The address index selection strategy to use to derived an address from the wallet’s external descriptor. See [`Wallet::get_address`]. If you’re unsure which one to use use `WalletIndex::New`."]],"fn":[["get_funded_wallet","Return a fake wallet that appears to be funded for testing."],["wallet_name_from_descriptor","Deterministically generate a unique name given the descriptors defining the wallet"]],"mod":[["coin_selection","Coin selection"],["export","Wallet export"],["hardwaresigner","HWI Signer"],["signer","Generalized signers"],["time","Cross-platform time"],["tx_builder","Transaction builder"],["verify","Verify transactions against the consensus rules"]],"struct":[["AddressInfo","A derived address and the index it was found at For convenience this automatically derefs to `Address`"],["SyncOptions","Options to a `sync`."],["Wallet","A Bitcoin wallet"]],"trait":[["IsDust","Trait to check if a value is below the dust limit. We are performing dust value calculation for a given script public key using rust-bitcoin to keep it compatible with network dust rate"]]}); \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerError.html index 9d19b8fdc5..ef7a742721 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.SignerError.html @@ -47,7 +47,7 @@ explicitly allowed them

    👎 Deprecated since 1.33.0:

    replaced by Error::source, which can support downcasting

    Performs the conversion.

    Performs the conversion.

    -

    Performs the conversion.

    +

    Performs the conversion.

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

    This method tests for !=.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.TapLeavesOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.TapLeavesOptions.html index 71e7889f34..0aea4a10ea 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.TapLeavesOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/enum.TapLeavesOptions.html @@ -4,9 +4,9 @@
    +

    TapLeavesOptions

    logo
    pub enum TapLeavesOptions {
    +    

    Enum bdk::wallet::signer::TapLeavesOptions

    source · []
    pub enum TapLeavesOptions {
         All,
         Include(Vec<TapLeafHash>),
         Exclude(Vec<TapLeafHash>),
    @@ -17,14 +17,14 @@
     some of the specified leaves, if it doesn’t have the right key to sign them.

    Exclude(Vec<TapLeafHash>)

    The signer won’t sign the specified leaves.

    None

    The signer won’t sign any leaf.

    -

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Trait Implementations

    Returns a copy of the value. Read more

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

    -

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

    Formats the value using the given formatter. Read more

    +

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

    +

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

    -

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    This method tests for !=.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    Performs the conversion.

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

    Module signer

    logo
    -

    Module bdk::wallet::signer

    source · []
    Expand description

    Generalized signers

    +

    Module bdk::wallet::signer

    source · []
    Expand description

    Generalized signers

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

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignOptions.html index 8cf5d0ab5a..0c7c842dab 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignOptions.html @@ -6,7 +6,7 @@ logo

    SignOptions

    logo
    pub struct SignOptions {
    +    

    Struct bdk::wallet::signer::SignOptions

    source · []
    pub struct SignOptions {
         pub trust_witness_utxo: bool,
         pub assume_height: Option<u32>,
         pub allow_all_sighashes: bool,
    @@ -47,10 +47,10 @@ or not. This option is ignored if we’re signing a non-taproot PSBT.

    allow_grinding: bool

    Whether we should grind ECDSA signature to ensure signing with low r or not. Defaults to true, i.e., we always grind ECDSA signature to sign with low r.

    -

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Trait Implementations

    Returns a copy of the value. Read more

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

    +

    Formats the value using the given formatter. Read more

    +

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

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignersContainer.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignersContainer.html index 7d872d1c1c..9953181e0a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignersContainer.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/signer/struct.SignersContainer.html @@ -7,17 +7,17 @@

    SignersContainer

    logo
    pub struct SignersContainer(_);
    Expand description

    Container for multiple signers

    -

    Implementations

    Create a map of public keys to secret keys

    -

    Build a new signer container from a KeyMap

    +

    Implementations

    Create a map of public keys to secret keys

    +

    Build a new signer container from a KeyMap

    Also looks at the corresponding descriptor to determine the SignerContext to attach to the signers

    -

    Default constructor

    -

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

    Default constructor

    +

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

    -

    Removes a signer from the container and returns it

    -

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

    -

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

    -

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

    +

    Removes a signer from the container and returns it

    +

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

    +

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

    +

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

    Trait Implementations

    Returns a copy of the value. Read more

    Performs copy-assignment from source. Read more

    Formats the value using the given formatter. Read more

    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 9b4e27e3fa..11b692d3ed 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.AddressInfo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.AddressInfo.html @@ -4,9 +4,9 @@

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

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

    -

    Trait Implementations

    Formats the value using the given formatter. Read more

    -

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Formats the value using the given formatter. Read more

    -

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

    Trait Implementations

    Formats the value using the given formatter. Read more

    +

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Formats the value using the given formatter. Read more

    +

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

    -

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    This method tests for !=.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    Performs the conversion.

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

    SyncOptions

    logo
    pub struct SyncOptions {
    +    

    Struct bdk::wallet::SyncOptions

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

    Options to a sync.

    Fields

    progress: Option<Box<dyn Progress>>

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

    -

    Trait Implementations

    Formats the value using the given formatter. Read more

    -

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

    +

    Trait Implementations

    Formats the value using the given formatter. Read more

    +

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

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Wallet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Wallet.html index 80409b9b8c..f9a724e5ed 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 @@ -4,9 +4,9 @@
    +

    Wallet

    logo
    -

    Struct bdk::wallet::Wallet

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

    A Bitcoin wallet

    +

    Struct bdk::wallet::Wallet

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

    A Bitcoin wallet

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

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

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

    Implementations

    👎 Deprecated:

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

    +

    Implementations

    👎 Deprecated:

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

    Create a new “offline” wallet

    -

    Create a wallet.

    +

    Create a wallet.

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

    -

    Get the Bitcoin network the wallet is using.

    -

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

    Get the Bitcoin network the wallet is using.

    +

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

    -

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

    +

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

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

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

    -

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

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

    -

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

    -

    Return the list of unspent outputs of this wallet

    +

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

    +

    Return the list of unspent outputs of this wallet

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

    -

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

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

    -

    Return a single transactions made and received by the wallet

    +

    Return a single transactions made and received by the wallet

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

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

    -

    Return an unsorted list of transactions made and received by the wallet

    +

    Return an unsorted list of transactions made and received by the wallet

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

    To sort transactions, the following code can be used:

    @@ -57,13 +57,13 @@ wallet’s database.

    });

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

    -

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

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

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

    -

    Add an external signer

    +

    Add an external signer

    See the signer module for an example.

    -

    Get the signers

    +

    Get the signers

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

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

    Add an address validator

    -

    See the address_validator module for an example.

    -
    👎 Deprecated

    Get the address validators

    -

    See the address_validator module.

    -

    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, details) = {
    @@ -87,7 +83,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.

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

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

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

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

    The SignOptions can be used to tweak the behavior of the software signers, and the way the transaction is finalized at the end. Note that it can’t be guaranteed that every @@ -126,24 +122,24 @@ 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.

    -

    get the corresponding PSBT Input for a LocalUtxo

    -

    Return an immutable reference to the internal database

    -

    Sync the internal database with the blockchain

    -

    Return the checksum of the public descriptor associated to keychain

    +

    Return the secp256k1 context used for all signing operations

    +

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

    +

    get the corresponding PSBT Input for a LocalUtxo

    +

    Return an immutable reference to the internal database

    +

    Sync the internal database with the blockchain

    +

    Return the checksum of the public descriptor associated to keychain

    Internally calls Self::get_descriptor_for_keychain to fetch the right descriptor

    -

    Trait Implementations

    Formats the value using the given formatter. Read more

    +

    Trait Implementations

    Formats the value using the given formatter. Read more

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/trait.IsDust.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/trait.IsDust.html index 2de5f7319e..9d5d2db912 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/trait.IsDust.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/trait.IsDust.html @@ -6,11 +6,11 @@ logo

    IsDust

    logo
    -

    Trait bdk::wallet::IsDust

    source · []
    pub trait IsDust {
    +    

    Trait bdk::wallet::IsDust

    source · []
    pub trait IsDust {
         fn is_dust(&self, script: &Script) -> bool;
     }
    Expand description

    Trait to check if a value is below the dust limit. We are performing dust value calculation for a given script public key using rust-bitcoin to keep it compatible with network dust rate

    -

    Required methods

    Check whether or not a value is below dust limit

    -

    Implementations on Foreign Types

    Implementors

    +

    Required methods

    Check whether or not a value is below dust limit

    +

    Implementations on Foreign Types

    Implementors

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

    ChangeSpendPolicy

    logo
    pub enum ChangeSpendPolicy {
    +    

    Enum bdk::wallet::tx_builder::ChangeSpendPolicy

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

    Variants

    ChangeAllowed

    Use both change and non-change outputs (default)

    OnlyChange

    Only use change outputs (see TxBuilder::only_spend_change)

    ChangeForbidden

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

    -

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Trait Implementations

    Returns a copy of the value. Read more

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

    -

    Feeds this value into the given Hasher. Read more

    +

    Formats the value using the given formatter. Read more

    +

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

    +

    Feeds this value into the given Hasher. Read more

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

    -

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

    +

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

    Compares and returns the maximum of two values. Read more

    Compares and returns the minimum of two values. Read more

    Restrict a value to a certain interval. Read more

    -

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

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

    This method tests for !=.

    -

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

    +

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

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

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

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

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    Performs the conversion.

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

    TxOrdering

    logo
    pub enum TxOrdering {
    +    

    Enum bdk::wallet::tx_builder::TxOrdering

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

    Variants

    Shuffle

    Randomized (default)

    Untouched

    Unchanged

    Bip69Lexicographic

    BIP69 / Lexicographic

    -

    Implementations

    Sort transaction inputs and outputs by TxOrdering variant

    -

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Implementations

    Sort transaction inputs and outputs by TxOrdering variant

    +

    Trait Implementations

    Returns a copy of the value. Read more

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

    -

    Feeds this value into the given Hasher. Read more

    +

    Formats the value using the given formatter. Read more

    +

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

    +

    Feeds this value into the given Hasher. Read more

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

    -

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

    +

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

    Compares and returns the maximum of two values. Read more

    Compares and returns the minimum of two values. Read more

    Restrict a value to a certain interval. Read more

    -

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

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

    This method tests for !=.

    -

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

    +

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

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

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

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

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    Performs the conversion.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.BumpFee.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.BumpFee.html index 25788ad05d..ca386919e3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.BumpFee.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.BumpFee.html @@ -6,12 +6,12 @@ logo

    BumpFee

    logo
    pub struct BumpFee;
    Expand description

    Marker type to indicate the TxBuilder is being used to bump the fee of an existing transaction.

    -

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Struct bdk::wallet::tx_builder::BumpFee

    source · []
    pub struct BumpFee;
    Expand description

    Marker type to indicate the TxBuilder is being used to bump the fee of an existing transaction.

    +

    Trait Implementations

    Returns a copy of the value. Read more

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Formats the value using the given formatter. Read more

    +

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

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    Performs the conversion.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.CreateTx.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.CreateTx.html index 06ff3f4ddd..fac1e51dee 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.CreateTx.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.CreateTx.html @@ -6,13 +6,13 @@ logo

    CreateTx

    logo
    pub struct CreateTx;
    Expand description

    Marker type to indicate the TxBuilder is being used to create a new transaction (as opposed +

    Struct bdk::wallet::tx_builder::CreateTx

    source · []
    pub struct CreateTx;
    Expand description

    Marker type to indicate the TxBuilder is being used to create a new transaction (as opposed to bumping the fee of an existing one).

    -

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Trait Implementations

    Returns a copy of the value. Read more

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Formats the value using the given formatter. Read more

    +

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

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    Performs the conversion.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.TxBuilder.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.TxBuilder.html index 9f79d6389a..b9fc85c7d8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.TxBuilder.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/struct.TxBuilder.html @@ -6,7 +6,7 @@ logo

    TxBuilder

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

    A transaction builder

    +

    Struct bdk::wallet::tx_builder::TxBuilder

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

    A transaction builder

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

    @@ -37,9 +37,9 @@ as in the following example:

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

    For further examples see this module’s documentation;

    -

    Implementations

    Set a custom fee rate

    -

    Set an absolute fee

    -

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

    +

    Implementations

    Set a custom fee rate

    +

    Set an absolute fee

    +

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

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

    -

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

    +

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

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

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

    -

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

    +

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

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

    -

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

    +

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

    At a minimum to add a foreign UTXO we need:

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

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

      -

    Only spend utxos added by add_utxo.

    +

    Only spend utxos added by add_utxo.

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

    -

    Replace the internal list of unspendable utxos with a new list

    +

    Replace the internal list of unspendable utxos with a new list

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

    -

    Add a utxo to the internal list of unspendable utxos

    +

    Add a utxo to the internal list of unspendable utxos

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

    -

    Sign with a specific sig hash

    +

    Sign with a specific sig hash

    Use this option very carefully

    -

    Choose the ordering for inputs and outputs of the transaction

    -

    Use a specific nLockTime while creating the transaction

    +

    Choose the ordering for inputs and outputs of the transaction

    +

    Use a specific nLockTime while creating the transaction

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

    -

    Build a transaction with a specific version

    +

    Build a transaction with a specific version

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

    -

    Do not spend change outputs

    +

    Do not spend change outputs

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

    -

    Only spend change outputs

    +

    Only spend change outputs

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

    -

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

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

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

    -

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

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

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

    -

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

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

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

    -

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

    -

    Choose the coin selection algorithm

    +

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

    +

    Choose the coin selection algorithm

    Overrides the DefaultCoinSelectionAlgorithm.

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

    -

    Finish building the transaction.

    +

    Finish building the transaction.

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

    -

    Enable signaling RBF

    +

    Enable signaling RBF

    This will use the default nSequence value of 0xFFFFFFFD.

    -

    Enable signaling RBF with a specific nSequence value

    +

    Enable signaling RBF with a specific nSequence value

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

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

    -

    Set the current blockchain height.

    +

    Set the current blockchain height.

    This will be used to:

    1. Set the nLockTime for preventing fee sniping. @@ -182,12 +182,12 @@ If you want to create a transaction that spends immature coinbase inputs, manual add them using TxBuilder::add_utxos.

    In both cases, if you don’t provide a current height, we use the last sync height.

    -

    Set whether or not the dust limit is checked.

    +

    Set whether or not the dust limit is checked.

    Note: by avoiding a dust limit check you may end up with a transaction that is non-standard.

    -

    Replace the recipients already added with a new list

    -

    Add a recipient to the internal list

    -

    Add data as an output, using OP_RETURN

    -

    Sets the address to drain excess coins to.

    +

    Replace the recipients already added with a new list

    +

    Add a recipient to the internal list

    +

    Add data as an output, using OP_RETURN

    +

    Sets the address to drain excess coins to.

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

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

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

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

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

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

    -

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Trait Implementations

    Returns a copy of the value. Read more

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    +

    Formats the value using the given formatter. Read more

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/trait.TxBuilderContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/trait.TxBuilderContext.html index c4972068c4..c201e5a0a0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/trait.TxBuilderContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/tx_builder/trait.TxBuilderContext.html @@ -6,6 +6,6 @@ logo

    TxBuilderContext

    logo
    pub trait TxBuilderContext: Debug + Default + Clone { }
    Expand description

    Context in which the TxBuilder is valid

    -

    Implementors

    +

    Trait bdk::wallet::tx_builder::TxBuilderContext

    source · []
    pub trait TxBuilderContext: Debug + Default + Clone { }
    Expand description

    Context in which the TxBuilder is valid

    +

    Implementors

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/verify/enum.VerifyError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/verify/enum.VerifyError.html index b5227fe28b..5b15fda6f6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/verify/enum.VerifyError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/verify/enum.VerifyError.html @@ -25,7 +25,7 @@
    👎 Deprecated since 1.33.0:

    replaced by Error::source, which can support downcasting

    Performs the conversion.

    Performs the conversion.

    -

    Performs the conversion.

    +

    Performs the conversion.

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    Immutably borrows from an owned value. Read more

    Mutably borrows from an owned value. Read more

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk/descriptor/derived/trait.AsDerived.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk/descriptor/derived/trait.AsDerived.js deleted file mode 100644 index 8262d3bea5..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk/descriptor/derived/trait.AsDerived.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["bdk"] = []; -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 49e00406cb..f53bcf3ca8 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Clone for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Clone for ElectrumBlockchainConfig","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Clone for RpcConfig","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Clone for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Clone for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Clone for RpcBlockchainFactory","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Clone for EsploraBlockchainConfig","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Clone for BitcoinPeerConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Clone for CompactFiltersBlockchainConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Clone for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl Clone for NoopProgress","synthetic":false,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Clone for LogProgress","synthetic":false,"types":["bdk::blockchain::LogProgress"]},{"text":"impl Clone for SyncTime","synthetic":false,"types":["bdk::database::SyncTime"]},{"text":"impl<'s> Clone for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl Clone for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Clone for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Clone for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Clone for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Clone for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl<'a> Clone for BuildSatisfaction<'a>","synthetic":false,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl Clone for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<K: Clone, Ctx: ScriptContext> Clone for GeneratedKey<K, Ctx>","synthetic":false,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Clone for PrivateKeyGenerateOptions","synthetic":false,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Clone for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl Clone for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl Clone for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl Clone for WeightedUtxo","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Clone for Utxo","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl Clone for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl Clone for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl Clone for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl Clone for AddressValidatorError","synthetic":false,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl Clone for LargestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Clone for OldestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Clone for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Clone for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Clone for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S: Clone + Sized + Debug + Clone> Clone for SignerWrapper<S>","synthetic":false,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Clone for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Clone for SignersContainer","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Clone for SignOptions","synthetic":false,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Clone for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Clone for CreateTx","synthetic":false,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Clone for BumpFee","synthetic":false,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, Cs: Clone, Ctx, D> Clone for TxBuilder<'a, D, Cs, Ctx>","synthetic":false,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Clone for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Clone for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}]; +implementors["bdk"] = [{"text":"impl Clone for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Clone for ElectrumBlockchainConfig","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Clone for RpcConfig","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Clone for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Clone for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Clone for RpcBlockchainFactory","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Clone for EsploraBlockchainConfig","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Clone for BitcoinPeerConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Clone for CompactFiltersBlockchainConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Clone for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl Clone for NoopProgress","synthetic":false,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Clone for LogProgress","synthetic":false,"types":["bdk::blockchain::LogProgress"]},{"text":"impl Clone for SyncTime","synthetic":false,"types":["bdk::database::SyncTime"]},{"text":"impl Clone for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Clone for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Clone for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Clone for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Clone for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl<'a> Clone for BuildSatisfaction<'a>","synthetic":false,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl Clone for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<K: Clone, Ctx: ScriptContext> Clone for GeneratedKey<K, Ctx>","synthetic":false,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Clone for PrivateKeyGenerateOptions","synthetic":false,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Clone for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl Clone for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl Clone for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl Clone for WeightedUtxo","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Clone for Utxo","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl Clone for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl Clone for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl Clone for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl Clone for LargestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Clone for OldestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Clone for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Clone for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Clone for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S: Clone + Sized + Debug + Clone> Clone for SignerWrapper<S>","synthetic":false,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Clone for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Clone for SignersContainer","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Clone for SignOptions","synthetic":false,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Clone for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Clone for CreateTx","synthetic":false,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Clone for BumpFee","synthetic":false,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, Cs: Clone, Ctx, D> Clone for TxBuilder<'a, D, Cs, Ctx>","synthetic":false,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Clone for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Clone for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}]; 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.Eq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Eq.js index 3f0f8e8aed..00c422007a 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Eq for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Eq for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl<'s> Eq for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl Eq for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Eq for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Eq for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Eq for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Eq for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Eq for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl Eq for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl Eq for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl Eq for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl Eq for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl Eq for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl Eq for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl Eq for AddressValidatorError","synthetic":false,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl Eq for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Eq for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Eq for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl Eq for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Eq for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Eq for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}]; +implementors["bdk"] = [{"text":"impl Eq for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Eq for ElectrumBlockchainConfig","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Eq for RpcConfig","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Eq for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Eq for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Eq for EsploraBlockchainConfig","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Eq for BitcoinPeerConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Eq for CompactFiltersBlockchainConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Eq for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl Eq for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Eq for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Eq for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Eq for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Eq for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Eq for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl Eq for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl Eq for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl Eq for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl Eq for WeightedUtxo","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Eq for Utxo","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl Eq for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl Eq for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl Eq for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl Eq for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Eq for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Eq for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl Eq for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Eq for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Eq for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Eq for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Eq for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]}]; 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 43c7461b7b..4d281f26e6 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Ord for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl<'s> Ord for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl Ord for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Ord for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Ord for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Ord for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Ord for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}]; +implementors["bdk"] = [{"text":"impl Ord for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Ord for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Ord for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Ord for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Ord for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}]; 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 54b6ae1e59..d56485b2fd 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl PartialEq<AnyBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl PartialEq<ElectrumBlockchainConfig> for ElectrumBlockchainConfig","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl PartialEq<RpcConfig> for RpcConfig","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl PartialEq<RpcSyncParams> for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl PartialEq<Auth> for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl PartialEq<EsploraBlockchainConfig> for EsploraBlockchainConfig","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl PartialEq<BitcoinPeerConfig> for BitcoinPeerConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl PartialEq<CompactFiltersBlockchainConfig> for CompactFiltersBlockchainConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl PartialEq<Capability> for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl<'s> PartialEq<DerivedDescriptorKey<'s>> for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl PartialEq<PkOrF> for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl PartialEq<SatisfiableItem> for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl PartialEq<Satisfaction> for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl PartialEq<Policy> for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl PartialEq<Condition> for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl PartialEq<PolicyError> for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl PartialEq<ScriptContextEnum> for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl PartialEq<KeychainKind> for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl PartialEq<FeeRate> for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl PartialEq<LocalUtxo> for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl PartialEq<WeightedUtxo> for WeightedUtxo","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl PartialEq<Utxo> for Utxo","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl PartialEq<TransactionDetails> for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl PartialEq<BlockTime> for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl PartialEq<Balance> for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl PartialEq<AddressValidatorError> for AddressValidatorError","synthetic":false,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl PartialEq<SignerId> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl PartialEq<SignerError> for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl PartialEq<SignerContext> for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl PartialEq<SignerOrdering> for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl PartialEq<TapLeavesOptions> for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl PartialEq<TxOrdering> for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl PartialEq<ChangeSpendPolicy> for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl PartialEq<AddressInfo> for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]}]; +implementors["bdk"] = [{"text":"impl PartialEq<AnyBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl PartialEq<ElectrumBlockchainConfig> for ElectrumBlockchainConfig","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl PartialEq<RpcConfig> for RpcConfig","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl PartialEq<RpcSyncParams> for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl PartialEq<Auth> for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl PartialEq<EsploraBlockchainConfig> for EsploraBlockchainConfig","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl PartialEq<BitcoinPeerConfig> for BitcoinPeerConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl PartialEq<CompactFiltersBlockchainConfig> for CompactFiltersBlockchainConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl PartialEq<Capability> for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl PartialEq<PkOrF> for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl PartialEq<SatisfiableItem> for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl PartialEq<Satisfaction> for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl PartialEq<Policy> for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl PartialEq<Condition> for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl PartialEq<PolicyError> for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl PartialEq<ScriptContextEnum> for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl PartialEq<KeychainKind> for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl PartialEq<FeeRate> for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl PartialEq<LocalUtxo> for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl PartialEq<WeightedUtxo> for WeightedUtxo","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl PartialEq<Utxo> for Utxo","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl PartialEq<TransactionDetails> for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl PartialEq<BlockTime> for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl PartialEq<Balance> for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl PartialEq<SignerId> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl PartialEq<SignerError> for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl PartialEq<SignerContext> for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl PartialEq<SignerOrdering> for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl PartialEq<TapLeavesOptions> for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl PartialEq<TxOrdering> for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl PartialEq<ChangeSpendPolicy> for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl PartialEq<AddressInfo> for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]}]; 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.PartialOrd.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialOrd.js index 796bb1cf6b..c42572b6ee 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl PartialOrd<Auth> for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl<'s> PartialOrd<DerivedDescriptorKey<'s>> for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl PartialOrd<Condition> for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl PartialOrd<FeeRate> for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl PartialOrd<SignerId> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl PartialOrd<SignerOrdering> for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl PartialOrd<TxOrdering> for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl PartialOrd<ChangeSpendPolicy> for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}]; +implementors["bdk"] = [{"text":"impl PartialOrd<Auth> for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl PartialOrd<Condition> for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl PartialOrd<FeeRate> for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl PartialOrd<SignerId> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl PartialOrd<SignerOrdering> for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl PartialOrd<TxOrdering> for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl PartialOrd<ChangeSpendPolicy> for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}]; 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 a076402650..7108424008 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.From.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.From.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<AddressValidatorError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<PolicyError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<SignerError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<KeyError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<PsbtParseError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<CompactFiltersError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<VerifyError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<ElectrumBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<EsploraBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<CompactFiltersBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<RpcBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<ElectrumBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<EsploraBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<CompactFiltersBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<RpcConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<Client> for ElectrumBlockchain","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl From<Auth> for RpcAuth","synthetic":false,"types":["bitcoincore_rpc::client::Auth"]},{"text":"impl From<BlockTime> for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<SystemTimeError> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<MemoryDatabase> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<Tree> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<SqliteDatabase> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<<MemoryDatabase as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<<Tree as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<<SqliteDatabase as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<()> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<SledDbConfiguration> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<SqliteDbConfiguration> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<KeyError> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<PolicyError> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<bool> for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl From<SatisfiableItem> for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl<Ctx: ScriptContext> From<ExtendedPubKey> for ExtendedKey<Ctx>","synthetic":false,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<Ctx: ScriptContext> From<ExtendedPrivKey> for ExtendedKey<Ctx>","synthetic":false,"types":["bdk::keys::ExtendedKey"]},{"text":"impl From<Error> for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl From<Error> for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl From<Hash> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl From<Fingerprint> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl From<Error> for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl From<Error> for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl From<Error> for VerifyError","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl From<Error> for VerifyError","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]}]; +implementors["bdk"] = [{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<PolicyError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<SignerError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<KeyError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<PsbtParseError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<CompactFiltersError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<VerifyError> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl From<ElectrumBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<EsploraBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<CompactFiltersBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<RpcBlockchain> for AnyBlockchain","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl From<ElectrumBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<EsploraBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<CompactFiltersBlockchainConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<RpcConfig> for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl From<Client> for ElectrumBlockchain","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl From<Auth> for RpcAuth","synthetic":false,"types":["bitcoincore_rpc::client::Auth"]},{"text":"impl From<BlockTime> for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<SystemTimeError> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<Error> for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl From<MemoryDatabase> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<Tree> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<SqliteDatabase> for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl From<<MemoryDatabase as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<<Tree as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<<SqliteDatabase as BatchDatabase>::Batch> for AnyBatch","synthetic":false,"types":["bdk::database::any::AnyBatch"]},{"text":"impl From<()> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<SledDbConfiguration> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<SqliteDbConfiguration> for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl From<KeyError> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<Error> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<PolicyError> for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl From<bool> for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl From<SatisfiableItem> for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl<Ctx: ScriptContext> From<ExtendedPubKey> for ExtendedKey<Ctx>","synthetic":false,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<Ctx: ScriptContext> From<ExtendedPrivKey> for ExtendedKey<Ctx>","synthetic":false,"types":["bdk::keys::ExtendedKey"]},{"text":"impl From<Error> for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl From<Error> for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl From<Hash> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl From<Fingerprint> for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl From<Error> for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl From<Error> for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl From<Error> for VerifyError","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl From<Error> for VerifyError","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]}]; 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/default/trait.Default.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/default/trait.Default.js index 422fff78f1..4534113581 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Default for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Default for Mempool","synthetic":false,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Default for NoopProgress","synthetic":false,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Default for LogProgress","synthetic":false,"types":["bdk::blockchain::LogProgress"]},{"text":"impl Default for MemoryDatabase","synthetic":false,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Default for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Default for PrivateKeyGenerateOptions","synthetic":false,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Default for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl Default for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl Default for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl Default for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl Default for LargestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Default for OldestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Default for BranchAndBoundCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Default for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Default for SignersContainer","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Default for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Default for SignOptions","synthetic":false,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Default for CreateTx","synthetic":false,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Default for BumpFee","synthetic":false,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl Default for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Default for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Default for SyncOptions","synthetic":false,"types":["bdk::wallet::SyncOptions"]}]; +implementors["bdk"] = [{"text":"impl Default for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Default for Mempool","synthetic":false,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Default for NoopProgress","synthetic":false,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Default for LogProgress","synthetic":false,"types":["bdk::blockchain::LogProgress"]},{"text":"impl Default for MemoryDatabase","synthetic":false,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Default for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Default for PrivateKeyGenerateOptions","synthetic":false,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Default for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl Default for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl Default for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl Default for LargestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Default for OldestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Default for BranchAndBoundCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Default for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Default for SignersContainer","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Default for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Default for SignOptions","synthetic":false,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Default for CreateTx","synthetic":false,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Default for BumpFee","synthetic":false,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl Default for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Default for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Default for SyncOptions","synthetic":false,"types":["bdk::wallet::SyncOptions"]}]; 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.Debug.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Debug.js index 630b867e3d..d0d145af98 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Debug for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl Debug for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Debug for ElectrumBlockchainConfig","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Debug for RpcBlockchain","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Debug for RpcConfig","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Debug for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Debug for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Debug for RpcBlockchainFactory","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Debug for EsploraBlockchain","synthetic":false,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Debug for EsploraBlockchainConfig","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Debug for Mempool","synthetic":false,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Debug for Peer","synthetic":false,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Debug for CompactFiltersBlockchain","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Debug for BitcoinPeerConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Debug for CompactFiltersBlockchainConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Debug for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Debug for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl Debug for NoopProgress","synthetic":false,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Debug for LogProgress","synthetic":false,"types":["bdk::blockchain::LogProgress"]},{"text":"impl Debug for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl Debug for SledDbConfiguration","synthetic":false,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Debug for SqliteDbConfiguration","synthetic":false,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Debug for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl Debug for SqliteDatabase","synthetic":false,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Debug for MemoryDatabase","synthetic":false,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Debug for SyncTime","synthetic":false,"types":["bdk::database::SyncTime"]},{"text":"impl<'s> Debug for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl Debug for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl Debug for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Debug for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Debug for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Debug for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Debug for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Debug for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Debug for BuildSatisfaction<'a>","synthetic":false,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<Ctx: Debug + ScriptContext> Debug for DescriptorKey<Ctx>","synthetic":false,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Debug for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl Debug for PrivateKeyGenerateOptions","synthetic":false,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Debug for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl Debug for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl Debug for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl Debug for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl Debug for WeightedUtxo","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Debug for Utxo","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl Debug for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl Debug for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl Debug for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl Debug for AddressValidatorError","synthetic":false,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl Debug for Excess","synthetic":false,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Debug for CoinSelectionResult","synthetic":false,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Debug for LargestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Debug for OldestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Debug for BranchAndBoundCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Debug for FullyNodedExport","synthetic":false,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Debug for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Debug for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Debug for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S: Debug + Sized + Debug + Clone> Debug for SignerWrapper<S>","synthetic":false,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Debug for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Debug for SignersContainer","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Debug for SignOptions","synthetic":false,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Debug for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Debug for CreateTx","synthetic":false,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Debug for BumpFee","synthetic":false,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D: Debug, Cs: Debug, Ctx: Debug> Debug for TxBuilder<'a, D, Cs, Ctx>","synthetic":false,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Debug for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Debug for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Debug for VerifyError","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Debug for HWISigner","synthetic":false,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D: Debug> Debug for Wallet<D>","synthetic":false,"types":["bdk::wallet::Wallet"]},{"text":"impl Debug for AddressIndex","synthetic":false,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Debug for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]},{"text":"impl Debug for SyncOptions","synthetic":false,"types":["bdk::wallet::SyncOptions"]}]; +implementors["bdk"] = [{"text":"impl Debug for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl Debug for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Debug for ElectrumBlockchainConfig","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Debug for RpcBlockchain","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Debug for RpcConfig","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Debug for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Debug for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Debug for RpcBlockchainFactory","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Debug for EsploraBlockchain","synthetic":false,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Debug for EsploraBlockchainConfig","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Debug for Mempool","synthetic":false,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Debug for Peer","synthetic":false,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Debug for CompactFiltersBlockchain","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Debug for BitcoinPeerConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Debug for CompactFiltersBlockchainConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Debug for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Debug for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl Debug for NoopProgress","synthetic":false,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Debug for LogProgress","synthetic":false,"types":["bdk::blockchain::LogProgress"]},{"text":"impl Debug for AnyDatabase","synthetic":false,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl Debug for SledDbConfiguration","synthetic":false,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Debug for SqliteDbConfiguration","synthetic":false,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Debug for AnyDatabaseConfig","synthetic":false,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl Debug for SqliteDatabase","synthetic":false,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Debug for MemoryDatabase","synthetic":false,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Debug for SyncTime","synthetic":false,"types":["bdk::database::SyncTime"]},{"text":"impl Debug for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl Debug for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Debug for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Debug for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Debug for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Debug for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Debug for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Debug for BuildSatisfaction<'a>","synthetic":false,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<Ctx: Debug + ScriptContext> Debug for DescriptorKey<Ctx>","synthetic":false,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Debug for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl Debug for PrivateKeyGenerateOptions","synthetic":false,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Debug for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl Debug for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl Debug for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl Debug for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl Debug for WeightedUtxo","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Debug for Utxo","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl Debug for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl Debug for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl Debug for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl Debug for Excess","synthetic":false,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Debug for CoinSelectionResult","synthetic":false,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Debug for LargestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Debug for OldestFirstCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Debug for BranchAndBoundCoinSelection","synthetic":false,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Debug for FullyNodedExport","synthetic":false,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Debug for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Debug for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Debug for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S: Debug + Sized + Debug + Clone> Debug for SignerWrapper<S>","synthetic":false,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Debug for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Debug for SignersContainer","synthetic":false,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Debug for SignOptions","synthetic":false,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Debug for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Debug for CreateTx","synthetic":false,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Debug for BumpFee","synthetic":false,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D: Debug, Cs: Debug, Ctx: Debug> Debug for TxBuilder<'a, D, Cs, Ctx>","synthetic":false,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Debug for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Debug for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Debug for VerifyError","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Debug for HWISigner","synthetic":false,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D: Debug> Debug for Wallet<D>","synthetic":false,"types":["bdk::wallet::Wallet"]},{"text":"impl Debug for AddressIndex","synthetic":false,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Debug for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]},{"text":"impl Debug for SyncOptions","synthetic":false,"types":["bdk::wallet::SyncOptions"]}]; 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.Display.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Display.js index 1cf229d004..9b68ced2fe 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Display for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl Display for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl<'s> Display for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl Display for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl Display for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl Display for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl Display for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl Display for AddressValidatorError","synthetic":false,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl Display for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Display for VerifyError","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Display for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]}]; +implementors["bdk"] = [{"text":"impl Display for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl Display for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Display for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl Display for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl Display for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl Display for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl Display for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Display for VerifyError","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Display for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]}]; 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 518a470030..6c0dadb18d 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Hash for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Hash for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl<'s> Hash for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl Hash for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Hash for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Hash for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl Hash for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl Hash for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Hash for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Hash for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}]; +implementors["bdk"] = [{"text":"impl Hash for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Hash for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl Hash for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Hash for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Hash for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl Hash for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl Hash for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Hash for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Hash for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}]; 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 0f39383105..6b91f091fc 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Freeze for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl Freeze for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl Freeze for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl !Freeze for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Freeze for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl !Freeze for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Freeze for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Freeze for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Freeze for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Freeze for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Freeze for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Freeze for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl !Freeze for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Freeze for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Freeze for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Freeze for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Freeze for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Freeze for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Freeze for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl Freeze for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Freeze for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !Freeze for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !Freeze for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl Freeze for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Freeze for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Freeze for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !Freeze for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Freeze for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Freeze for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl<'s> Freeze for DerivedDescriptorKey<'s>","synthetic":true,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl Freeze for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl Freeze for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Freeze for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Freeze for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Freeze for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Freeze for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Freeze for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Freeze for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> Freeze for P2Pkh<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> Freeze for P2Wpkh_P2Sh<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> Freeze for P2Wpkh<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> Freeze for Bip44<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> Freeze for Bip44Public<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> Freeze for Bip49<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> Freeze for Bip49Public<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> Freeze for Bip84<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> Freeze for Bip84Public<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl Freeze for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> Freeze for DescriptorKey<Ctx>","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Freeze for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> Freeze for ExtendedKey<Ctx>","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> Freeze for GeneratedKey<K, Ctx> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Freeze for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Freeze for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl Freeze for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl Freeze for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl Freeze for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl Freeze for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Freeze for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl Freeze for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl Freeze for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl Freeze for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl Freeze for AddressValidatorError","synthetic":true,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl Freeze for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Freeze for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Freeze for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Freeze for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Freeze for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Freeze for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Freeze for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Freeze for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Freeze for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> Freeze for SignerWrapper<S> where
        S: Freeze, 
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Freeze for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Freeze for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Freeze for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Freeze for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Freeze for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Freeze for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> Freeze for TxBuilder<'a, D, Cs, Ctx> where
        Cs: Freeze, 
    ","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Freeze for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Freeze for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Freeze for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Freeze for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !Freeze for Wallet<D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl Freeze for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Freeze for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl Freeze for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; +implementors["bdk"] = [{"text":"impl Freeze for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl Freeze for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl Freeze for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl !Freeze for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Freeze for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl !Freeze for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Freeze for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Freeze for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Freeze for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Freeze for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Freeze for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Freeze for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl !Freeze for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Freeze for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Freeze for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Freeze for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Freeze for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Freeze for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Freeze for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl Freeze for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Freeze for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !Freeze for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !Freeze for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl Freeze for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Freeze for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Freeze for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !Freeze for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Freeze for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Freeze for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl Freeze for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl Freeze for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Freeze for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Freeze for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Freeze for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Freeze for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Freeze for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Freeze for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> Freeze for P2Pkh<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> Freeze for P2Wpkh_P2Sh<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> Freeze for P2Wpkh<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> Freeze for Bip44<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> Freeze for Bip44Public<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> Freeze for Bip49<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> Freeze for Bip49Public<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> Freeze for Bip84<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> Freeze for Bip84Public<K> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl Freeze for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> Freeze for DescriptorKey<Ctx>","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Freeze for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> Freeze for ExtendedKey<Ctx>","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> Freeze for GeneratedKey<K, Ctx> where
        K: Freeze, 
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Freeze for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Freeze for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl Freeze for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl Freeze for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl Freeze for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl Freeze for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Freeze for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl Freeze for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl Freeze for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl Freeze for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl Freeze for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Freeze for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Freeze for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Freeze for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Freeze for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Freeze for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Freeze for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Freeze for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Freeze for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> Freeze for SignerWrapper<S> where
        S: Freeze, 
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Freeze for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Freeze for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Freeze for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Freeze for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Freeze for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Freeze for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> Freeze for TxBuilder<'a, D, Cs, Ctx> where
        Cs: Freeze, 
    ","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Freeze for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Freeze for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Freeze for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Freeze for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !Freeze for Wallet<D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl Freeze for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Freeze for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl Freeze for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; 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.Send.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Send.js index 1af6074fbf..b0f8293796 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Send for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl Send for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl Send for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Send for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Send for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Send for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Send for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Send for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Send for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Send for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Send for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Send for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Send for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Send for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Send for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Send for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Send for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Send for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Send for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl Send for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Send for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl Send for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl Send for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl Send for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Send for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Send for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl Send for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Send for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Send for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl<'s> Send for DerivedDescriptorKey<'s>","synthetic":true,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl Send for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl Send for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Send for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Send for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Send for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Send for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Send for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Send for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> Send for P2Pkh<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> Send for P2Wpkh_P2Sh<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> Send for P2Wpkh<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> Send for Bip44<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> Send for Bip44Public<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> Send for Bip49<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> Send for Bip49Public<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> Send for Bip84<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> Send for Bip84Public<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl Send for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> Send for DescriptorKey<Ctx> where
        Ctx: Send
    ","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Send for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> Send for ExtendedKey<Ctx> where
        Ctx: Send
    ","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> Send for GeneratedKey<K, Ctx> where
        Ctx: Send,
        K: Send
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Send for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Send for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl Send for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl Send for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl Send for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl Send for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Send for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl Send for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl Send for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl Send for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl Send for AddressValidatorError","synthetic":true,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl Send for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Send for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Send for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Send for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Send for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Send for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Send for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Send for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Send for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> Send for SignerWrapper<S> where
        S: Send
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Send for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Send for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Send for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Send for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Send for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Send for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !Send for TxBuilder<'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Send for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Send for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Send for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Send for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> Send for Wallet<D> where
        D: Send
    ","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl Send for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Send for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl Send for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; +implementors["bdk"] = [{"text":"impl Send for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl Send for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl Send for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Send for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Send for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Send for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Send for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Send for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Send for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Send for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Send for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Send for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Send for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Send for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Send for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Send for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Send for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Send for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Send for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl Send for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Send for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl Send for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl Send for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl Send for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Send for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Send for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl Send for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Send for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Send for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl Send for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl Send for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Send for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Send for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Send for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Send for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Send for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Send for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> Send for P2Pkh<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> Send for P2Wpkh_P2Sh<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> Send for P2Wpkh<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> Send for Bip44<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> Send for Bip44Public<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> Send for Bip49<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> Send for Bip49Public<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> Send for Bip84<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> Send for Bip84Public<K> where
        K: Send
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl Send for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> Send for DescriptorKey<Ctx> where
        Ctx: Send
    ","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Send for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> Send for ExtendedKey<Ctx> where
        Ctx: Send
    ","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> Send for GeneratedKey<K, Ctx> where
        Ctx: Send,
        K: Send
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Send for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Send for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl Send for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl Send for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl Send for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl Send for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Send for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl Send for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl Send for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl Send for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl Send for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Send for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Send for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Send for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Send for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Send for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Send for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Send for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Send for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> Send for SignerWrapper<S> where
        S: Send
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Send for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Send for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Send for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Send for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Send for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Send for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !Send for TxBuilder<'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Send for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Send for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Send for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Send for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> Send for Wallet<D> where
        D: Send
    ","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl Send for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Send for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl Send for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; 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.StructuralEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralEq.js index ed7f640a3f..9d449dceab 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl StructuralEq for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl StructuralEq for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl StructuralEq for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl StructuralEq for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl StructuralEq for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl StructuralEq for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl StructuralEq for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl StructuralEq for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl StructuralEq for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl StructuralEq for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl StructuralEq for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl StructuralEq for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl StructuralEq for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl StructuralEq for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl StructuralEq for AddressValidatorError","synthetic":false,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl StructuralEq for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl StructuralEq for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl StructuralEq for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl StructuralEq for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl StructuralEq for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl StructuralEq for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]}]; +implementors["bdk"] = [{"text":"impl StructuralEq for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl StructuralEq for ElectrumBlockchainConfig","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl StructuralEq for RpcConfig","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl StructuralEq for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl StructuralEq for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl StructuralEq for EsploraBlockchainConfig","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl StructuralEq for BitcoinPeerConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl StructuralEq for CompactFiltersBlockchainConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl StructuralEq for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl StructuralEq for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl StructuralEq for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl StructuralEq for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl StructuralEq for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl StructuralEq for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl StructuralEq for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl StructuralEq for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl StructuralEq for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl StructuralEq for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl StructuralEq for WeightedUtxo","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl StructuralEq for Utxo","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl StructuralEq for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl StructuralEq for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl StructuralEq for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl StructuralEq for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl StructuralEq for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl StructuralEq for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl StructuralEq for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl StructuralEq for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl StructuralEq for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl StructuralEq for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl StructuralEq for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]}]; 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 f98dc864c9..7b87385cab 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl StructuralPartialEq for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl StructuralPartialEq for ElectrumBlockchainConfig","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl StructuralPartialEq for RpcConfig","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl StructuralPartialEq for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl StructuralPartialEq for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl StructuralPartialEq for EsploraBlockchainConfig","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl StructuralPartialEq for BitcoinPeerConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl StructuralPartialEq for CompactFiltersBlockchainConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl StructuralPartialEq for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl StructuralPartialEq for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl StructuralPartialEq for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl StructuralPartialEq for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl StructuralPartialEq for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl StructuralPartialEq for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl StructuralPartialEq for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl StructuralPartialEq for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl StructuralPartialEq for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl StructuralPartialEq for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl StructuralPartialEq for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl StructuralPartialEq for WeightedUtxo","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl StructuralPartialEq for Utxo","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl StructuralPartialEq for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl StructuralPartialEq for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl StructuralPartialEq for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl StructuralPartialEq for AddressValidatorError","synthetic":false,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl StructuralPartialEq for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl StructuralPartialEq for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl StructuralPartialEq for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl StructuralPartialEq for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl StructuralPartialEq for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl StructuralPartialEq for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl StructuralPartialEq for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl StructuralPartialEq for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]}]; +implementors["bdk"] = [{"text":"impl StructuralPartialEq for AnyBlockchainConfig","synthetic":false,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl StructuralPartialEq for ElectrumBlockchainConfig","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl StructuralPartialEq for RpcConfig","synthetic":false,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl StructuralPartialEq for RpcSyncParams","synthetic":false,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl StructuralPartialEq for Auth","synthetic":false,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl StructuralPartialEq for EsploraBlockchainConfig","synthetic":false,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl StructuralPartialEq for BitcoinPeerConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl StructuralPartialEq for CompactFiltersBlockchainConfig","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl StructuralPartialEq for Capability","synthetic":false,"types":["bdk::blockchain::Capability"]},{"text":"impl StructuralPartialEq for PkOrF","synthetic":false,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl StructuralPartialEq for SatisfiableItem","synthetic":false,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl StructuralPartialEq for Satisfaction","synthetic":false,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl StructuralPartialEq for Policy","synthetic":false,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl StructuralPartialEq for Condition","synthetic":false,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl StructuralPartialEq for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl StructuralPartialEq for ScriptContextEnum","synthetic":false,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl StructuralPartialEq for KeychainKind","synthetic":false,"types":["bdk::types::KeychainKind"]},{"text":"impl StructuralPartialEq for FeeRate","synthetic":false,"types":["bdk::types::FeeRate"]},{"text":"impl StructuralPartialEq for LocalUtxo","synthetic":false,"types":["bdk::types::LocalUtxo"]},{"text":"impl StructuralPartialEq for WeightedUtxo","synthetic":false,"types":["bdk::types::WeightedUtxo"]},{"text":"impl StructuralPartialEq for Utxo","synthetic":false,"types":["bdk::types::Utxo"]},{"text":"impl StructuralPartialEq for TransactionDetails","synthetic":false,"types":["bdk::types::TransactionDetails"]},{"text":"impl StructuralPartialEq for BlockTime","synthetic":false,"types":["bdk::types::BlockTime"]},{"text":"impl StructuralPartialEq for Balance","synthetic":false,"types":["bdk::types::Balance"]},{"text":"impl StructuralPartialEq for SignerId","synthetic":false,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl StructuralPartialEq for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl StructuralPartialEq for SignerContext","synthetic":false,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl StructuralPartialEq for SignerOrdering","synthetic":false,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl StructuralPartialEq for TapLeavesOptions","synthetic":false,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl StructuralPartialEq for TxOrdering","synthetic":false,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl StructuralPartialEq for ChangeSpendPolicy","synthetic":false,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl StructuralPartialEq for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]}]; 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.Sync.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Sync.js index 73c8105706..bbba6b5781 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Sync for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl Sync for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl Sync for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Sync for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Sync for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Sync for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Sync for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Sync for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Sync for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Sync for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Sync for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Sync for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Sync for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Sync for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Sync for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Sync for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Sync for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Sync for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Sync for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl Sync for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Sync for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !Sync for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !Sync for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl Sync for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Sync for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Sync for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !Sync for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Sync for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Sync for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl<'s> Sync for DerivedDescriptorKey<'s>","synthetic":true,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl Sync for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl Sync for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Sync for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Sync for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Sync for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Sync for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Sync for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Sync for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> Sync for P2Pkh<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> Sync for P2Wpkh_P2Sh<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> Sync for P2Wpkh<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> Sync for Bip44<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> Sync for Bip44Public<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> Sync for Bip49<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> Sync for Bip49Public<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> Sync for Bip84<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> Sync for Bip84Public<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl Sync for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> Sync for DescriptorKey<Ctx> where
        Ctx: Sync
    ","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Sync for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> Sync for ExtendedKey<Ctx> where
        Ctx: Sync
    ","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> Sync for GeneratedKey<K, Ctx> where
        Ctx: Sync,
        K: Sync
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Sync for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Sync for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl Sync for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl Sync for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl Sync for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl Sync for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Sync for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl Sync for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl Sync for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl Sync for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl Sync for AddressValidatorError","synthetic":true,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl Sync for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Sync for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Sync for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Sync for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Sync for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Sync for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Sync for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Sync for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Sync for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> Sync for SignerWrapper<S> where
        S: Sync
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Sync for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Sync for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Sync for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Sync for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Sync for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Sync for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !Sync for TxBuilder<'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Sync for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Sync for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Sync for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Sync for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !Sync for Wallet<D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl Sync for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Sync for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl !Sync for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; +implementors["bdk"] = [{"text":"impl Sync for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl Sync for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl Sync for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Sync for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Sync for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Sync for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Sync for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Sync for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Sync for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Sync for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Sync for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Sync for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Sync for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Sync for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Sync for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Sync for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Sync for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Sync for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Sync for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl Sync for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Sync for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !Sync for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !Sync for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl Sync for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Sync for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Sync for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !Sync for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Sync for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Sync for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl Sync for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl Sync for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Sync for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Sync for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Sync for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Sync for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Sync for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Sync for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> Sync for P2Pkh<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> Sync for P2Wpkh_P2Sh<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> Sync for P2Wpkh<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> Sync for Bip44<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> Sync for Bip44Public<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> Sync for Bip49<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> Sync for Bip49Public<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> Sync for Bip84<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> Sync for Bip84Public<K> where
        K: Sync
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl Sync for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> Sync for DescriptorKey<Ctx> where
        Ctx: Sync
    ","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Sync for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> Sync for ExtendedKey<Ctx> where
        Ctx: Sync
    ","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> Sync for GeneratedKey<K, Ctx> where
        Ctx: Sync,
        K: Sync
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Sync for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Sync for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl Sync for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl Sync for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl Sync for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl Sync for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Sync for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl Sync for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl Sync for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl Sync for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl Sync for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Sync for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Sync for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Sync for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Sync for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Sync for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Sync for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Sync for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Sync for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> Sync for SignerWrapper<S> where
        S: Sync
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Sync for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Sync for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Sync for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Sync for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Sync for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Sync for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !Sync for TxBuilder<'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Sync for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Sync for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Sync for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Sync for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !Sync for Wallet<D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl Sync for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Sync for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl !Sync for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; 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.Unpin.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Unpin.js index 6e364fa60d..f6b9f5180d 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Unpin for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl Unpin for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl Unpin for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Unpin for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Unpin for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Unpin for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Unpin for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Unpin for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Unpin for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Unpin for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Unpin for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Unpin for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Unpin for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Unpin for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Unpin for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Unpin for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Unpin for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Unpin for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Unpin for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl Unpin for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Unpin for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl Unpin for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl Unpin for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl Unpin for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Unpin for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Unpin for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl Unpin for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Unpin for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Unpin for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl<'s> Unpin for DerivedDescriptorKey<'s>","synthetic":true,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl Unpin for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl Unpin for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Unpin for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Unpin for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Unpin for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Unpin for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Unpin for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Unpin for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> Unpin for P2Pkh<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> Unpin for P2Wpkh_P2Sh<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> Unpin for P2Wpkh<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> Unpin for Bip44<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> Unpin for Bip44Public<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> Unpin for Bip49<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> Unpin for Bip49Public<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> Unpin for Bip84<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> Unpin for Bip84Public<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl Unpin for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> Unpin for DescriptorKey<Ctx> where
        Ctx: Unpin
    ","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Unpin for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> Unpin for ExtendedKey<Ctx> where
        Ctx: Unpin
    ","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> Unpin for GeneratedKey<K, Ctx> where
        Ctx: Unpin,
        K: Unpin
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Unpin for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Unpin for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl Unpin for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl Unpin for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl Unpin for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl Unpin for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Unpin for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl Unpin for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl Unpin for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl Unpin for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl Unpin for AddressValidatorError","synthetic":true,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl Unpin for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Unpin for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Unpin for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Unpin for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Unpin for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Unpin for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Unpin for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Unpin for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Unpin for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> Unpin for SignerWrapper<S> where
        S: Unpin
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Unpin for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Unpin for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Unpin for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Unpin for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Unpin for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Unpin for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> Unpin for TxBuilder<'a, D, Cs, Ctx> where
        Cs: Unpin,
        Ctx: Unpin
    ","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Unpin for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Unpin for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Unpin for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Unpin for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> Unpin for Wallet<D> where
        D: Unpin
    ","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl Unpin for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Unpin for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl Unpin for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; +implementors["bdk"] = [{"text":"impl Unpin for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl Unpin for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl Unpin for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl Unpin for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Unpin for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl Unpin for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Unpin for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl Unpin for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl Unpin for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl Unpin for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl Unpin for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl Unpin for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl Unpin for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl Unpin for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl Unpin for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl Unpin for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl Unpin for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl Unpin for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Unpin for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl Unpin for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl Unpin for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl Unpin for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl Unpin for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl Unpin for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl Unpin for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl Unpin for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl Unpin for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl Unpin for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl Unpin for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl Unpin for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl Unpin for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl Unpin for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl Unpin for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl Unpin for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl Unpin for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl Unpin for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> Unpin for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> Unpin for P2Pkh<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> Unpin for P2Wpkh_P2Sh<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> Unpin for P2Wpkh<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> Unpin for Bip44<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> Unpin for Bip44Public<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> Unpin for Bip49<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> Unpin for Bip49Public<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> Unpin for Bip84<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> Unpin for Bip84Public<K> where
        K: Unpin
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl Unpin for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> Unpin for DescriptorKey<Ctx> where
        Ctx: Unpin
    ","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl Unpin for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> Unpin for ExtendedKey<Ctx> where
        Ctx: Unpin
    ","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> Unpin for GeneratedKey<K, Ctx> where
        Ctx: Unpin,
        K: Unpin
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl Unpin for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl Unpin for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl Unpin for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl Unpin for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl Unpin for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl Unpin for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl Unpin for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl Unpin for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl Unpin for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl Unpin for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl Unpin for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl Unpin for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl Unpin for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl Unpin for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl Unpin for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl Unpin for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl Unpin for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl Unpin for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Unpin for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> Unpin for SignerWrapper<S> where
        S: Unpin
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Unpin for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl Unpin for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl Unpin for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl Unpin for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl Unpin for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl Unpin for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> Unpin for TxBuilder<'a, D, Cs, Ctx> where
        Cs: Unpin,
        Ctx: Unpin
    ","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl Unpin for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl Unpin for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl Unpin for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl Unpin for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> Unpin for Wallet<D> where
        D: Unpin
    ","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl Unpin for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl Unpin for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl Unpin for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; 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/ops/deref/trait.Deref.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/deref/trait.Deref.js index 6cb0329202..9baafac1a1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/deref/trait.Deref.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/deref/trait.Deref.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Deref for ElectrumBlockchain","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Deref for RpcBlockchain","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Deref for EsploraBlockchain","synthetic":false,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl<'s> Deref for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl<K, Ctx: ScriptContext> Deref for GeneratedKey<K, Ctx>","synthetic":false,"types":["bdk::keys::GeneratedKey"]},{"text":"impl<S: Sized + Debug + Clone> Deref for SignerWrapper<S>","synthetic":false,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Deref for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]}]; +implementors["bdk"] = [{"text":"impl Deref for ElectrumBlockchain","synthetic":false,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl Deref for RpcBlockchain","synthetic":false,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl Deref for EsploraBlockchain","synthetic":false,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl<K, Ctx: ScriptContext> Deref for GeneratedKey<K, Ctx>","synthetic":false,"types":["bdk::keys::GeneratedKey"]},{"text":"impl<S: Sized + Debug + Clone> Deref for SignerWrapper<S>","synthetic":false,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl Deref for AddressInfo","synthetic":false,"types":["bdk::wallet::AddressInfo"]}]; 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 7f20b0e1ba..a50687fdf6 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl !RefUnwindSafe for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl !RefUnwindSafe for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl RefUnwindSafe for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl RefUnwindSafe for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl RefUnwindSafe for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl !RefUnwindSafe for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl RefUnwindSafe for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl RefUnwindSafe for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl RefUnwindSafe for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl RefUnwindSafe for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl !RefUnwindSafe for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl RefUnwindSafe for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl RefUnwindSafe for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl !RefUnwindSafe for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl !RefUnwindSafe for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl RefUnwindSafe for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl RefUnwindSafe for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl !RefUnwindSafe for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl RefUnwindSafe for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl RefUnwindSafe for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl RefUnwindSafe for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !RefUnwindSafe for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !RefUnwindSafe for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl RefUnwindSafe for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl RefUnwindSafe for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl RefUnwindSafe for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !RefUnwindSafe for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl !RefUnwindSafe for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl RefUnwindSafe for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl<'s> RefUnwindSafe for DerivedDescriptorKey<'s>","synthetic":true,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl RefUnwindSafe for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl RefUnwindSafe for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl RefUnwindSafe for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl RefUnwindSafe for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl RefUnwindSafe for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl RefUnwindSafe for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl RefUnwindSafe for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> RefUnwindSafe for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> RefUnwindSafe for P2Pkh<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> RefUnwindSafe for P2Wpkh_P2Sh<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> RefUnwindSafe for P2Wpkh<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> RefUnwindSafe for Bip44<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> RefUnwindSafe for Bip44Public<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> RefUnwindSafe for Bip49<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> RefUnwindSafe for Bip49Public<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> RefUnwindSafe for Bip84<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> RefUnwindSafe for Bip84Public<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl RefUnwindSafe for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> RefUnwindSafe for DescriptorKey<Ctx> where
        Ctx: RefUnwindSafe
    ","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl RefUnwindSafe for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> RefUnwindSafe for ExtendedKey<Ctx> where
        Ctx: RefUnwindSafe
    ","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> RefUnwindSafe for GeneratedKey<K, Ctx> where
        Ctx: RefUnwindSafe,
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl RefUnwindSafe for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl RefUnwindSafe for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl RefUnwindSafe for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl RefUnwindSafe for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl RefUnwindSafe for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl RefUnwindSafe for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl RefUnwindSafe for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl RefUnwindSafe for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl RefUnwindSafe for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl RefUnwindSafe for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl RefUnwindSafe for AddressValidatorError","synthetic":true,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl RefUnwindSafe for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl RefUnwindSafe for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl RefUnwindSafe for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl RefUnwindSafe for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl RefUnwindSafe for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl RefUnwindSafe for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl RefUnwindSafe for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl RefUnwindSafe for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl RefUnwindSafe for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> RefUnwindSafe for SignerWrapper<S> where
        S: RefUnwindSafe
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl RefUnwindSafe for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl !RefUnwindSafe for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl RefUnwindSafe for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl RefUnwindSafe for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl RefUnwindSafe for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl RefUnwindSafe for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !RefUnwindSafe for TxBuilder<'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl RefUnwindSafe for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl RefUnwindSafe for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl !RefUnwindSafe for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl !RefUnwindSafe for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !RefUnwindSafe for Wallet<D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl RefUnwindSafe for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl RefUnwindSafe for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl !RefUnwindSafe for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; +implementors["bdk"] = [{"text":"impl !RefUnwindSafe for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl !RefUnwindSafe for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl RefUnwindSafe for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl RefUnwindSafe for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl RefUnwindSafe for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl !RefUnwindSafe for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl RefUnwindSafe for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl RefUnwindSafe for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl RefUnwindSafe for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl RefUnwindSafe for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl !RefUnwindSafe for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl RefUnwindSafe for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl RefUnwindSafe for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl !RefUnwindSafe for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl !RefUnwindSafe for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl RefUnwindSafe for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl RefUnwindSafe for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl !RefUnwindSafe for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl RefUnwindSafe for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl RefUnwindSafe for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl RefUnwindSafe for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !RefUnwindSafe for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !RefUnwindSafe for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl RefUnwindSafe for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl RefUnwindSafe for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl RefUnwindSafe for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !RefUnwindSafe for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl !RefUnwindSafe for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl RefUnwindSafe for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl RefUnwindSafe for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl RefUnwindSafe for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl RefUnwindSafe for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl RefUnwindSafe for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl RefUnwindSafe for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl RefUnwindSafe for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl RefUnwindSafe for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> RefUnwindSafe for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> RefUnwindSafe for P2Pkh<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> RefUnwindSafe for P2Wpkh_P2Sh<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> RefUnwindSafe for P2Wpkh<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> RefUnwindSafe for Bip44<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> RefUnwindSafe for Bip44Public<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> RefUnwindSafe for Bip49<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> RefUnwindSafe for Bip49Public<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> RefUnwindSafe for Bip84<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> RefUnwindSafe for Bip84Public<K> where
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl RefUnwindSafe for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> RefUnwindSafe for DescriptorKey<Ctx> where
        Ctx: RefUnwindSafe
    ","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl RefUnwindSafe for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> RefUnwindSafe for ExtendedKey<Ctx> where
        Ctx: RefUnwindSafe
    ","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> RefUnwindSafe for GeneratedKey<K, Ctx> where
        Ctx: RefUnwindSafe,
        K: RefUnwindSafe
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl RefUnwindSafe for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl RefUnwindSafe for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl RefUnwindSafe for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl RefUnwindSafe for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl RefUnwindSafe for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl RefUnwindSafe for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl RefUnwindSafe for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl RefUnwindSafe for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl RefUnwindSafe for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl RefUnwindSafe for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl RefUnwindSafe for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl RefUnwindSafe for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl RefUnwindSafe for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl RefUnwindSafe for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl RefUnwindSafe for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl RefUnwindSafe for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl RefUnwindSafe for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl RefUnwindSafe for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl RefUnwindSafe for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> RefUnwindSafe for SignerWrapper<S> where
        S: RefUnwindSafe
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl RefUnwindSafe for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl !RefUnwindSafe for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl RefUnwindSafe for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl RefUnwindSafe for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl RefUnwindSafe for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl RefUnwindSafe for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !RefUnwindSafe for TxBuilder<'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl RefUnwindSafe for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl RefUnwindSafe for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl !RefUnwindSafe for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl !RefUnwindSafe for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !RefUnwindSafe for Wallet<D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl RefUnwindSafe for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl RefUnwindSafe for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl !RefUnwindSafe for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; 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.UnwindSafe.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.UnwindSafe.js index 9301758f9b..6f3ceafb89 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,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl !UnwindSafe for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl !UnwindSafe for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl UnwindSafe for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl UnwindSafe for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl UnwindSafe for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl !UnwindSafe for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl UnwindSafe for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl UnwindSafe for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl UnwindSafe for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl UnwindSafe for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl !UnwindSafe for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl UnwindSafe for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl UnwindSafe for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl !UnwindSafe for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl !UnwindSafe for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl UnwindSafe for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl UnwindSafe for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl !UnwindSafe for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl UnwindSafe for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl UnwindSafe for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl UnwindSafe for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !UnwindSafe for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !UnwindSafe for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl UnwindSafe for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl UnwindSafe for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl UnwindSafe for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !UnwindSafe for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl !UnwindSafe for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl UnwindSafe for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl<'s> UnwindSafe for DerivedDescriptorKey<'s>","synthetic":true,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]},{"text":"impl UnwindSafe for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl UnwindSafe for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl UnwindSafe for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl UnwindSafe for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl UnwindSafe for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl UnwindSafe for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl UnwindSafe for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> UnwindSafe for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> UnwindSafe for P2Pkh<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> UnwindSafe for P2Wpkh_P2Sh<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> UnwindSafe for P2Wpkh<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> UnwindSafe for Bip44<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> UnwindSafe for Bip44Public<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> UnwindSafe for Bip49<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> UnwindSafe for Bip49Public<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> UnwindSafe for Bip84<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> UnwindSafe for Bip84Public<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl UnwindSafe for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> UnwindSafe for DescriptorKey<Ctx> where
        Ctx: UnwindSafe
    ","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl UnwindSafe for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> UnwindSafe for ExtendedKey<Ctx> where
        Ctx: UnwindSafe
    ","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> UnwindSafe for GeneratedKey<K, Ctx> where
        Ctx: UnwindSafe,
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl UnwindSafe for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl UnwindSafe for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl UnwindSafe for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl UnwindSafe for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl UnwindSafe for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl UnwindSafe for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl UnwindSafe for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl UnwindSafe for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl UnwindSafe for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl UnwindSafe for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl UnwindSafe for AddressValidatorError","synthetic":true,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl UnwindSafe for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl UnwindSafe for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl UnwindSafe for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl UnwindSafe for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl UnwindSafe for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl UnwindSafe for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl UnwindSafe for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl UnwindSafe for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl UnwindSafe for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> UnwindSafe for SignerWrapper<S> where
        S: UnwindSafe
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl UnwindSafe for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl !UnwindSafe for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl UnwindSafe for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl UnwindSafe for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl UnwindSafe for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl UnwindSafe for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !UnwindSafe for TxBuilder<'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl UnwindSafe for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl UnwindSafe for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl !UnwindSafe for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl UnwindSafe for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !UnwindSafe for Wallet<D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl UnwindSafe for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl UnwindSafe for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl !UnwindSafe for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; +implementors["bdk"] = [{"text":"impl !UnwindSafe for Error","synthetic":true,"types":["bdk::error::Error"]},{"text":"impl !UnwindSafe for AnyBlockchain","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchain"]},{"text":"impl UnwindSafe for AnyBlockchainConfig","synthetic":true,"types":["bdk::blockchain::any::AnyBlockchainConfig"]},{"text":"impl UnwindSafe for ElectrumBlockchain","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchain"]},{"text":"impl UnwindSafe for ElectrumBlockchainConfig","synthetic":true,"types":["bdk::blockchain::electrum::ElectrumBlockchainConfig"]},{"text":"impl !UnwindSafe for RpcBlockchain","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchain"]},{"text":"impl UnwindSafe for RpcConfig","synthetic":true,"types":["bdk::blockchain::rpc::RpcConfig"]},{"text":"impl UnwindSafe for RpcSyncParams","synthetic":true,"types":["bdk::blockchain::rpc::RpcSyncParams"]},{"text":"impl UnwindSafe for Auth","synthetic":true,"types":["bdk::blockchain::rpc::Auth"]},{"text":"impl UnwindSafe for RpcBlockchainFactory","synthetic":true,"types":["bdk::blockchain::rpc::RpcBlockchainFactory"]},{"text":"impl !UnwindSafe for EsploraBlockchain","synthetic":true,"types":["bdk::blockchain::esplora::blocking::EsploraBlockchain"]},{"text":"impl UnwindSafe for EsploraBlockchainConfig","synthetic":true,"types":["bdk::blockchain::esplora::EsploraBlockchainConfig"]},{"text":"impl UnwindSafe for Mempool","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Mempool"]},{"text":"impl !UnwindSafe for Peer","synthetic":true,"types":["bdk::blockchain::compact_filters::peer::Peer"]},{"text":"impl !UnwindSafe for CompactFiltersBlockchain","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchain"]},{"text":"impl UnwindSafe for BitcoinPeerConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::BitcoinPeerConfig"]},{"text":"impl UnwindSafe for CompactFiltersBlockchainConfig","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersBlockchainConfig"]},{"text":"impl !UnwindSafe for CompactFiltersError","synthetic":true,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl UnwindSafe for Capability","synthetic":true,"types":["bdk::blockchain::Capability"]},{"text":"impl UnwindSafe for NoopProgress","synthetic":true,"types":["bdk::blockchain::NoopProgress"]},{"text":"impl UnwindSafe for LogProgress","synthetic":true,"types":["bdk::blockchain::LogProgress"]},{"text":"impl !UnwindSafe for AnyDatabase","synthetic":true,"types":["bdk::database::any::AnyDatabase"]},{"text":"impl !UnwindSafe for AnyBatch","synthetic":true,"types":["bdk::database::any::AnyBatch"]},{"text":"impl UnwindSafe for SledDbConfiguration","synthetic":true,"types":["bdk::database::any::SledDbConfiguration"]},{"text":"impl UnwindSafe for SqliteDbConfiguration","synthetic":true,"types":["bdk::database::any::SqliteDbConfiguration"]},{"text":"impl UnwindSafe for AnyDatabaseConfig","synthetic":true,"types":["bdk::database::any::AnyDatabaseConfig"]},{"text":"impl !UnwindSafe for SqliteDatabase","synthetic":true,"types":["bdk::database::sqlite::SqliteDatabase"]},{"text":"impl !UnwindSafe for MemoryDatabase","synthetic":true,"types":["bdk::database::memory::MemoryDatabase"]},{"text":"impl UnwindSafe for SyncTime","synthetic":true,"types":["bdk::database::SyncTime"]},{"text":"impl UnwindSafe for Error","synthetic":true,"types":["bdk::descriptor::error::Error"]},{"text":"impl UnwindSafe for PkOrF","synthetic":true,"types":["bdk::descriptor::policy::PkOrF"]},{"text":"impl UnwindSafe for SatisfiableItem","synthetic":true,"types":["bdk::descriptor::policy::SatisfiableItem"]},{"text":"impl UnwindSafe for Satisfaction","synthetic":true,"types":["bdk::descriptor::policy::Satisfaction"]},{"text":"impl UnwindSafe for Policy","synthetic":true,"types":["bdk::descriptor::policy::Policy"]},{"text":"impl UnwindSafe for Condition","synthetic":true,"types":["bdk::descriptor::policy::Condition"]},{"text":"impl UnwindSafe for PolicyError","synthetic":true,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl<'a> UnwindSafe for BuildSatisfaction<'a>","synthetic":true,"types":["bdk::descriptor::policy::BuildSatisfaction"]},{"text":"impl<K> UnwindSafe for P2Pkh<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Pkh"]},{"text":"impl<K> UnwindSafe for P2Wpkh_P2Sh<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh_P2Sh"]},{"text":"impl<K> UnwindSafe for P2Wpkh<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::P2Wpkh"]},{"text":"impl<K> UnwindSafe for Bip44<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44"]},{"text":"impl<K> UnwindSafe for Bip44Public<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip44Public"]},{"text":"impl<K> UnwindSafe for Bip49<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49"]},{"text":"impl<K> UnwindSafe for Bip49Public<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip49Public"]},{"text":"impl<K> UnwindSafe for Bip84<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84"]},{"text":"impl<K> UnwindSafe for Bip84Public<K> where
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::descriptor::template::Bip84Public"]},{"text":"impl UnwindSafe for WordCount","synthetic":true,"types":["bdk::keys::bip39::WordCount"]},{"text":"impl<Ctx> UnwindSafe for DescriptorKey<Ctx> where
        Ctx: UnwindSafe
    ","synthetic":true,"types":["bdk::keys::DescriptorKey"]},{"text":"impl UnwindSafe for ScriptContextEnum","synthetic":true,"types":["bdk::keys::ScriptContextEnum"]},{"text":"impl<Ctx> UnwindSafe for ExtendedKey<Ctx> where
        Ctx: UnwindSafe
    ","synthetic":true,"types":["bdk::keys::ExtendedKey"]},{"text":"impl<K, Ctx> UnwindSafe for GeneratedKey<K, Ctx> where
        Ctx: UnwindSafe,
        K: UnwindSafe
    ","synthetic":true,"types":["bdk::keys::GeneratedKey"]},{"text":"impl UnwindSafe for PrivateKeyGenerateOptions","synthetic":true,"types":["bdk::keys::PrivateKeyGenerateOptions"]},{"text":"impl UnwindSafe for KeyError","synthetic":true,"types":["bdk::keys::KeyError"]},{"text":"impl UnwindSafe for KeychainKind","synthetic":true,"types":["bdk::types::KeychainKind"]},{"text":"impl UnwindSafe for FeeRate","synthetic":true,"types":["bdk::types::FeeRate"]},{"text":"impl UnwindSafe for LocalUtxo","synthetic":true,"types":["bdk::types::LocalUtxo"]},{"text":"impl UnwindSafe for WeightedUtxo","synthetic":true,"types":["bdk::types::WeightedUtxo"]},{"text":"impl UnwindSafe for Utxo","synthetic":true,"types":["bdk::types::Utxo"]},{"text":"impl UnwindSafe for TransactionDetails","synthetic":true,"types":["bdk::types::TransactionDetails"]},{"text":"impl UnwindSafe for BlockTime","synthetic":true,"types":["bdk::types::BlockTime"]},{"text":"impl UnwindSafe for Balance","synthetic":true,"types":["bdk::types::Balance"]},{"text":"impl UnwindSafe for Excess","synthetic":true,"types":["bdk::wallet::coin_selection::Excess"]},{"text":"impl UnwindSafe for CoinSelectionResult","synthetic":true,"types":["bdk::wallet::coin_selection::CoinSelectionResult"]},{"text":"impl UnwindSafe for LargestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::LargestFirstCoinSelection"]},{"text":"impl UnwindSafe for OldestFirstCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::OldestFirstCoinSelection"]},{"text":"impl UnwindSafe for BranchAndBoundCoinSelection","synthetic":true,"types":["bdk::wallet::coin_selection::BranchAndBoundCoinSelection"]},{"text":"impl UnwindSafe for FullyNodedExport","synthetic":true,"types":["bdk::wallet::export::FullyNodedExport"]},{"text":"impl UnwindSafe for SignerId","synthetic":true,"types":["bdk::wallet::signer::SignerId"]},{"text":"impl UnwindSafe for SignerError","synthetic":true,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl UnwindSafe for SignerContext","synthetic":true,"types":["bdk::wallet::signer::SignerContext"]},{"text":"impl<S> UnwindSafe for SignerWrapper<S> where
        S: UnwindSafe
    ","synthetic":true,"types":["bdk::wallet::signer::SignerWrapper"]},{"text":"impl UnwindSafe for SignerOrdering","synthetic":true,"types":["bdk::wallet::signer::SignerOrdering"]},{"text":"impl !UnwindSafe for SignersContainer","synthetic":true,"types":["bdk::wallet::signer::SignersContainer"]},{"text":"impl UnwindSafe for SignOptions","synthetic":true,"types":["bdk::wallet::signer::SignOptions"]},{"text":"impl UnwindSafe for TapLeavesOptions","synthetic":true,"types":["bdk::wallet::signer::TapLeavesOptions"]},{"text":"impl UnwindSafe for CreateTx","synthetic":true,"types":["bdk::wallet::tx_builder::CreateTx"]},{"text":"impl UnwindSafe for BumpFee","synthetic":true,"types":["bdk::wallet::tx_builder::BumpFee"]},{"text":"impl<'a, D, Cs, Ctx> !UnwindSafe for TxBuilder<'a, D, Cs, Ctx>","synthetic":true,"types":["bdk::wallet::tx_builder::TxBuilder"]},{"text":"impl UnwindSafe for TxOrdering","synthetic":true,"types":["bdk::wallet::tx_builder::TxOrdering"]},{"text":"impl UnwindSafe for ChangeSpendPolicy","synthetic":true,"types":["bdk::wallet::tx_builder::ChangeSpendPolicy"]},{"text":"impl !UnwindSafe for VerifyError","synthetic":true,"types":["bdk::wallet::verify::VerifyError"]},{"text":"impl UnwindSafe for HWISigner","synthetic":true,"types":["bdk::wallet::hardwaresigner::HWISigner"]},{"text":"impl<D> !UnwindSafe for Wallet<D>","synthetic":true,"types":["bdk::wallet::Wallet"]},{"text":"impl UnwindSafe for AddressIndex","synthetic":true,"types":["bdk::wallet::AddressIndex"]},{"text":"impl UnwindSafe for AddressInfo","synthetic":true,"types":["bdk::wallet::AddressInfo"]},{"text":"impl !UnwindSafe for SyncOptions","synthetic":true,"types":["bdk::wallet::SyncOptions"]}]; 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/miniscript/trait.MiniscriptKey.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/miniscript/trait.MiniscriptKey.js deleted file mode 100644 index 85e691137a..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/miniscript/trait.MiniscriptKey.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl<'s> MiniscriptKey for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]}]; -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/miniscript/trait.ToPublicKey.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/miniscript/trait.ToPublicKey.js deleted file mode 100644 index 59c7904311..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/miniscript/trait.ToPublicKey.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl<'s> ToPublicKey for DerivedDescriptorKey<'s>","synthetic":false,"types":["bdk::descriptor::derived::DerivedDescriptorKey"]}]; -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/std/error/trait.Error.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/std/error/trait.Error.js index 82d583080e..6bc915b9df 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/std/error/trait.Error.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/std/error/trait.Error.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["bdk"] = [{"text":"impl Error for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl Error for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Error for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl Error for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl Error for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl Error for AddressValidatorError","synthetic":false,"types":["bdk::wallet::address_validator::AddressValidatorError"]},{"text":"impl Error for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Error for VerifyError","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]}]; +implementors["bdk"] = [{"text":"impl Error for Error","synthetic":false,"types":["bdk::error::Error"]},{"text":"impl Error for CompactFiltersError","synthetic":false,"types":["bdk::blockchain::compact_filters::CompactFiltersError"]},{"text":"impl Error for Error","synthetic":false,"types":["bdk::descriptor::error::Error"]},{"text":"impl Error for PolicyError","synthetic":false,"types":["bdk::descriptor::policy::PolicyError"]},{"text":"impl Error for KeyError","synthetic":false,"types":["bdk::keys::KeyError"]},{"text":"impl Error for SignerError","synthetic":false,"types":["bdk::wallet::signer::SignerError"]},{"text":"impl Error for VerifyError","synthetic":false,"types":["bdk::wallet::verify::VerifyError"]}]; 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 67ec8ec226..e95c9c2dde 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search-index.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search-index.js @@ -1,4 +1,4 @@ var searchIndex = JSON.parse('{\ -"bdk":{"doc":"A modern, lightweight, descriptor-based wallet library …","t":[13,3,13,3,13,13,13,13,6,13,13,13,4,13,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,4,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,13,13,4,8,13,3,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,12,12,0,11,11,11,11,11,11,11,11,11,12,11,0,12,12,12,11,11,11,11,11,11,11,12,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,12,11,12,11,11,11,11,11,11,11,11,11,12,12,10,5,11,11,11,11,11,11,11,11,11,0,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,8,8,4,16,8,3,13,13,8,8,8,16,3,3,8,6,8,8,0,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,0,11,0,10,11,11,11,11,11,11,10,10,10,11,10,10,11,11,11,11,11,11,11,5,5,5,0,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,4,4,13,13,13,13,13,13,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,12,12,12,12,12,12,12,12,13,3,13,3,3,4,13,13,13,13,13,13,13,13,3,13,13,13,3,13,13,13,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,11,11,11,11,11,11,11,12,11,11,11,13,3,3,4,13,13,13,13,13,13,13,13,13,13,12,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,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,4,13,13,3,3,3,3,13,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,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,12,12,11,12,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,12,12,11,11,11,11,11,12,12,11,12,12,12,16,8,8,16,8,8,3,3,0,10,11,12,11,11,11,11,10,11,11,11,10,11,12,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,10,11,10,11,10,11,10,11,0,11,12,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,4,4,4,13,13,13,13,13,13,3,13,13,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,6,4,4,3,6,8,13,6,8,16,6,4,3,13,13,8,4,13,13,6,13,13,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,12,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,10,11,11,0,11,11,11,11,11,11,11,11,11,11,10,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,12,12,12,12,12,12,5,5,8,3,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,4,13,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,4,13,3,6,13,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,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,3,8,6,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,8,4,4,4,3,3,16,16,8,4,13,8,8,3,8,13,13,13,16,4,6,13,13,13,16,13,3,13,8,4,13,13,13,4,3,13,6,13,13,13,5,10,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,5,11,10,11,11,5,10,11,11,11,11,11,12,12,11,11,11,11,11,11,10,12,11,11,11,10,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,4,13,4,3,6,13,4,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,8,10,10,10,4,3,8,13,13,13,13,3,3,11,11,12,0,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,0,12,11,11,11,11,11,11,11,11,10,11,12,11,11,11,11,11,11,11,12,11,11,11,0,11,0,11,11,11,11,11,11,11,11,11,0,11,11,11,11,0,11,11,11,11,5,12,12,8,4,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,12,3,13,8,3,6,4,3,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,5,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,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,12,12,3,6,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,13,13,13,13,13,13,13,8,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,11,11,11,11,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,12,10,11,11,10,11,12,11,12,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,12,12,12,12,12,12,12,12,5,13,3,13,13,4,3,13,13,3,8,4,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,13,4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,12,12,12,12],"n":["AddressValidator","Balance","Bip32","BlockTime","BnBNoExactMatch","BnBTotalTriesExceeded","ChecksumMismatch","CompactFilters","ConfirmationTime","Descriptor","Electrum","Encode","Error","Esplora","External","FeeRate","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","Foreign","Generic","Hex","InsufficientFunds","Internal","InvalidNetwork","InvalidOutpoint","InvalidPolicyPathError","InvalidProgressValue","InvalidU32Bytes","IrreplaceableTransaction","Json","Key","KeychainKind","Local","LocalUtxo","Miniscript","MissingCachedScripts","MissingKeyOrigin","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","ProgressUpdateError","Psbt","PsbtParse","Rpc","Rusqlite","ScriptDoesntHaveAddressForm","Secp256k1","Signer","Sled","SpendingPolicyRequired","TransactionConfirmed","TransactionDetails","TransactionNotFound","UnknownUtxo","Utxo","Vbytes","Verification","WeightedUtxo","add","as_byte","as_ref","as_sat_per_vb","base32_len","blockchain","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","check_base32","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","confirmation_time","confirmed","database","default","default","default","default","default_min_relay_fee","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor","descriptor","deserialize","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","eq","eq","fee","fee_vb","fee_wu","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fragment","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_btc_per_kvb","from_sat_per_kvb","from_sat_per_kwu","from_sat_per_vb","from_vb","from_wu","get_hash","get_hash","get_spendable","get_total","hash","hash","height","immature","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into_descriptor_key","into_extended_key","into_wallet_descriptor","into_wallet_descriptor","is_spent","keychain","keys","ne","ne","ne","ne","ne","ne","ne","new","outpoint","outpoint","partial_cmp","psbt","received","satisfaction_weight","sent","serialize","serialize","serialize","serialize","serialize","sub","sum","timestamp","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","transaction","trusted_pending","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","txid","txout","txout","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","untrusted_pending","utxo","vbytes","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet","write_base32","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","available","found","needed","requested","required","required","0","outpoint","psbt_input","AccurateFees","Blockchain","BlockchainFactory","Capability","Config","ConfigurableBlockchain","EsploraBlockchain","FullHistory","GetAnyTx","GetBlockHash","GetHeight","GetTx","Inner","LogProgress","NoopProgress","Progress","ProgressData","StatelessBlockchain","WalletSync","any","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","build","build_for_wallet","clone","clone","clone","clone_into","clone_into","clone_into","compact_filters","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","electrum","eq","esplora","estimate_fee","fmt","fmt","fmt","from","from","from","from_config","get_block_hash","get_capabilities","get_hash","get_height","get_tx","hash","init","init","init","into","into","into","log_progress","noop_progress","progress","rpc","sync_wallet","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update","update","update","vzip","vzip","vzip","wallet_setup","wallet_sync","AnyBlockchain","AnyBlockchainConfig","CompactFilters","CompactFilters","Electrum","Electrum","Esplora","Esplora","Rpc","Rpc","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from","from","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","into","into","ne","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","wallet_setup","wallet_sync","0","0","0","0","0","0","0","0","Bip158","BitcoinPeerConfig","BlockHashNotFound","CompactFiltersBlockchain","CompactFiltersBlockchainConfig","CompactFiltersError","DataCorruption","Db","Global","InvalidFilter","InvalidFilterHeader","InvalidHeaders","InvalidResponse","Io","Mempool","MissingBlock","NoPeers","NotConnected","Peer","PeerBloomDisabled","Time","Timeout","add_tx","address","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone","clone_into","clone_into","connect","connect_proxy","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","drop","drop","eq","eq","estimate_fee","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_mempool","get_network","get_tx","get_tx","get_version","has_tx","init","init","init","init","init","init","into","into","into","into","into","into","is_connected","iter_txs","ne","ne","network","new","new","peers","recv","send","serialize","serialize","skip_blocks","socks5","socks5_credentials","storage_dir","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","wallet_setup","0","0","0","0","0","ElectrumBlockchain","ElectrumBlockchainConfig","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","into","into","ne","retry","serialize","socks5","stop_gap","timeout","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","url","vzip","vzip","wallet_setup","BitcoinEncoding","EsploraBlockchain","EsploraBlockchainConfig","EsploraError","HeaderHashNotFound","HeaderHeightNotFound","Hex","HttpResponse","Io","NoHeader","Parsing","TransactionNotFound","Ureq","UreqTransport","base_url","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone_into","concurrency","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","eq","estimate_fee","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_client","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","init","into","into","into","ne","new","new","proxy","serialize","stop_gap","timeout","to_owned","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","wallet_setup","with_concurrency","0","0","0","0","0","0","0","0","0","0","Auth","Cookie","None","RpcBlockchain","RpcBlockchainFactory","RpcConfig","RpcSyncParams","UserPass","auth","auth","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast","build","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","default","default_skip_blocks","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","eq","eq","eq","estimate_fee","fmt","fmt","fmt","fmt","fmt","force_start_time","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_hash","get_height","get_tx","hash","init","init","init","init","init","into","into","into","into","into","ne","ne","ne","network","network","partial_cmp","poll_rate_sec","serialize","serialize","serialize","start_script_count","start_time","sync_params","sync_params","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","url","url","vzip","vzip","vzip","vzip","vzip","wallet_name","wallet_name_prefix","wallet_setup","file","password","username","Batch","BatchDatabase","BatchOperations","Config","ConfigurableDatabase","Database","SqliteDatabase","SyncTime","any","begin_batch","begin_batch","block_time","borrow","borrow","borrow_mut","borrow_mut","check_descriptor_checksum","check_descriptor_checksum","clone","clone_into","commit_batch","commit_batch","connection","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","fmt","fmt","from","from","from_config","from_config","get_last_index","get_last_index","get_path_from_script_pubkey","get_path_from_script_pubkey","get_raw_tx","get_raw_tx","get_script_pubkey_from_path","get_script_pubkey_from_path","get_sync_time","get_sync_time","get_tx","get_tx","get_utxo","get_utxo","increment_last_index","increment_last_index","init","init","into","into","iter_raw_txs","iter_raw_txs","iter_script_pubkeys","iter_script_pubkeys","iter_txs","iter_txs","iter_utxos","iter_utxos","memory","new","path","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","AnyBatch","AnyDatabase","AnyDatabaseConfig","Memory","Memory","Memory","Sled","Sled","Sled","SledDbConfiguration","Sqlite","Sqlite","Sqlite","SqliteDbConfiguration","begin_batch","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_descriptor_checksum","commit_batch","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","init","init","init","init","into","into","into","into","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","path","path","serialize","serialize","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","tree_name","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","0","0","MemoryDatabase","begin_batch","borrow","borrow_mut","check_descriptor_checksum","commit_batch","default","del_last_index","del_path_from_script_pubkey","del_raw_tx","del_script_pubkey_from_path","del_sync_time","del_tx","del_utxo","deref","deref_mut","drop","fmt","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","new","set_last_index","set_raw_tx","set_script_pubkey","set_sync_time","set_tx","set_utxo","try_from","try_into","type_id","vzip","Bare","DerivedDescriptor","Descriptor","DescriptorPublicKey","DescriptorXKey","ExtendedDescriptor","ExtractPolicy","Hardened","HdKeyPaths","IntoWalletDescriptor","Key","KeyMap","Legacy","Miniscript","None","Pkh","ScriptContext","Segwitv0","Sh","SinglePub","TapKeyOrigins","Tr","Unhardened","Wildcard","Wpkh","Wsh","XPub","address","as_derived","as_derived_fixed","as_enum","as_enum","as_inner","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","check_global_consensus_validity","check_global_consensus_validity","check_global_consensus_validity","check_global_policy_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_policy_validity","check_local_policy_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derivation_path","derive","derived","derived_descriptor","desc_type","deserialize","deserialize","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","eq","eq","error","explicit_script","ext","extract_policy","extract_policy","extract_policy","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from_ast","from_str","from_str","from_str_insane","from_tree","from_tree","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_leaf_pk","get_leaf_pk_pkh","get_leaf_pkh","get_nth_child","get_nth_pk","get_nth_pk_pkh","get_nth_pkh","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","hash","hash","hash","hash","hash","hash","init","init","init","init","init","init","into","into","into","into","into","into","into_inner","into_pre_taproot_desc","into_wallet_descriptor","is_deriveable","is_non_malleable","iter","iter_pk","iter_pk_pkh","iter_pkh","lift","lift","lift_check","matches","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","name_str","name_str","name_str","ne","ne","new_bare","new_pk","new_pkh","new_sh","new_sh_sortedmulti","new_sh_with_wpkh","new_sh_with_wsh","new_sh_wpkh","new_sh_wsh","new_sh_wsh_sortedmulti","new_tr","new_wpkh","new_wsh","new_wsh_sortedmulti","node","origin","other_top_level_checks","parse","parse_descriptor","parse_insane","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","template","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string_with_secret","top_level_checks","top_level_type_check","translate_pk","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","vzip","vzip","wildcard","within_resource_limits","xkey","0","0","0","0","0","0","0","0","get_checksum","get_checksum_bytes","AsDerived","DerivedDescriptorKey","as_derived","as_derived_fixed","borrow","borrow_mut","clone","clone_into","cmp","deref","deref","deref_mut","drop","eq","fmt","fmt","from","get_hash","hash","hash_to_hash160","init","into","is_uncompressed","new","partial_cmp","to_owned","to_pubkeyhash","to_public_key","to_string","to_x_only_pubkey","try_from","try_into","type_id","vzip","Base58","Bip32","Error","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","Pk","Policy","borrow","borrow_mut","deref","deref_mut","drop","fmt","fmt","from","from","from","from","from","from","from","from","init","into","to_string","try_from","try_into","type_id","vzip","0","0","0","0","0","0","0","0","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","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","cmp","contribution","csv","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","get_hash","get_hash","hash","hash","id","id","init","init","init","init","init","init","init","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","ne","ne","ne","ne","ne","ne","partial_cmp","requires_path","satisfaction","serialize","serialize","serialize","serialize","serialize","timelock","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","current_height","input_max_height","psbt","0","0","0","0","0","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","0","0","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","0","0","0","0","0","0","0","0","0","1","1","1","1","1","1","2","2","2","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2Wpkh","P2Wpkh_P2Sh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","build","build","build","build","build","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","from","from","from","from","from","from","from","from","from","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","DescriptorSinglePriv","DescriptorSinglePub","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","as_public","bip39","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derive","derive_public_key","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","generate","generate_default","generate_with_entropy","generate_with_entropy_default","get_hash","get_hash","get_hash","get_hash","has_secret","hash","hash","hash","hash","init","init","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","into","into","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","name_str","ne","ne","ne","ne","new","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","sanity_check","satisfy","script_size","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_pubkeyhash","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","0","0","0","0","AmbiguousLanguages","BadEntropyBitCount","BadWordCount","English","Error","InvalidChecksum","Language","Mnemonic","MnemonicWithPassphrase","UnknownWord","WordCount","Words12","Words15","Words18","Words21","Words24","all","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","drop","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_entropy","from_entropy_in","from_str","generate_in_with","generate_with_entropy","get_hash","get_hash","hash","hash","init","init","init","init","into","into","into","into","into_descriptor_key","into_extended_key","language","language_of","ne","ne","parse","parse_in","parse_in_normalized","parse_normalized","partial_cmp","partial_cmp","serialize","to_entropy","to_entropy_array","to_owned","to_owned","to_owned","to_seed","to_seed_normalized","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","word_count","word_iter","words_by_prefix","0","0","0","0","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressIndex","AddressInfo","IsDust","LastUnused","New","Peek","Reset","SyncOptions","Wallet","add_address_validator","add_signer","address","address_validator","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","coin_selection","database","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_checksum","drop","drop","drop","drop","ensure_addresses_cached","eq","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","get_address","get_address_validators","get_balance","get_descriptor_for_keychain","get_funded_wallet","get_internal_address","get_psbt_input","get_signers","get_tx","get_utxo","hardwaresigner","index","init","init","init","init","into","into","into","into","is_dust","is_mine","keychain","list_transactions","list_unspent","ne","network","new","new_offline","policies","progress","public_descriptor","secp_ctx","sign","signer","sync","time","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","tx_builder","type_id","type_id","type_id","type_id","verify","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","0","0","AddressValidator","AddressValidatorError","ConnectionError","InvalidScript","Message","TimeoutError","UserRejected","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","fmt","fmt","from","init","into","ne","to_owned","to_string","try_from","try_into","type_id","validate","vzip","0","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Excess","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","init","init","init","init","init","into","into","into","into","into","local_selected_amount","new","selected","selected_amount","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","amount","change_fee","dust_threshold","fee","remaining_amount","FullyNodedExport","WalletExport","blockheight","borrow","borrow_mut","change_descriptor","deref","deref_mut","descriptor","deserialize","drop","export_wallet","fmt","from","from_str","init","into","label","serialize","to_string","try_from","try_into","type_id","vzip","HWISigner","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","from_device","id","init","into","sign_transaction","try_from","try_into","type_id","vzip","0","All","Dummy","Exclude","Fingerprint","HWIError","Include","InputIndexOutOfRange","InputSigner","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","Legacy","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","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","drop","drop","drop","drop","drop","drop","drop","drop","eq","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","from","get_hash","hash","id","id","id","ids","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","ne","ne","ne","ne","ne","new","new","partial_cmp","partial_cmp","remove","remove_partial_sigs","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_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","0","0","0","0","0","0","0","get_timestamp","Bip69Lexicographic","BumpFee","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","CreateTx","OnlyChange","Shuffle","TxBuilder","TxBuilderContext","TxOrdering","Untouched","add_data","add_foreign_utxo","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_dust","allow_shrinking","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_policy","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","coin_selection","current_height","default","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","do_not_spend_change","drain_to","drain_wallet","drop","drop","drop","drop","drop","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_hash","get_hash","hash","hash","include_output_redeem_witness_script","init","init","init","init","init","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unspendable","version","vzip","vzip","vzip","vzip","vzip","Consensus","Global","InvalidInput","MissingInputTx","VerifyError","borrow","borrow_mut","deref","deref_mut","drop","fmt","fmt","from","from","from","init","into","to_string","try_from","try_into","type_id","verify_tx","vzip","0","0","0","0"],"q":["bdk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Utxo","","","bdk::blockchain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any::AnyBlockchain","","","","bdk::blockchain::any::AnyBlockchainConfig","","","","bdk::blockchain::compact_filters","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::compact_filters::CompactFiltersError","","","","","bdk::blockchain::electrum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora::EsploraError","","","","","","","","","","bdk::blockchain::rpc","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::rpc::Auth","","","bdk::database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any::AnyBatch","","","bdk::database::any::AnyDatabase","","","bdk::database::any::AnyDatabaseConfig","","","bdk::database::memory","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::Descriptor","","","","","","bdk::descriptor::DescriptorPublicKey","","bdk::descriptor::checksum","","bdk::descriptor::derived","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::error::Error","","","","","","","","bdk::descriptor::policy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy::BuildSatisfaction","","","","bdk::descriptor::policy::PkOrF","","","bdk::descriptor::policy::PolicyError","","bdk::descriptor::policy::Satisfaction","","","","","","","","","","","bdk::descriptor::policy::SatisfiableItem","","","","","","","","","","","","bdk::descriptor::template","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::DescriptorPublicKey","","bdk::keys::DescriptorSecretKey","","bdk::keys::ExtendedKey","","bdk::keys::KeyError","","","bdk::keys::SinglePubKey","","bdk::keys::bip39","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::bip39::Error","","","","bdk::psbt","","","","bdk::wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::AddressIndex","","bdk::wallet::address_validator","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::address_validator::AddressValidatorError","bdk::wallet::coin_selection","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::coin_selection::Excess","","","","","bdk::wallet::export","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::hardwaresigner","","","","","","","","","","","","","","","","","bdk::wallet::signer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer::SignerContext","bdk::wallet::signer::SignerError","","bdk::wallet::signer::SignerId","","","bdk::wallet::signer::TapLeavesOptions","","bdk::wallet::time","bdk::wallet::tx_builder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::verify","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::verify::VerifyError","","",""],"d":["Error that can be returned to fail the validation of an …","Balance differentiated in various categories","BIP32 error","Block height and timestamp of a block","Branch and bound coin selection tries to avoid needing a …","Branch and bound coin selection possible attempts with …","Descriptor checksum mismatch","Compact filters client error)","DEPRECATED: Confirmation time of a transaction","Error related to the parsing and usage of descriptors","Electrum client error","Encoding error","Errors that can be thrown by the Wallet","Esplora client error","External","Fee rate","When bumping a tx the fee rate requested is lower than …","Node doesn’t have data to estimate a fee rate","When bumping a tx the absolute fee requested is lower than …","A UTXO owned by another wallet.","Generic error","Hex decoding error","Wallet’s UTXO set is not enough to cover recipient’s …","Internal, usually used for change outputs","Invalid network","Requested outpoint doesn’t exist in the tx (vout greater …","Error while extracting and manipulating policies","Progress value must be between 0.0 (included) and 100.0 …","Wrong number of bytes found when trying to convert to u32","Trying to replace a tx that has a sequence >= 0xFFFFFFFE","Error serializing or deserializing JSON data","Error while working with keys","Types of keychains","A UTXO owned by the local wallet.","An unspent output owned by a Wallet.","Miniscript error","crate::blockchain::WalletSync sync attempt failed due to …","In order to use the TxBuilder::add_global_xpubs option …","Cannot build a tx without recipients","manually_selected_only option is selected but no utxo has …","Output created is under the dust limit, 546 satoshis","Progress update error (maybe the channel has been closed)","Partially signed bitcoin transaction error","Partially signed bitcoin transaction parse error","Rpc client error","Rusqlite client error","This error is thrown when trying to convert Bare and …","An ECDSA error","Signing error","Sled database error","Spending policy is not compatible with this KeychainKind","Happens when trying to bump a transaction that is already …","A wallet transaction","Thrown when a tx is not found in the internal database","Happens when trying to spend an UTXO that is not in the …","An unspent transaction output (UTXO).","Trait implemented by types that can be used to measure …","Transaction verification error","A Utxo with its satisfaction_weight.","","Return KeychainKind as a byte","","Return the value as satoshi/vbyte","","Blockchain backends","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If the transaction is confirmed, contains height and …","Confirmed and immediately spendable balance","Database types","","","","","Create a new FeeRate with the default min relay fee value","","","","","","","","","","","","","","","","","","","Descriptors","Macro to write full descriptors with code","","","","","","","","","","","","","","","","","","","","","","","Fee value (sats) if confirmed. The availability of the fee …","Calculate absolute fee in Satoshis using size in virtual …","Calculate absolute fee in Satoshis using size in weight …","","","","","","","","","","","","Macro to write descriptor fragments with code","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new instance of FeeRate given a float fee rate in …","Create a new instance of FeeRate given a float fee rate in …","Create a new instance of FeeRate given a float fee rate in …","Create a new instance of FeeRate given a float fee rate in …","Calculate fee rate from fee and vbytes.","Calculate fee rate from fee and weight units (wu).","","","Get sum of trusted_pending and confirmed coins","Get the whole balance visible to the wallet","","","confirmation block height","All coinbase outputs not yet matured","","","","","","","","","","","","","","","","","","","","","","","Whether this UTXO is spent or not","Type of keychain","Key formats","","","","","","","","Returns Some BlockTime if both height and timestamp are …","Get the location of the UTXO","Reference to a transaction output","","Additional functions on the rust-bitcoin …","Received value (sats) Sum of owned outputs of this …","The weight of the witness data and scriptSig expressed in …","Sent value (sats) Sum of owned inputs of this transaction.","","","","","","","","confirmation block timestamp","","","","","","","","","","","Optional transaction","Unconfirmed UTXOs generated by a wallet tx","","","","","","","","","","","","","","","","","","","Transaction id","Get the TxOut of the UTXO","Transaction output","","","","","","","","","","Unconfirmed UTXOs received from an external wallet","The UTXO","Convert weight units to virtual bytes.","Get the version of BDK at runtime","","","","","","","","","","Wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Sats available for spending","found network, for example the network of the bitcoin node","Sats needed for some transaction","requested network, for example what is given as bdk-cli …","Required fee rate (satoshi/vbyte)","Required fee absolute value (satoshi)","","The location of the output.","The information about the input we require to add it to a …","Can compute accurate fees for the transactions found …","Trait that defines the actions that must be supported by a …","Trait for a factory of blockchains that share the …","Capabilities that can be supported by a Blockchain backend","Type that contains the configuration","Trait for Blockchain types that can be created given a …","Structure that implements the logic to sync with Esplora","Can recover the full history of a wallet and not only the …","Can fetch any historical transaction given its txid","Trait for getting block hash by block height","Trait for getting the current height of the blockchain.","Trait for getting a transaction by txid","The type returned when building a blockchain from this …","Type that implements Progress and logs at level INFO every …","Type that implements Progress and drops every update …","Trait for types that can receive and process progress …","Data sent with a progress update over a channel","Trait for blockchains that don’t contain any state","Trait for blockchains that can sync by updating the …","Runtime-checked blockchain types","","","","","","","Broadcast a transaction","Build a new blockchain for the given descriptor wallet_name","Build a new blockchain for a given wallet","","","","","","","Compact Filters","","","","","","","","","","","","Electrum","","Esplora","Estimate the fee rate required to confirm a transaction in …","","","","","","","Create a new instance given a configuration","fetch block hash given its height","Return the set of Capability supported by this backend","","Return the current height","Fetch a transaction given its txid","","","","","","","","Create a new instance of LogProgress","Create a new instance of NoopProgress","Shortcut to create a channel (pair of Sender and Receiver) …","Rpc Blockchain","Use BlockchainFactory::build_for_wallet to get a …","","","","","","","","","","","","","Send a new progress update","","","","","","Setup the backend and populate the internal database for …","If not overridden, it defaults to calling …","Type that can contain any of the Blockchain types defined …","Type that can contain any of the blockchain configurations …","Compact filters client","Compact filters client","Electrum client","Electrum client","Esplora client","Esplora client","RPC client","RPC client configuration","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Invalid BIP158 filter","Data to connect to a Bitcoin P2P peer","Block hash at specified height not found","Structure implementing the required blockchain traits","Configuration for a CompactFiltersBlockchain","An error that can occur during sync with a …","The data stored in the block filters storage are corrupted","Internal database error","Wrapper for crate::error::Error","The compact filter returned is invalid","The compact filter headers returned are invalid","The headers returned are invalid","A peer sent an invalid or unexpected response","Internal I/O error","Container for unconfirmed, but valid Bitcoin transactions","The peer is missing a block in the valid chain","No peers have been specified","A peer is not connected","A Bitcoin peer","The peer doesn’t advertise the BLOOM service flag","Internal system time error","A peer took too long to reply to one of our messages","Add a transaction to the mempool","Peer address such as 127.0.0.1:18333","","","","","","","","","","","","","","","","","","Connect to a peer over a plaintext TCP connection","Connect to a peer through a SOCKS5 proxy, optionally by …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the mempool used by this peer","Return the Bitcoin Network in use","Look-up a transaction in the mempool given an Inventory …","","Return the VersionMessage sent by the peer","Return whether or not the mempool contains a transaction …","","","","","","","","","","","","","Return whether or not the peer is still connected","Return the list of transactions contained in the mempool","","","Network used","Create a new empty mempool","Construct a new instance given a list of peers, a path to …","List of peers to try to connect to for asking headers and …","Waits for a specific incoming Bitcoin message, optionally …","Send a raw Bitcoin message to the peer","","","Optionally skip initial skip_blocks blocks (default: 0)","Optional socks5 proxy","Optional socks5 proxy credentials","Storage dir to save partially downloaded headers and full …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrapper over an Electrum Client that implements the …","Configuration for an ElectrumBlockchain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Request retry count","","URL of the socks5 proxy server or a Tor service","Stop searching addresses for transactions after finding an …","Request timeout (seconds)","","","","","","","","URL of the Electrum server (such as ElectrumX, Esplora, …","","","","Invalid Bitcoin data returned","Structure that implements the logic to sync with Esplora","Configuration for an EsploraBlockchain","Errors that can happen during a sync with Esplora","Header hash not found","Header height not found","Invalid Hex data returned","HTTP response error","IO error during ureq response read","No header found in ureq response","Invalid number returned","Transaction not found","Error during ureq HTTP request","Transport error during the ureq HTTP call","Base URL of the esplora service","","","","","","","","","","Number of parallel requests sent to the esplora service …","","","","","","","","","","","","","","","","","","","","","","","","","","","Build a new instance given a client","","","","","","","","","","","","","Create a new instance of the client from a base URL and …","create a config with default values given the base url and …","Optional URL of the proxy to use to make requests to the …","","Stop searching addresses for transactions after finding an …","Socket timeout.","","","","","","","","","","","","","","","","Set the number of parallel requests the client can make.","","","","","","","","","","","This struct is equivalent to bitcoincore_rpc::Auth but it …","Authentication with a cookie file","None authentication","The main struct for RPC backend implementing the …","Factory of RpcBlockchain instances, implements …","RpcBlockchain configuration options","Sync parameters for Bitcoin Core RPC.","Authentication with username and password, usually …","The bitcoin node authentication mechanism","The bitcoin node authentication mechanism","","","","","","","","","","","","","","","","","","","","","","","Default number of blocks to skip which will be inherited …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Forces every sync to use start_time as import timestamp.","","","","","","Returns RpcBlockchain backend creating an RPC client to a …","","","","","","","","","","","","","","","","","","","","The network we are using (it will be checked the bitcoin …","The network we are using (it will be checked the bitcoin …","","RPC poll rate (in seconds) to get state updates.","","","","The minimum number of scripts to scan for on initial sync.","Time in unix seconds in which initial sync will start …","Sync parameters","Sync parameters","","","","","","","","","","","","","","","","","","","","The bitcoin node url","The bitcoin node url","","","","","","The wallet name in the bitcoin node, consider using …","The optional prefix used to build the full wallet name for …","","Cookie file","Password","Username","Container for the operations","Trait for a database that supports batch operations","Trait for operations that can be batched","Type that contains the configuration","Trait for Database types that can be created given a …","Trait for reading data from a database","Sqlite database stored on filesystem","Blockchain state at the time of syncing","Runtime-checked database types","Create a new batch container","","Block timestamp and height at the time of sync","","","","","Read and checks the descriptor checksum for a given …","","","","Consume and apply a batch of operations","","A rusqlite connection object to the sqlite database","Delete the last derivation index for a keychain.","","Delete the data related to a specific script_pubkey, …","","Delete a raw transaction given its Txid","","Delete a script_pubkey given the keychain and its child …","","Reset the sync time to None","","Delete the metadata of a transaction and optionally the …","","Delete a LocalUtxo given its OutPoint","","","","","","","","","","","","","Create a new instance given a configuration","","Return the last derivation index for a keychain.","","Fetch the keychain and child number of a given …","","Fetch a raw transaction given its Txid","","Fetch a script_pubkey given the child number of a keychain.","","Return the sync time, if present","","Fetch the transaction metadata and optionally also the raw …","","Fetch a LocalUtxo given its OutPoint","","Increment the last derivation index for a keychain and …","","","","","","Return the list of raw transactions","","Return the list of script_pubkeys","","Return the list of transactions metadata","","Return the list of LocalUtxos","","In-memory ephemeral database","Instantiate a new SqliteDatabase instance by creating a …","Path on the local filesystem to store the sqlite file","","Store the last derivation index for a given keychain.","","Store a raw transaction","","Store a script_pubkey along with its keychain and child …","","Store the sync time","","Store the metadata of a transaction","","Store a LocalUtxo","","","","","","","","","","","Type that contains any of the BatchDatabase::Batch types …","Type that can contain any of the Database types defined by …","Type that can contain any of the database configurations …","In-memory ephemeral database","In-memory ephemeral database","Memory database has no config","Simple key-value embedded database based on sled","Simple key-value embedded database based on sled","Simple key-value embedded database based on sled","Configuration type for a sled::Tree database","Sqlite embedded database using rusqlite","Sqlite embedded database using rusqlite","Sqlite embedded database using rusqlite","Configuration type for a sqlite::SqliteDatabase database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Main directory of the db","Main directory of the db","","","","","","","","","","","","","","","","Name of the database tree, a separated namespace for the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","In-memory ephemeral database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new empty database","","","","","","","","","","","A raw scriptpubkey (including pay-to-pubkey) under Legacy …","Alias for a Descriptor that contains extended derived keys","Script descriptor","The MiniscriptKey corresponding to Descriptors. This can …","Instance of an extended key with origin and derivation path","Alias for a Descriptor that can contain extended keys …","Trait implemented on Descriptors to add a method to …","Unhardened wildcard, e.g. *h","Alias for the type of maps that represent derivation paths …","Trait for types which can be converted into an …","The consensus key associated with the type. Must be a …","Alias type for a map of public key to secret key","Legacy ScriptContext To be used as P2SH scripts For …","Top-level script AST type","No wildcard","Pay-to-PubKey-Hash","The ScriptContext for Miniscript. Additional type …","Segwitv0 ScriptContext","Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)","Single Public Key","Alias for the type of maps that represent taproot key …","Pay-to-Taproot","Unhardened wildcard, e.g. *","Whether a descriptor has a wildcard in it","Pay-to-Witness-PubKey-Hash","Pay-to-Witness-ScriptHash with Segwitv0 context","Xpub","Computes the Bitcoin address of the descriptor, if one …","","","","","Get a reference to the inner AstElem representing the root …","","","","","","","","","","","","","Enumerates all child nodes of the current AST node (self) …","Depending on script Context, some of the Terminals might …","","","Depending on script Context, some of the script resource …","","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","","","Policy rules at the Miniscript satisfaction time. It is …","","","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","","","Check whether the given satisfaction is valid under the …","","","Descriptor checksum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The derivation path","Derives all wildcard keys in the descriptor using the …","Derived descriptor keys","Derive a Descriptor with a concrete bitcoin::PublicKey at …","Get the DescriptorType of Descriptor","","","","","","","","","Encode as a Bitcoin script","","","","","","","Descriptor errors","Computes the “witness script” of the descriptor, i.e. …","Additional information helpful for extra analysis.","Extract the spending policy","","","","","","","","","","","","","","","","","","","","","","","","","Add type information(Type and Extdata) to Miniscript based …","","","Attempt to parse an insane(scripts don’t clear sanity …","Parse an expression tree into a descriptor","Parse an expression tree into a Miniscript. As a general …","","","","","","","Returns Vec with cloned version of all public keys from …","Returns Vec of PkPkh entries, representing either public …","Returns Vec with hashes of all public keys from the …","Returns child node with given index, if any","Returns Option::Some with cloned n’th public key from …","Returns Option::Some with hash of n’th public key or …","Returns Option::Some with hash of n’th public key from …","Returns satisfying non-malleable witness and scriptSig to …","Returns a possilbly mallable satisfying non-malleable …","Whether the miniscript contains a combination of timelocks","Whether the miniscript has repeated Pk or Pkh","","","","","","","","","","","","","","","","","","","Extracts the AstElem representing the root of the …",". Convert a Descriptor into …","Convert to wallet descriptor","Whether or not the descriptor has any wildcards","Whether the miniscript is malleable","Creates a new Iter iterator that will iterate over all …","Creates a new PkIter iterator that will iterate over all …","Creates a new PkPkhIter iterator that will iterate over …","Creates a new PkhIter iterator that will iterate over all …","","","Lifting corresponds conversion of miniscript into Policy […","Compares this key with a keysource and returns the …","Depending on script context, the size of a satifaction …","","","Maximum size, in bytes, of a satisfying witness. For …","Computes an upper bound on the weight of a satisfying …","Maximum number of witness elements used to satisfy the …","Local helper function to display error messages with …","","","","","Create a new bare descriptor from witness script Errors …","Create a new pk descriptor","Create a new PkH descriptor","Create a new sh for a given redeem script Errors when …","Create a new sh sortedmulti descriptor with threshold k …","Create a new sh wrapper for the given wpkh descriptor","Create a new sh wrapper for the given wsh descriptor","Create a new sh wrapped wpkh from Pk. Errors when …","Create a new sh wrapped wsh descriptor with witness script …","Create a new sh wrapped wsh sortedmulti descriptor from …","Create new tr descriptor Errors when miniscript exceeds …","Create a new Wpkh descriptor Will return Err if …","Create a new wsh descriptor from witness script Errors …","Create a new wsh sorted multi descriptor Errors when …","A node in the Abstract Syntax Tree(","Origin information","Other top level checks that are context specific","Attempt to parse a Script into Miniscript representation. …","Parse a descriptor that may contain secret keys","Attempt to parse an insane(scripts don’t clear sanity …","","","","","","","Get the len of public key when serialized based on context …","","","Descriptor policy","Whether all spend paths of miniscript require a signature","Whether the descriptor is safe Checks whether all the …","Check whether the underlying Miniscript is safe under the …","Attempt to produce non-malleable satisfying witness for the","Attempt to produce a malleable satisfying witness for the …","Get the scriptCode of a transaction output.","Computes the scriptpubkey of the descriptor","Size, in bytes of the script-pubkey. If this Miniscript is …","","","The type of signature required for satisfaction","","","Descriptor templates","","","","","","","","","Serialize a descriptor to string with its secret keys","Check top level consensus rules.","Check whether the top-level is type B","Convert a descriptor using abstract keys to one using …","This will panic if translatefpk returns an uncompressed …","","","","","","","","","","","","","The correctness and malleability type information for the …","","","","","","","Computes the scriptSig that will be in place for an …","","","","","","","Whether the descriptor is wildcard","Whether the miniscript can exceed the resource …","The extended key","","","","","","","","","Compute the checksum of a descriptor","Computes the checksum bytes of a descriptor","Utilities to derive descriptors","Extended DescriptorPublicKey that has been derived","Derive a descriptor and transform all of its keys to …","Transform the keys into DerivedDescriptorKey.","","","","","","","","","","","","","","","","","","","","Construct a new derived key","","","","","","","","","","","Error during base58 decoding","BIP32 error","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","Key-related error","Error while extracting and manipulating policies","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Absolute timeclock timestamp","Can not add to an item that is Satisfaction::None or …","Can not add to an item that is …","Options to build the satisfaction field in the policy","Can satisfy the policy item","An extra condition that must be satisfied but that is out …","Type for a map of sets of Condition items keyed by each set…","ECDSA Signature for a raw public key","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","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the conditions that are set by the spending policy …","","","","","Returns a unique id for the SatisfiableItem","Identifier for this policy node","","","","","","","","","","","","","","","Returns whether the SatisfiableItem is a leaf item","Returns whether the Satisfaction is a leaf item","Returns true if there are no extra conditions to verify","Type of this policy node","","","","","","","","Return whether or not a specific path in the policy tree …","How much a given PSBT already satisfies this policy node …","","","","","","Optional timelock condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Current blockchain height","The highest confirmation height between the inputs CSV …","Given PSBT","","","","","","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","The items that can be satisfied by the descriptor or are …","The items that can be satisfied by the descriptor","Threshold","Threshold","Total number of items","Total number of items","Whether the items are sorted in lexicographic order (used …","Whether the items are sorted in lexicographic order (used …","","","The digest value","The digest value","The digest value","The digest value","The policy items","The raw public key or extended key fingerprint","The required threshold count","The required threshold count","The timestamp value","The locktime value","","","","","","","","","","","","","","","","","","","BIP44 template. Expands to pkh(key/44'/{0,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}/*)","Trait for descriptor templates that can be built into a …","Type alias for the return type of DescriptorTemplate, …","P2PKH template. Expands to a descriptor pkh(key)","P2WPKH template. Expands to a descriptor wpkh(key)","P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))","","","","","","","","","","","","","","","","","","","Build the complete descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BIP32 error","Trait for keys that can be derived.","Container for public or secret keys","The MiniscriptKey corresponding to Descriptors. This can …","A Secret Key that can be either a single key or an Xprv","A Single Descriptor Secret Key with optional origin …","A Single Descriptor Key with optional origin information","Type specifying the amount of entropy required e.g. [u8;32]","Returned error in case of failure","Trait that adds extra useful methods to ScriptContexts","Enum for extended keys that can be either xprv or xpub","FullKey (compressed or uncompressed)","Trait that allows generating a key with the default options","Trait for keys that can be generated","Output of a GeneratableKey key generation","Trait for objects that can be turned into a public or …","The key has an invalid checksum","The key is not valid for the given network","The key cannot exist in the given script context","The consensus key associated with the type. Must be a …","Errors thrown while working with keys","Alias type for a map of public key to secret key","Legacy scripts","Custom error message","Miniscript error","Extra options required by the generate_with_entropy","A private extended key, aka an xprv","Options for generating a PrivateKey","A public extended key, aka an xpub","The ScriptContext for Miniscript. Additional type …","Enum representation of the known valid ScriptContexts","Segwitv0 scripts","Single Secret Key","Single Public Key","Single public key without any origin or range information","Contents of a “sortedmulti” descriptor","Taproot scripts","Set of valid networks for a key","XOnlyPublicKey","Xprv","Xpub","Create a set containing mainnet, testnet and regtest","Returns the ScriptContext as a ScriptContextEnum","Return the public version of this key, by applying either …","BIP-0039","","","","","","","","","","","","","","","","","","","","","","","","","Depending on script Context, some of the Terminals might …","Depending on script Context, some of the script resource …","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","Policy rules at the Miniscript satisfaction time. It is …","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","Check whether the given satisfaction is valid under the …","","","","","","","","","","","","","","","","","","","Whether the generated key should be “compressed” or not","","","","","","","","","","","","","","","","","","","","","","","","","","","If this public key has a wildcard, replace it by the given …","Computes the public key corresponding to this descriptor …","","","","","","","","","","","","","Encode as a Bitcoin script","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create an instance given a public key and a set of valid …","Create an instance given a secret key and a set of valid …","","","Parse an expression tree into a SortedMultiVec","Full path, from the master key","Generate a key given the options with a random entropy","Generate a key with the default options and a random …","Generate a key given the extra options and the entropy","Generate a key with the default options and a given entropy","","","","","Return whether or not the key contains the private data","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Turn the key into a DescriptorKey within the requested …","Consume self and turn it into a DescriptorKey by adding …","","","","","","Consume self and turn it into an ExtendedKey","","","Consumes self and returns the key","Transform the ExtendedKey into an ExtendedPrivKey for the …","Transform the ExtendedKey into an ExtendedPubKey for the …","Whether or not the key has a wildcards","Returns whether the script context is Legacy","Returns whether the script context is …","Returns whether the script context is Segwitv0","Returns whether the script context is …","Returns whether the script context is Tap, aka Taproot or …","Returns whether the script context is …","","","signatures required","The key","The key","","Create a set only containing mainnet","The fingerprint of the master key associated with this …","Depending on script context, the size of a satifaction …","Maximum size, in bytes, of a satisfying witness. In …","Maximum number of witness elements used to satisfy the …","Compute the intersection of two sets","Local helper function to display error messages with …","","","","","Create a new instance of SortedMultiVec given a list of …","Origin information","Origin information","Other top level checks that are context specific","Override the computed set of valid networks","","","","","Get the len of public key when serialized based on context …","public keys inside sorted Multi","utility function to sanity a sorted multi vec","Attempt to produce a satisfying witness for the witness …","Size, in bytes of the script-pubkey. If this Miniscript is …","The type of signature required for satisfaction","Create Terminal::Multi containing sorted pubkeys","Create a set containing testnet and regtest","","","","","","","","","","","","","Check top level consensus rules.","Check whether the top-level is type B","This will panic if translatefpk returns an uncompressed …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The mnemonic can be interpreted as multiple languages. Use …","Entropy was not a multiple of 32 bits or between 128-256n …","Mnemonic has a word count that is not a multiple of 6.","The English language.","A BIP39 error.","The mnemonic has an invalid checksum.","Language to be used for the mnemonic phrase.","A mnemonic code.","Type for a BIP39 mnemonic with an optional passphrase","Mnemonic contains an unknown word. Error contains the …","Type describing entropy length (aka word count) in the …","12 words mnemonic (128 bits entropy)","15 words mnemonic (160 bits entropy)","18 words mnemonic (192 bits entropy)","21 words mnemonic (224 bits entropy)","24 words mnemonic (256 bits entropy)","The list of supported languages. Language support is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new English Mnemonic from the given entropy. …","Create a new Mnemonic in the specified language from the …","","Generate a new Mnemonic in the given language with the …","","","","","","","","","","","","","","","","Get the language of the Mnemonic.","Determine the language of the mnemonic.","","","Parse a mnemonic and detect the language from the enabled …","Parse a mnemonic in the given language.","Parse a mnemonic in normalized UTF8 in the given language.","Parse a mnemonic in normalized UTF8.","","","","Convert the mnemonic back to the entropy used to generate …","Convert the mnemonic back to the entropy used to generate …","","","","Convert to seed bytes.","Convert to seed bytes with a passphrase in normalized UTF8.","","","","","","","","","","","","","","","","","","","","Get the number of words in the mnemonic.","Get an iterator over the words.","Get words from the word list that start with the given …","","","","","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’…","The address index selection strategy to use to derived an …","A derived address and the index it was found at For …","Trait to check if a value is below the dust limit. We are …","Return the address for the current descriptor index if it …","Return a new address after incrementing the current …","Return the address for a specific descriptor index. Does …","Return the address for a specific descriptor index and …","Options to a sync.","A Bitcoin wallet","Add an address validator","Add an external signer","Address","Address validation callbacks","","","","","","","","","Bump the fee of a transaction previously created with this …","Start building a transaction.","Coin selection","Return an immutable reference to the internal database","","","","","","","","","","","Return the checksum of the public descriptor associated to …","","","","","Ensures that there are at least max_addresses addresses …","","Wallet export","Finalize a PSBT, i.e., for each input determine if …","","","","","","","","","","Return a derived address using the external descriptor, …","Get the address validators","Return the balance, separated into available, …","Returns the descriptor used to create addresses for a …","Return a fake wallet that appears to be funded for testing.","Return a derived address using the internal (change) …","get the corresponding PSBT Input for a LocalUtxo","Get the signers","Return a single transactions made and received by the …","Returns the UTXO owned by this wallet corresponding to …","HWI Signer","Child index of this address","","","","","","","","","Check whether or not a value is below dust limit","Return whether or not a script is part of this wallet …","Type of keychain","Return an unsorted list of transactions made and received …","Return the list of unspent outputs of this wallet","","Get the Bitcoin network the wallet is using.","Create a wallet.","Create a new “offline” wallet","Return the spending policies for the wallet’s descriptor","The progress tracker which may be informed when progress …","Return the “public” version of the wallet’s …","Return the secp256k1 context used for all signing …","Sign a transaction with all the wallet’s signers, in the …","Generalized signers","Sync the internal database with the blockchain","Cross-platform time","","","","","","","","","","Transaction builder","","","","","Verify transactions against the consensus rules","","","","","Deterministically generate a unique name given the …","","","Trait to build address validators","Errors that can be returned to fail the validation of an …","Network connection error","Invalid script","A custom error message","Network request timeout error","User rejected the address","","","","","","","","","","","","","","","","","","","","Validate or inspect an address","","","Branch and bound coin selection","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 …","Remaining amount after performing coin selection","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","","","","","","","","","","","","","","","","","","","","","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.","","","","","","","","","","","","","","","","","","","","","","","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 …","Structure that contains the export of a wallet","Alias for FullyNodedExport","Earliest block to rescan when looking for the wallet’s …","","","Return the internal descriptor, if present","","","Return the external descriptor","","","Export a wallet","","","","","","Arbitrary label for the wallet","","","","","","","Custom signer for Hardware Wallets","","","","","","","","Create a instance from the specified device and chain","","","","","","","","","","The signer will sign all the leaves it has a key for.","Dummy identifier","The signer won’t sign the specified leaves.","The fingerprint of a BIP32 extended key","Error while signing using hardware wallets","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","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 structure 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 …","","","","","","","","","","","","","","","","","","","","","","","","Return the SignerId for this signer","","","Returns the list of identifiers of all the signers in the …","","","","","","","","","","","","","","","","","","","","","","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 …","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","","","","","","","","Return the current timestamp in seconds","BIP69 / Lexicographic","Marker type to indicate the TxBuilder is being used to …","Use both change and non-change outputs (default)","Only use non-change outputs (see …","Policy regarding the use of change outputs when creating a …","Marker type to indicate the TxBuilder is being used to …","Only use change outputs (see TxBuilder::only_spend_change)","Randomized (default)","A transaction builder","Context in which the TxBuilder is valid","Ordering of the transaction’s inputs and outputs","Unchanged","Add data as an output, using OP_RETURN","Add a foreign UTXO i.e. a UTXO not owned by this wallet.","Fill-in the PSBT_GLOBAL_XPUB field with the extended keys …","Add a recipient to the internal list","Add a utxo to the internal list of unspendable utxos","Add a utxo to the internal list of utxos that must be spent","Add the list of outpoints to the internal list of UTXOs …","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","Set a custom fee rate","Finish building the transaction.","","","","","","","","","","","","","","","Fill-in the psbt::Output::redeem_script and …","","","","","","","","","","","Only spend utxos added by add_utxo.","Use a specific nLockTime while creating the transaction","Only spend change outputs","Only Fill-in the psbt::Input::witness_utxo field when …","Choose the ordering for inputs and outputs of the …","","","Set the policy path to use while creating the transaction …","Replace the recipients already added with a new list","Sign with a specific sig hash","Sort transaction inputs and outputs by TxOrdering variant","","","","","","","","","","","","","","","","","","","","","Replace the internal list of unspendable utxos with a new …","Build a transaction with a specific version","","","","","","Consensus error","Generic error","The transaction being spent doesn’t have the requested …","The transaction being spent is not available in the …","Error during validation of a tx agains the consensus rules","","","","","","","","","","","","","","","","","Verify a transaction against the consensus rules","","","","",""],"i":[1,0,1,0,1,1,1,1,0,1,1,1,0,1,2,0,1,1,1,3,1,1,1,2,1,1,1,1,1,1,1,1,0,3,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,4,2,2,5,2,0,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,2,2,5,6,7,3,8,9,4,2,5,6,7,3,8,9,4,8,4,0,5,8,9,4,5,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,0,0,2,6,8,9,4,1,2,5,6,7,3,8,9,4,2,5,6,7,3,8,9,4,8,5,5,1,1,2,5,6,7,3,8,9,4,4,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,5,6,7,3,8,9,9,4,5,5,5,5,5,5,2,6,4,4,2,6,9,4,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,10,10,11,12,6,6,0,5,6,7,3,8,9,4,9,3,6,5,0,8,7,8,2,6,8,9,4,5,4,9,2,5,6,7,3,8,9,4,1,4,8,4,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,8,3,6,1,2,5,6,7,3,8,9,4,4,7,13,0,1,2,5,6,7,3,8,9,4,0,2,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,42,43,44,45,46,47,47,48,0,0,0,49,0,0,48,48,0,0,0,50,0,0,0,0,0,0,0,48,51,52,48,51,52,53,50,50,48,51,52,48,51,52,0,51,52,48,51,52,48,51,52,48,51,52,0,48,0,53,48,51,52,48,51,52,49,54,53,48,55,56,48,48,51,52,48,51,52,0,0,0,0,50,48,51,52,48,51,52,48,51,52,48,51,52,57,51,52,48,51,52,58,58,0,0,59,60,59,60,59,60,59,60,59,60,59,60,59,60,60,59,60,59,60,60,59,60,60,59,60,59,59,59,59,59,60,60,60,60,60,59,59,59,59,59,59,60,59,60,60,60,60,59,60,59,60,59,60,59,60,59,59,61,62,63,64,65,66,67,68,69,0,69,0,0,0,69,69,69,69,69,69,69,69,0,69,69,69,0,69,69,69,70,71,70,72,73,71,74,69,70,72,73,71,74,69,73,71,74,71,74,72,72,70,70,72,73,71,74,69,70,72,73,71,74,69,71,74,70,72,73,71,74,69,71,74,73,70,72,73,71,74,69,69,70,72,73,71,74,69,69,69,69,69,69,73,73,73,73,72,72,70,73,72,70,70,72,73,71,74,69,70,72,73,71,74,69,72,70,71,74,74,70,73,74,72,72,71,74,74,71,71,74,71,74,69,70,72,73,71,74,69,70,72,73,71,74,69,70,72,73,71,74,69,70,72,73,71,74,69,73,75,76,77,78,79,0,0,80,81,80,81,80,81,81,80,80,81,80,81,81,80,81,81,80,81,80,80,81,80,80,80,80,80,80,81,80,81,81,81,81,81,81,81,81,80,81,80,81,80,81,81,80,81,80,82,0,0,0,82,82,82,82,82,82,82,82,82,82,83,82,84,83,82,84,83,84,83,83,83,82,84,84,83,82,84,83,83,82,84,83,83,84,82,82,84,83,82,82,82,82,82,82,82,84,83,84,84,84,84,84,84,82,84,83,82,84,83,83,84,83,83,83,83,83,83,82,82,84,83,82,84,83,82,84,83,82,84,83,84,84,85,86,87,88,89,90,91,92,93,94,0,95,95,0,0,0,0,95,96,97,98,96,99,95,97,98,96,99,95,97,98,97,96,99,95,97,96,99,95,97,95,99,97,98,98,96,99,95,97,98,96,99,95,97,96,99,95,98,96,99,95,97,96,99,95,98,98,96,99,95,97,99,98,96,99,95,97,98,98,98,95,98,98,95,98,96,99,95,97,98,96,99,95,97,96,99,95,96,97,95,99,96,99,95,99,99,96,97,96,99,95,97,98,96,99,95,97,98,96,99,95,97,98,96,99,95,97,96,97,98,96,99,95,97,96,97,98,100,101,101,102,0,0,103,0,0,0,0,0,102,104,105,104,105,104,105,106,104,105,105,102,104,104,107,104,107,104,107,104,107,104,107,104,107,104,107,104,104,105,104,105,105,104,105,104,105,104,105,103,104,106,104,106,104,106,104,106,104,106,104,106,104,106,104,106,104,104,105,104,105,106,104,106,104,106,104,106,104,0,104,104,105,107,104,107,104,107,104,107,104,107,104,107,104,105,104,105,104,105,104,105,104,105,0,0,0,108,109,110,108,109,110,0,108,109,110,0,109,108,109,111,112,110,108,109,111,112,110,109,109,108,109,108,109,108,109,108,109,108,109,108,109,108,109,108,109,111,112,110,108,109,111,112,110,111,112,110,108,109,111,112,110,109,111,112,110,108,108,108,108,109,109,109,109,111,112,110,110,110,110,109,109,109,109,109,109,109,109,109,108,109,111,112,110,108,109,111,112,110,109,109,109,109,111,112,111,112,110,108,109,108,109,108,109,108,109,108,109,108,109,111,108,109,111,112,110,108,109,111,112,110,108,109,111,112,110,108,109,111,112,110,113,114,115,116,117,118,119,120,121,0,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,123,0,0,0,0,0,0,124,0,0,125,0,0,0,124,123,0,0,123,126,0,123,124,0,123,123,126,123,123,123,127,128,129,124,130,123,127,128,129,124,130,123,127,128,129,129,125,127,128,125,128,125,125,127,128,125,127,128,125,125,127,128,125,127,128,0,124,130,123,127,128,129,124,130,123,127,128,129,124,130,123,127,128,129,124,130,123,127,128,129,124,130,123,127,128,129,130,123,0,123,123,123,129,124,130,123,127,128,129,129,124,130,123,127,128,129,0,123,129,131,123,129,124,130,123,123,127,128,129,129,123,129,124,130,123,123,123,123,123,123,123,127,128,129,129,123,129,129,123,129,124,130,123,127,128,129,129,129,129,129,129,129,129,123,123,129,129,124,130,123,127,128,129,124,130,123,127,128,129,124,130,123,127,128,129,129,123,132,123,129,129,129,129,129,123,129,129,130,125,127,128,129,123,129,125,127,128,130,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,129,130,125,129,123,129,124,130,123,127,128,129,125,127,128,0,129,123,129,129,129,123,123,129,123,129,125,127,128,0,124,130,123,127,128,129,123,129,123,125,125,123,129,124,130,123,127,128,129,124,130,123,127,128,129,129,124,130,123,127,128,129,123,124,130,123,127,128,129,130,129,130,133,134,135,136,137,138,139,140,0,0,0,0,141,141,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,143,143,0,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,144,145,146,147,148,149,150,151,152,153,153,0,154,0,0,152,155,0,152,152,153,153,153,152,154,156,153,154,154,0,0,0,156,156,155,152,152,0,0,152,152,152,155,155,152,154,157,158,153,156,155,152,154,157,158,153,156,155,152,154,157,158,156,155,152,154,157,158,156,158,157,158,158,155,152,154,157,158,153,156,155,152,154,157,158,153,156,155,152,154,157,158,153,156,155,152,154,157,158,153,155,152,154,157,158,153,153,156,155,152,154,154,157,157,158,153,156,157,155,158,155,158,152,157,155,152,154,157,158,153,156,155,152,154,157,158,153,156,152,154,158,157,155,152,154,157,158,153,158,157,157,155,152,154,157,158,158,155,152,154,157,158,156,153,155,152,154,157,158,153,156,155,152,154,157,158,153,156,155,152,154,157,158,153,156,155,152,154,157,158,153,156,159,160,160,160,161,162,163,164,165,166,167,168,167,168,167,168,167,168,167,168,169,170,171,172,173,174,175,176,176,175,177,178,179,180,181,182,183,184,185,186,187,182,183,184,185,186,187,183,185,187,0,0,0,0,0,0,0,0,0,0,0,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,188,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,179,180,181,182,183,184,185,186,187,189,0,0,0,0,0,0,190,190,0,0,191,0,0,0,0,189,189,189,125,0,0,192,189,189,190,193,0,193,0,0,192,194,126,0,0,192,0,191,194,126,0,195,194,0,193,196,197,191,126,198,199,194,200,192,201,189,193,196,197,191,126,198,199,194,200,192,201,189,125,125,125,125,125,125,125,125,196,197,191,126,198,192,201,196,197,191,126,198,192,201,197,191,126,198,201,201,193,196,196,197,191,126,198,199,194,200,192,201,189,193,196,197,191,126,198,199,194,200,192,201,189,126,126,193,196,197,191,126,198,199,194,200,192,201,189,197,197,191,126,198,192,197,197,191,126,126,198,199,194,194,200,192,201,189,189,197,193,193,193,196,197,191,126,198,199,194,200,192,201,189,189,189,200,200,126,194,197,126,190,202,190,202,197,191,126,198,193,197,191,126,198,193,196,197,191,126,198,199,194,200,192,201,189,193,196,197,191,126,198,199,194,200,192,201,189,203,204,196,196,126,194,200,204,193,196,196,193,193,126,195,192,195,192,195,192,126,126,197,198,199,197,0,126,125,197,197,0,125,197,191,126,198,197,198,199,125,200,197,191,126,198,125,197,197,197,197,125,197,0,196,197,191,126,198,192,201,126,197,126,194,189,125,125,197,193,196,197,191,126,198,199,194,200,192,201,189,193,196,197,191,126,198,199,194,200,192,201,189,193,196,197,191,126,198,199,194,200,192,201,189,193,196,197,191,126,198,199,194,200,192,201,189,139,140,205,206,207,208,209,210,211,212,213,214,214,214,215,0,214,0,0,0,214,0,216,216,216,216,216,215,215,214,217,216,215,214,217,216,215,214,217,215,214,217,215,217,215,214,217,216,215,214,217,216,217,215,214,217,216,215,214,217,215,215,214,214,217,217,215,214,217,216,217,217,217,217,217,215,217,215,217,215,214,217,216,215,214,217,216,217,217,217,217,214,217,217,217,217,217,215,217,217,217,217,215,214,217,217,217,215,214,217,215,214,217,216,215,214,217,216,215,214,217,216,215,214,217,216,217,217,215,218,219,220,221,0,222,222,222,0,0,0,223,223,223,223,0,0,224,224,225,0,224,223,225,226,224,223,225,226,224,224,0,224,226,224,223,225,225,226,224,223,225,226,224,224,223,225,226,224,225,0,224,224,223,225,225,226,224,223,225,226,224,224,224,224,0,224,224,224,224,224,0,225,224,223,225,226,224,223,225,226,227,224,225,224,224,225,224,224,224,224,226,224,224,224,0,224,0,225,224,223,225,226,224,223,225,226,0,224,223,225,226,0,224,223,225,226,0,228,229,0,0,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,231,230,232,0,233,0,0,0,0,0,233,0,233,234,235,236,237,233,234,235,236,237,235,236,235,236,238,235,236,237,0,235,236,237,233,234,235,236,237,233,234,235,236,237,233,234,235,236,237,234,234,233,234,235,236,237,233,234,235,236,237,233,234,235,236,237,233,234,235,236,237,234,237,234,234,235,236,233,234,235,236,237,233,234,235,236,237,233,234,235,236,237,233,234,235,236,237,239,240,240,239,240,0,0,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,0,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,243,244,245,244,245,246,244,246,0,246,246,246,247,246,246,246,246,246,246,244,245,247,246,0,0,0,0,0,0,0,0,247,0,0,246,248,249,249,248,249,245,246,247,250,243,248,249,244,245,246,247,250,243,248,249,244,248,245,246,247,250,243,248,249,244,245,246,247,250,243,248,249,244,245,243,243,248,249,244,245,246,247,250,250,243,248,249,244,245,246,247,250,243,248,249,244,251,250,250,245,246,247,250,243,248,249,244,245,246,247,243,244,248,245,246,246,247,250,243,248,249,244,245,245,245,246,246,246,247,250,243,248,249,244,245,245,251,250,250,248,245,246,247,250,243,248,249,244,245,246,247,250,243,248,249,244,245,246,247,243,244,250,248,245,243,248,249,252,250,250,253,250,249,248,249,245,246,247,250,243,248,249,244,246,249,249,245,246,247,250,243,248,249,244,245,246,247,250,243,248,249,244,245,246,247,250,243,248,249,244,245,246,247,250,243,248,249,244,254,255,256,257,258,259,260,261,0,262,0,263,263,0,0,263,262,0,0,0,262,264,264,264,264,264,264,264,264,264,265,266,264,262,263,265,266,264,262,263,264,265,266,264,262,263,265,266,264,262,263,262,263,264,264,265,266,262,263,265,266,264,262,263,265,266,264,262,263,264,264,264,265,266,264,262,263,264,264,262,263,264,264,264,265,266,264,262,263,265,266,264,262,263,262,263,262,263,264,265,266,264,262,263,265,266,264,262,263,264,264,264,264,264,262,263,264,264,264,262,265,266,264,262,263,265,266,264,262,263,265,266,264,262,263,265,266,264,262,263,264,264,265,266,264,262,263,267,267,267,267,0,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,0,267,268,269,270,271],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[],["u8",15]],[[]],[[],["f32",15]],[[],["usize",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["vec",3,[["u5",3],["global",3]]]]]],[[],["keychainkind",4]],[[],["feerate",3]],[[],["localutxo",3]],[[],["weightedutxo",3]],[[],["utxo",4]],[[],["transactiondetails",3]],[[],["blocktime",3]],[[],["balance",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[]],[[],["transactiondetails",3]],[[],["blocktime",3]],[[],["balance",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["keychainkind",4]],["bool",15]],[[["feerate",3]],["bool",15]],[[["localutxo",3]],["bool",15]],[[["weightedutxo",3]],["bool",15]],[[["utxo",4]],["bool",15]],[[["transactiondetails",3]],["bool",15]],[[["blocktime",3]],["bool",15]],[[["balance",3]],["bool",15]],null,[[["usize",15]],["u64",15]],[[["usize",15]],["u64",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],null,[[["policyerror",4]]],[[["error",4]]],[[["esploraerror",4]]],[[["verifyerror",4]]],[[["compactfilterserror",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[]],[[["psbtparseerror",4]]],[[["error",4]]],[[["addressvalidatorerror",4]]],[[["error",4]]],[[["signererror",4]]],[[["keyerror",4]],["error",4]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["blocktime",3]]],[[]],[[["f32",15]]],[[["f32",15]]],[[["f32",15]]],[[["f32",15]]],[[["u64",15],["usize",15]],["feerate",3]],[[["u64",15],["usize",15]],["feerate",3]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],null,null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],null,null,null,[[["feerate",3]],["bool",15]],[[["localutxo",3]],["bool",15]],[[["weightedutxo",3]],["bool",15]],[[["utxo",4]],["bool",15]],[[["transactiondetails",3]],["bool",15]],[[["blocktime",3]],["bool",15]],[[["balance",3]],["bool",15]],[[["option",4,[["u32",15]]],["option",4,[["u64",15]]]],["option",4]],[[],["outpoint",3]],null,[[["feerate",3]],["option",4,[["ordering",4]]]],null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["feerate",3]]],[[["iterator",8]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["txout",3]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[],["usize",15]],[[],["str",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",4]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[["str",15],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[["wallet",3],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[],["capability",4]],[[],["noopprogress",3]],[[],["logprogress",3]],[[]],[[]],[[]],null,[[],["noopprogress",3]],[[],["logprogress",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["capability",4]],["bool",15]],null,[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["u64",15]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[],["logprogress",3]],[[],["noopprogress",3]],[[]],null,[[["wallet",3],["option",4,[["u32",15]]],["syncoptions",3]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["anyblockchainconfig",4]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["anyblockchainconfig",4]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[]],[[["electrumblockchain",3]]],[[["esplorablockchain",3]]],[[["compactfiltersblockchain",3]]],[[["rpcblockchain",3]]],[[["esplorablockchainconfig",3]]],[[]],[[["electrumblockchainconfig",3]]],[[["rpcconfig",3]]],[[["compactfiltersblockchainconfig",3]]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["anyblockchainconfig",4]],["bool",15]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["transaction",3]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["bitcoinpeerconfig",3]],[[],["compactfiltersblockchainconfig",3]],[[]],[[]],[[["tosocketaddrs",8],["arc",3,[["mempool",3]]],["network",4]],["result",4,[["compactfilterserror",4]]]],[[["totargetaddr",8],["tosocketaddrs",8],["option",4],["arc",3,[["mempool",3]]],["network",4]],["result",4,[["compactfilterserror",4]]]],[[],["mempool",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["bitcoinpeerconfig",3]],["bool",15]],[[["compactfiltersblockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[["error",4]]],[[["systemtimeerror",3]]],[[]],[[["error",3]]],[[["error",3]]],[[["error",4]]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[],["arc",3,[["mempool",3]]]],[[],["network",4]],[[["inventory",4]],["option",4,[["transaction",3]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["versionmessage",3]],[[["txid",3]],["bool",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["vec",3,[["transaction",3]]]],[[["bitcoinpeerconfig",3]],["bool",15]],[[["compactfiltersblockchainconfig",3]],["bool",15]],null,[[]],[[["vec",3,[["peer",3]]],["asref",8,[["path",3]]],["option",4,[["usize",15]]]],["result",4,[["compactfilterserror",4]]]],null,[[["str",15],["option",4,[["duration",3]]]],["result",4,[["option",4,[["networkmessage",4]]],["compactfilterserror",4]]]],[[["networkmessage",4]],["result",4,[["compactfilterserror",4]]]],[[],["result",4]],[[],["result",4]],null,null,null,null,[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["electrumblockchainconfig",3]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["electrumblockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["client",3]]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["electrumblockchainconfig",3]],["bool",15]],null,[[],["result",4]],null,null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["esplorablockchainconfig",3]],[[]],null,[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["esplorablockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["error",3]],["error",4]],[[["parseinterror",3]],["error",4]],[[["error",4]],["error",4]],[[["transport",3]],["error",4]],[[["error",4]],["error",4]],[[["error",4]],["error",4]],[[]],[[]],[[]],[[["blockingclient",3],["usize",15]]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[["esplorablockchainconfig",3]],["bool",15]],[[["str",15],["usize",15]]],[[["string",3],["usize",15]]],null,[[],["result",4]],null,null,[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["u8",15]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[["str",15],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[],["rpcconfig",3]],[[],["rpcsyncparams",3]],[[],["auth",4]],[[],["rpcblockchainfactory",3]],[[]],[[]],[[]],[[]],[[["auth",4]],["ordering",4]],[[]],null,[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["rpcconfig",3]],["bool",15]],[[["rpcsyncparams",3]],["bool",15]],[[["auth",4]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],null,[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["u64",15]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[["rpcconfig",3]],["bool",15]],[[["rpcsyncparams",3]],["bool",15]],[[["auth",4]],["bool",15]],null,null,[[["auth",4]],["option",4,[["ordering",4]]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,null,null,[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],[[]],null,null,[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],null,[[]],[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["synctime",3]],[[]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],null,[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],null,[[["asref",8,[["path",3]]]]],null,[[],["result",4]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["memorydatabase",3]]],[[["tree",3]]],[[["sqlitedatabase",3]]],[[]],[[]],[[]],[[["sqlitedbconfiguration",3]]],[[["sleddbconfiguration",3]]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[],["memorydatabase",3]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["network",4]],["result",4,[["address",3],["error",4]]]],[[["u32",15],["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[],["scriptcontextenum",4]],[[],["scriptcontextenum",4]],[[],["terminal",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["vec",3,[["miniscript",3],["global",3]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],null,[[],["wildcard",4]],[[],["descriptorxkey",3]],[[],["descriptor",4]],[[],["legacy",4]],[[],["segwitv0",4]],[[],["miniscript",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["wildcard",4]],["ordering",4]],[[["descriptorxkey",3]],["ordering",4]],[[["descriptor",4]],["ordering",4]],[[["legacy",4]],["ordering",4]],[[["segwitv0",4]],["ordering",4]],[[["miniscript",3]],["ordering",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["u32",15]],["descriptor",4,[["descriptorpublickey",4]]]],null,[[["secp256k1",3],["u32",15]],["result",4,[["descriptor",4,[["publickey",3]]],["conversionerror",4]]]],[[],["descriptortype",4]],[[],["result",4,[["descriptor",4]]]],[[],["result",4,[["miniscript",3]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["script",3]],[[["wildcard",4]],["bool",15]],[[["descriptorxkey",3]],["bool",15]],[[["descriptor",4]],["bool",15]],[[["legacy",4]],["bool",15]],[[["segwitv0",4]],["bool",15]],[[["miniscript",3]],["bool",15]],null,[[],["result",4,[["script",3],["error",4]]]],null,[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["descriptorerror",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[["wsh",3]],["descriptor",4]],[[]],[[["tr",3]],["descriptor",4]],[[["wpkh",3]],["descriptor",4]],[[["pkh",3]],["descriptor",4]],[[["bare",3]],["descriptor",4]],[[["sh",3]],["descriptor",4]],[[]],[[]],[[]],[[["terminal",4]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15]],["result",4,[["descriptor",4],["error",4]]]],[[["str",15]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15]],["result",4,[["miniscript",3],["error",4]]]],[[["tree",3]],["result",4,[["descriptor",4],["error",4]]]],[[["tree",3]],["result",4,[["miniscript",3],["error",4]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["vec",3,[["global",3]]]],[[],["vec",3,[["pkpkh",4],["global",3]]]],[[],["vec",3,[["global",3]]]],[[["usize",15]],["option",4,[["miniscript",3]]]],[[["usize",15]],["option",4]],[[["usize",15]],["option",4,[["pkpkh",4]]]],[[["usize",15]],["option",4]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["terminal",4]],[[],["result",4,[["pretaprootdescriptor",4],["descriptor",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],[[],["bool",15]],[[],["bool",15]],[[],["iter",3]],[[],["pkiter",3]],[[],["pkpkhiter",3]],[[],["pkhiter",3]],[[],["result",4,[["policy",4],["error",4]]]],[[],["result",4,[["policy",4],["error",4]]]],[[],["result",4,[["lifterror",4]]]],[[["secp256k1",3]],["option",4,[["derivationpath",3]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["str",15]],[[],["str",15]],[[],["str",15]],[[["descriptorxkey",3]],["bool",15]],[[["descriptor",4]],["bool",15]],[[["miniscript",3,[["barectx",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["descriptor",4]],[[],["descriptor",4]],[[["miniscript",3,[["legacy",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],[[["wpkh",3]],["descriptor",4]],[[["wsh",3]],["descriptor",4]],[[],["result",4,[["descriptor",4],["error",4]]]],[[["miniscript",3,[["segwitv0",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],[[["option",4,[["taptree",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["result",4,[["descriptor",4],["error",4]]]],[[["miniscript",3,[["segwitv0",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],null,null,[[["miniscript",3]],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["miniscript",3],["error",4]]]],[[["secp256k1",3],["str",15]],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["miniscript",3],["error",4]]]],[[["wildcard",4]],["option",4,[["ordering",4]]]],[[["descriptorxkey",3]],["option",4,[["ordering",4]]]],[[["descriptor",4]],["option",4,[["ordering",4]]]],[[["legacy",4]],["option",4,[["ordering",4]]]],[[["segwitv0",4]],["option",4,[["ordering",4]]]],[[["miniscript",3]],["option",4,[["ordering",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],null,[[],["bool",15]],[[],["result",4,[["error",4]]]],[[],["result",4,[["analysiserror",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["result",4,[["script",3],["error",4]]]],[[],["script",3]],[[],["usize",15]],[[],["result",4]],[[],["result",4]],[[],["sigtype",4]],[[],["sigtype",4]],[[],["sigtype",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[["hashmap",3]],["string",3]],[[["miniscript",3]],["result",4,[["error",4]]]],[[["miniscript",3]],["result",4,[["error",4]]]],[[],["result",4,[["descriptor",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["script",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["bool",15]],null,null,null,null,null,null,null,null,null,[[["str",15]],["result",4,[["string",3],["descriptorerror",4]]]],[[["str",15]],["result",4,[["descriptorerror",4]]]],null,null,[[["u32",15],["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[["secp256k1",3]],["descriptor",4,[["deriveddescriptorkey",3]]]],[[]],[[]],[[],["deriveddescriptorkey",3]],[[]],[[],["ordering",4]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[],["u64",15]],[[]],[[],["hash",3]],[[],["usize",15]],[[]],[[],["bool",15]],[[["descriptorpublickey",4],["secp256k1",3]],["deriveddescriptorkey",3]],[[],["option",4,[["ordering",4]]]],[[]],[[]],[[],["publickey",3]],[[],["string",3]],[[],["xonlypublickey",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[]],[[["error",4]]],[[["error",4]]],[[["keyerror",4]],["error",4]],[[["policyerror",4]]],[[],["usize",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["pkorf",4]],[[],["satisfiableitem",4]],[[],["satisfaction",4]],[[],["policy",3]],[[],["condition",3]],[[],["buildsatisfaction",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[["condition",3]],["ordering",4]],null,null,[[],["condition",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["pkorf",4]],["bool",15]],[[["satisfiableitem",4]],["bool",15]],[[["satisfaction",4]],["bool",15]],[[["policy",3]],["bool",15]],[[["condition",3]],["bool",15]],[[["policyerror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["bool",15]]],[[]],[[["satisfiableitem",4]]],[[]],[[]],[[]],[[]],[[["btreemap",3]],["result",4,[["condition",3],["policyerror",4]]]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[],["string",3]],null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,[[["pkorf",4]],["bool",15]],[[["satisfiableitem",4]],["bool",15]],[[["satisfaction",4]],["bool",15]],[[["policy",3]],["bool",15]],[[["condition",3]],["bool",15]],[[["policyerror",4]],["bool",15]],[[["condition",3]],["option",4,[["ordering",4]]]],[[],["bool",15]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["validnetworks",6]],[[],["scriptcontextenum",4]],[[["secp256k1",3]],["result",4,[["descriptorpublickey",4],["descriptorkeyparseerror",3]]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["generatedkey",3]],[[],["sortedmultivec",3]],[[],["singlepubkey",4]],[[],["descriptorpublickey",4]],[[],["descriptorsinglepub",3]],[[],["scriptcontextenum",4]],[[],["privatekeygenerateoptions",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["sortedmultivec",3]],["ordering",4]],[[["singlepubkey",4]],["ordering",4]],[[["descriptorpublickey",4]],["ordering",4]],[[["descriptorsinglepub",3]],["ordering",4]],null,[[]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["u32",15]],["descriptorpublickey",4]],[[["secp256k1",3]],["result",4,[["publickey",3],["conversionerror",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["script",3]],[[["sortedmultivec",3]],["bool",15]],[[["singlepubkey",4]],["bool",15]],[[["descriptorpublickey",4]],["bool",15]],[[["descriptorsinglepub",3]],["bool",15]],[[["scriptcontextenum",4]],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[],["bool",15]],[[["extendedprivkey",3]]],[[]],[[["extendedpubkey",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["error",4]]],[[["error",4]]],[[]],[[["descriptorpublickey",4],["validnetworks",6]]],[[["descriptorsecretkey",4],["validnetworks",6]]],[[["str",15]],["result",4,[["descriptorpublickey",4]]]],[[["str",15]],["result",4,[["descriptorsecretkey",4]]]],[[["tree",3]],["result",4,[["sortedmultivec",3],["error",4]]]],[[],["derivationpath",3]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[]],[[["network",4]],["option",4,[["extendedprivkey",3]]]],[[["network",4],["secp256k1",3]],["extendedpubkey",3]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,[[],["result",4,[["policy",4],["error",4]]]],[[],["validnetworks",6]],[[],["fingerprint",3]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[],["usize",15]],[[],["usize",15]],[[["validnetworks",6],["validnetworks",6]],["validnetworks",6]],[[],["str",15]],[[["sortedmultivec",3]],["bool",15]],[[["singlepubkey",4]],["bool",15]],[[["descriptorpublickey",4]],["bool",15]],[[["descriptorsinglepub",3]],["bool",15]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["sortedmultivec",3],["error",4]]]],null,null,[[["miniscript",3]],["result",4,[["error",4]]]],[[["validnetworks",6]]],[[["sortedmultivec",3]],["option",4,[["ordering",4]]]],[[["singlepubkey",4]],["option",4,[["ordering",4]]]],[[["descriptorpublickey",4]],["option",4,[["ordering",4]]]],[[["descriptorsinglepub",3]],["option",4,[["ordering",4]]]],[[],["usize",15]],null,[[],["result",4,[["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["usize",15]],[[],["sigtype",4]],[[],["terminal",4]],[[],["validnetworks",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["descriptorpublickey",4]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[["miniscript",3]],["result",4,[["error",4]]]],[[["miniscript",3]],["result",4,[["error",4]]]],[[],["result",4,[["sortedmultivec",3]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["language",4]],[[],["error",4]],[[],["mnemonic",3]],[[]],[[]],[[]],[[["language",4]],["ordering",4]],[[["mnemonic",3]],["ordering",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["mnemonic",3]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["language",4]],["bool",15]],[[["error",4]],["bool",15]],[[["mnemonic",3]],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[]],[[]],[[],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["result",4,[["mnemonic",3],["error",4]]]],[[["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4],["usize",15]],["result",4,[["mnemonic",3],["error",4]]]],[[],["result",4,[["generatedkey",3]]]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["language",4]],[[],["result",4,[["language",4],["error",4]]]],[[["error",4]],["bool",15]],[[["mnemonic",3]],["bool",15]],[[],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4],["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["option",4,[["ordering",4]]]],[[["mnemonic",3]],["option",4,[["ordering",4]]]],[[],["result",4]],[[],["vec",3,[["u8",15],["global",3]]]],[[]],[[]],[[]],[[]],[[]],[[["str",15]]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[]],[[["str",15]]],null,null,null,null,null,[[],["option",4,[["u64",15]]]],[[],["option",4,[["feerate",3]]]],[[["usize",15]],["option",4,[["txout",3]]]],null,null,null,null,null,null,null,null,null,[[["arc",3,[["addressvalidator",8]]]]],[[["keychainkind",4],["signerordering",3],["arc",3,[["transactionsigner",8]]]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["txid",3]],["result",4,[["txbuilder",3,[["defaultcoinselectionalgorithm",6],["bumpfee",3]]],["error",4]]]],[[],["txbuilder",3,[["defaultcoinselectionalgorithm",6],["createtx",3]]]],null,[[]],[[],["syncoptions",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["keychainkind",4]],["string",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["u32",15]],["result",4,[["bool",15],["error",4]]]],[[["addressinfo",3]],["bool",15]],null,[[["partiallysignedtransaction",3],["signoptions",3]],["result",4,[["bool",15],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["addressindex",4]],["result",4,[["addressinfo",3],["error",4]]]],[[]],[[],["result",4,[["balance",3],["error",4]]]],[[["keychainkind",4]],["extendeddescriptor",6]],[[["str",15]]],[[["addressindex",4]],["result",4,[["addressinfo",3],["error",4]]]],[[["localutxo",3],["option",4,[["psbtsighashtype",3]]],["bool",15]],["result",4,[["input",3],["error",4]]]],[[["keychainkind",4]],["arc",3,[["signerscontainer",3]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],null,null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[["script",3]],["bool",15]],[[["script",3]],["result",4,[["bool",15],["error",4]]]],null,[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[["addressinfo",3]],["bool",15]],[[],["network",4]],[[["intowalletdescriptor",8],["option",4,[["intowalletdescriptor",8]]],["network",4]],["result",4,[["error",4]]]],[[["intowalletdescriptor",8],["option",4,[["intowalletdescriptor",8]]],["network",4]],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],null,[[["keychainkind",4]],["result",4,[["option",4,[["extendeddescriptor",6]]],["error",4]]]],[[],["secp256k1",3]],[[["partiallysignedtransaction",3],["signoptions",3]],["result",4,[["bool",15],["error",4]]]],null,[[["syncoptions",3]],["result",4,[["error",4]]]],null,[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],[[["option",4],["network",4],["secp256k1",3]],["result",4,[["string",3],["error",4]]]],null,null,null,null,null,null,null,null,null,[[]],[[]],[[],["addressvalidatorerror",4]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["addressvalidatorerror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[],["usize",15]],[[]],[[["addressvalidatorerror",4]],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["keychainkind",4],["hdkeypaths",6],["script",3]],["result",4,[["addressvalidatorerror",4]]]],[[]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["largestfirstcoinselection",3]],[[],["oldestfirstcoinselection",3]],[[]],[[]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["u64",15],["feerate",3],["script",3]],["excess",4]],[[],["largestfirstcoinselection",3]],[[],["oldestfirstcoinselection",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[["u64",15]]],null,[[],["u64",15]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,[[]],[[]],[[],["option",4,[["string",3]]]],[[["usize",15]]],[[["usize",15]]],[[],["string",3]],[[],["result",4]],[[["usize",15]]],[[["wallet",3],["str",15],["bool",15]],["result",4,[["str",15]]]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],["result",4]],[[],["usize",15]],[[]],null,[[],["result",4]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[]],[[["hwidevice",3],["hwichain",4]],["result",4,[["hwisigner",3],["error",4]]]],[[["secp256k1",3]],["signerid",4]],[[],["usize",15]],[[]],[[["partiallysignedtransaction",3],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["signerid",4],["signerordering",3],["arc",3,[["transactionsigner",8]]]],["option",4,[["arc",3,[["transactionsigner",8]]]]]],null,null,[[["secp256k1",3]],["keymap",6]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["keymap",6],["descriptor",4],["secp256k1",3]],["signerscontainer",3]],[[],["signerid",4]],[[],["signererror",4]],[[],["signercontext",4]],[[],["signerwrapper",3]],[[],["signerordering",3]],[[],["signerscontainer",3]],[[],["signoptions",3]],[[],["tapleavesoptions",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["signerid",4]],["ordering",4]],[[["signerordering",3]],["ordering",4]],[[]],[[],["signerscontainer",3]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["signerid",4]],["bool",15]],[[["signererror",4]],["bool",15]],[[["signercontext",4]],["bool",15]],[[["signerordering",3]],["bool",15]],[[["tapleavesoptions",4]],["bool",15]],[[["signerid",4]],["option",4,[["arc",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["hash",3]],["signerid",4]],[[["fingerprint",3]],["signerid",4]],[[]],[[["error",4]]],[[["error",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[]],[[["secp256k1",3]],["signerid",4]],[[["secp256k1",3]],["signerid",4]],[[["secp256k1",3]],["signerid",4]],[[],["vec",3,[["signerid",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["signerid",4]],["bool",15]],[[["signererror",4]],["bool",15]],[[["signercontext",4]],["bool",15]],[[["signerordering",3]],["bool",15]],[[["tapleavesoptions",4]],["bool",15]],[[["signercontext",4]]],[[]],[[["signerid",4]],["option",4,[["ordering",4]]]],[[["signerordering",3]],["option",4,[["ordering",4]]]],[[["signerid",4],["signerordering",3]],["option",4,[["arc",3,[["transactionsigner",8]]]]]],null,[[["partiallysignedtransaction",3],["usize",15],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["usize",15],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["usize",15],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],null,[[],["vec",3,[["arc",3]]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,[[],["u64",15]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[["outpoint",3],["input",3],["usize",15]],["result",4,[["error",4]]]],[[]],[[["script",3],["u64",15]]],[[["outpoint",3]]],[[["outpoint",3]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["bool",15]]],[[["script",3]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["changespendpolicy",4]]],[[],["createtx",3]],[[],["bumpfee",3]],[[]],[[],["txordering",4]],[[],["changespendpolicy",4]],[[]],[[]],[[]],[[]],[[]],[[["txordering",4]],["ordering",4]],[[["changespendpolicy",4]],["ordering",4]],[[["coinselectionalgorithm",8]],["txbuilder",3,[["coinselectionalgorithm",8]]]],[[["u32",15]]],[[],["createtx",3]],[[],["bumpfee",3]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["script",3]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["u32",15]]],[[["txordering",4]],["bool",15]],[[["changespendpolicy",4]],["bool",15]],[[["u64",15]]],[[["feerate",3]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["u32",15]]],[[]],[[]],[[["txordering",4]]],[[["txordering",4]],["option",4,[["ordering",4]]]],[[["changespendpolicy",4]],["option",4,[["ordering",4]]]],[[["btreemap",3,[["string",3],["vec",3,[["usize",15]]]]],["keychainkind",4]]],[[["vec",3]]],[[["psbtsighashtype",3]]],[[["transaction",3]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["vec",3,[["outpoint",3]]]]],[[["i32",15]]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["error",4]]],[[]],[[["error",4]]],[[],["usize",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["transaction",3]],["result",4,[["verifyerror",4]]]],[[]],null,null,null,null],"p":[[4,"Error"],[4,"KeychainKind"],[4,"Utxo"],[3,"Balance"],[3,"FeeRate"],[3,"LocalUtxo"],[3,"WeightedUtxo"],[3,"TransactionDetails"],[3,"BlockTime"],[6,"MnemonicWithPassphrase"],[6,"DescriptorTemplateOut"],[6,"ExtendedDescriptor"],[8,"Vbytes"],[13,"InvalidU32Bytes"],[13,"Generic"],[13,"OutputBelowDustLimit"],[13,"MissingKeyOrigin"],[13,"Key"],[13,"SpendingPolicyRequired"],[13,"InvalidPolicyPathError"],[13,"Signer"],[13,"Verification"],[13,"InvalidProgressValue"],[13,"InvalidOutpoint"],[13,"Descriptor"],[13,"AddressValidator"],[13,"Encode"],[13,"Miniscript"],[13,"Bip32"],[13,"Secp256k1"],[13,"Json"],[13,"Hex"],[13,"Psbt"],[13,"PsbtParse"],[13,"MissingCachedScripts"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Sled"],[13,"Rpc"],[13,"Rusqlite"],[13,"InsufficientFunds"],[13,"InvalidNetwork"],[13,"FeeRateTooLow"],[13,"FeeTooLow"],[13,"Local"],[13,"Foreign"],[4,"Capability"],[8,"ConfigurableBlockchain"],[8,"BlockchainFactory"],[3,"NoopProgress"],[3,"LogProgress"],[8,"Blockchain"],[8,"GetBlockHash"],[8,"GetHeight"],[8,"GetTx"],[8,"Progress"],[8,"WalletSync"],[4,"AnyBlockchain"],[4,"AnyBlockchainConfig"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Rpc"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Rpc"],[4,"CompactFiltersError"],[3,"Mempool"],[3,"BitcoinPeerConfig"],[3,"Peer"],[3,"CompactFiltersBlockchain"],[3,"CompactFiltersBlockchainConfig"],[13,"Db"],[13,"Io"],[13,"Bip158"],[13,"Time"],[13,"Global"],[3,"ElectrumBlockchain"],[3,"ElectrumBlockchainConfig"],[4,"EsploraError"],[3,"EsploraBlockchainConfig"],[3,"EsploraBlockchain"],[13,"Ureq"],[13,"UreqTransport"],[13,"HttpResponse"],[13,"Io"],[13,"Parsing"],[13,"BitcoinEncoding"],[13,"Hex"],[13,"TransactionNotFound"],[13,"HeaderHeightNotFound"],[13,"HeaderHashNotFound"],[4,"Auth"],[3,"RpcConfig"],[3,"RpcBlockchainFactory"],[3,"RpcBlockchain"],[3,"RpcSyncParams"],[13,"Cookie"],[13,"UserPass"],[8,"BatchDatabase"],[8,"ConfigurableDatabase"],[3,"SqliteDatabase"],[3,"SyncTime"],[8,"Database"],[8,"BatchOperations"],[4,"AnyBatch"],[4,"AnyDatabase"],[4,"AnyDatabaseConfig"],[3,"SledDbConfiguration"],[3,"SqliteDbConfiguration"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[3,"MemoryDatabase"],[4,"Descriptor"],[4,"Wildcard"],[8,"ScriptContext"],[4,"DescriptorPublicKey"],[4,"Legacy"],[4,"Segwitv0"],[3,"Miniscript"],[3,"DescriptorXKey"],[8,"ExtractPolicy"],[8,"IntoWalletDescriptor"],[13,"Bare"],[13,"Pkh"],[13,"Wpkh"],[13,"Sh"],[13,"Wsh"],[13,"Tr"],[13,"SinglePub"],[13,"XPub"],[8,"AsDerived"],[3,"DerivedDescriptorKey"],[4,"Error"],[13,"Key"],[13,"Policy"],[13,"InvalidDescriptorCharacter"],[13,"Bip32"],[13,"Base58"],[13,"Pk"],[13,"Miniscript"],[13,"Hex"],[4,"SatisfiableItem"],[4,"PolicyError"],[4,"Satisfaction"],[4,"PkOrF"],[4,"BuildSatisfaction"],[3,"Policy"],[3,"Condition"],[13,"Psbt"],[13,"PsbtTimelocks"],[13,"Pubkey"],[13,"XOnlyPubkey"],[13,"Fingerprint"],[13,"NotEnoughItemsSelected"],[13,"IndexOutOfRange"],[13,"Complete"],[13,"Partial"],[13,"PartialComplete"],[13,"EcdsaSignature"],[13,"SchnorrSignature"],[13,"Sha256Preimage"],[13,"Hash256Preimage"],[13,"Ripemd160Preimage"],[13,"Hash160Preimage"],[13,"Thresh"],[13,"Multisig"],[13,"AbsoluteTimelock"],[13,"RelativeTimelock"],[3,"P2Pkh"],[3,"P2Wpkh_P2Sh"],[3,"P2Wpkh"],[3,"Bip44"],[3,"Bip44Public"],[3,"Bip49"],[3,"Bip49Public"],[3,"Bip84"],[3,"Bip84Public"],[8,"DescriptorTemplate"],[4,"KeyError"],[8,"GeneratableKey"],[4,"SinglePubKey"],[4,"ScriptContextEnum"],[4,"ExtendedKey"],[4,"DescriptorSecretKey"],[8,"ExtScriptContext"],[3,"GeneratedKey"],[3,"SortedMultiVec"],[3,"DescriptorSinglePub"],[3,"DescriptorSinglePriv"],[4,"DescriptorKey"],[3,"PrivateKeyGenerateOptions"],[8,"GeneratableDefaultOptions"],[8,"IntoDescriptorKey"],[8,"DerivableKey"],[13,"SinglePriv"],[13,"XPrv"],[13,"Private"],[13,"Public"],[13,"Message"],[13,"Bip32"],[13,"Miniscript"],[13,"FullKey"],[13,"XOnly"],[4,"Error"],[4,"Language"],[4,"WordCount"],[3,"Mnemonic"],[13,"BadWordCount"],[13,"UnknownWord"],[13,"BadEntropyBitCount"],[13,"AmbiguousLanguages"],[8,"PsbtUtils"],[4,"AddressIndex"],[3,"Wallet"],[3,"AddressInfo"],[3,"SyncOptions"],[8,"IsDust"],[13,"Peek"],[13,"Reset"],[4,"AddressValidatorError"],[8,"AddressValidator"],[13,"Message"],[4,"Excess"],[3,"CoinSelectionResult"],[3,"LargestFirstCoinSelection"],[3,"OldestFirstCoinSelection"],[3,"BranchAndBoundCoinSelection"],[8,"CoinSelectionAlgorithm"],[13,"Change"],[13,"NoChange"],[3,"FullyNodedExport"],[3,"HWISigner"],[3,"SignerOrdering"],[4,"TapLeavesOptions"],[4,"SignerId"],[4,"SignerError"],[4,"SignerContext"],[3,"SignersContainer"],[3,"SignOptions"],[3,"SignerWrapper"],[8,"SignerCommon"],[8,"InputSigner"],[8,"TransactionSigner"],[13,"Tap"],[13,"SighashError"],[13,"HWIError"],[13,"PkHash"],[13,"Fingerprint"],[13,"Dummy"],[13,"Include"],[13,"Exclude"],[4,"TxOrdering"],[4,"ChangeSpendPolicy"],[3,"TxBuilder"],[3,"CreateTx"],[3,"BumpFee"],[4,"VerifyError"],[13,"MissingInputTx"],[13,"InvalidInput"],[13,"Consensus"],[13,"Global"]]}\ +"bdk":{"doc":"A modern, lightweight, descriptor-based wallet library …","t":[3,13,3,13,13,13,13,6,13,13,13,4,13,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,4,13,3,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,13,13,4,8,13,3,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,12,12,0,11,11,11,11,11,11,11,11,11,12,11,0,12,12,12,11,11,11,11,11,11,11,12,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,12,11,12,11,11,11,11,11,11,11,11,11,12,12,10,5,11,11,11,11,11,11,11,11,11,0,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,8,8,4,16,8,3,13,13,8,8,8,16,3,3,8,6,8,8,0,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,0,11,0,10,11,11,11,11,11,11,10,10,10,11,10,10,11,11,11,11,11,11,11,5,5,5,0,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,10,11,4,4,13,13,13,13,13,13,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,12,12,12,12,12,12,12,12,13,3,13,3,3,4,13,13,13,13,13,13,13,13,3,13,13,13,3,13,13,13,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,11,11,11,11,11,11,11,12,11,11,11,13,3,3,4,13,13,13,13,13,13,13,13,13,13,12,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,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,4,13,13,3,3,3,3,13,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,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,12,12,11,12,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,12,12,11,11,11,11,11,12,12,11,12,12,12,16,8,8,16,8,8,3,3,0,10,11,12,11,11,11,11,10,11,11,11,10,11,12,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,10,11,10,11,10,11,10,11,0,11,12,11,10,11,10,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,4,4,4,13,13,13,13,13,13,3,13,13,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,6,4,4,3,6,8,13,6,8,16,6,4,3,13,13,8,4,13,13,6,13,13,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,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,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,10,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,10,11,11,0,11,11,11,11,11,11,11,11,11,11,11,10,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,12,12,12,12,12,12,12,12,5,5,13,13,4,13,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,4,13,3,6,13,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,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,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,3,8,6,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,8,4,4,4,16,16,8,4,13,8,8,3,8,13,13,13,16,4,6,13,13,13,16,13,3,13,8,4,13,13,13,3,3,4,3,13,6,13,13,13,5,10,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,5,11,10,11,11,5,10,11,11,11,11,11,12,12,11,11,11,11,11,11,10,12,11,11,11,10,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,4,13,4,3,6,13,4,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,8,10,10,10,4,3,8,13,13,13,13,3,3,11,12,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,0,12,11,11,11,11,11,11,11,11,10,11,12,11,11,11,11,11,11,11,12,11,11,11,0,11,0,11,11,11,11,11,11,11,11,11,0,11,11,11,11,0,11,11,11,11,5,12,12,3,13,8,3,6,4,3,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,5,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,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,12,12,3,6,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,13,13,13,13,13,13,13,8,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,11,11,11,11,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,12,10,11,11,10,11,12,11,12,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,12,12,12,12,12,12,12,12,5,13,3,13,13,4,3,13,13,3,8,4,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,13,4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,12,12,12,12],"n":["Balance","Bip32","BlockTime","BnBNoExactMatch","BnBTotalTriesExceeded","ChecksumMismatch","CompactFilters","ConfirmationTime","Descriptor","Electrum","Encode","Error","Esplora","External","FeeRate","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","Foreign","Generic","Hex","InsufficientFunds","Internal","InvalidNetwork","InvalidOutpoint","InvalidPolicyPathError","InvalidProgressValue","InvalidU32Bytes","IrreplaceableTransaction","Json","Key","KeychainKind","Local","LocalUtxo","Miniscript","MiniscriptPsbt","MissingCachedScripts","MissingKeyOrigin","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","ProgressUpdateError","Psbt","PsbtParse","Rpc","Rusqlite","ScriptDoesntHaveAddressForm","Secp256k1","Signer","Sled","SpendingPolicyRequired","TransactionConfirmed","TransactionDetails","TransactionNotFound","UnknownUtxo","Utxo","Vbytes","Verification","WeightedUtxo","add","as_byte","as_ref","as_sat_per_vb","base32_len","blockchain","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","check_base32","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","confirmation_time","confirmed","database","default","default","default","default_min_relay_fee","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor","descriptor","deserialize","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","eq","eq","fee","fee_vb","fee_wu","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fragment","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_btc_per_kvb","from_sat_per_kvb","from_sat_per_kwu","from_sat_per_vb","from_vb","from_wu","get_hash","get_hash","get_spendable","get_total","hash","hash","height","immature","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into_descriptor_key","into_extended_key","into_wallet_descriptor","into_wallet_descriptor","is_spent","keychain","keys","ne","ne","ne","ne","ne","ne","ne","new","outpoint","outpoint","partial_cmp","psbt","received","satisfaction_weight","sent","serialize","serialize","serialize","serialize","serialize","sub","sum","timestamp","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","transaction","trusted_pending","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","txid","txout","txout","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","untrusted_pending","utxo","vbytes","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet","write_base32","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","available","found","needed","requested","required","required","0","outpoint","psbt_input","AccurateFees","Blockchain","BlockchainFactory","Capability","Config","ConfigurableBlockchain","EsploraBlockchain","FullHistory","GetAnyTx","GetBlockHash","GetHeight","GetTx","Inner","LogProgress","NoopProgress","Progress","ProgressData","StatelessBlockchain","WalletSync","any","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","build","build_for_wallet","clone","clone","clone","clone_into","clone_into","clone_into","compact_filters","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","electrum","eq","esplora","estimate_fee","fmt","fmt","fmt","from","from","from","from_config","get_block_hash","get_capabilities","get_hash","get_height","get_tx","hash","init","init","init","into","into","into","log_progress","noop_progress","progress","rpc","sync_wallet","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update","update","update","vzip","vzip","vzip","wallet_setup","wallet_sync","AnyBlockchain","AnyBlockchainConfig","CompactFilters","CompactFilters","Electrum","Electrum","Esplora","Esplora","Rpc","Rpc","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from","from","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","into","into","ne","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","wallet_setup","wallet_sync","0","0","0","0","0","0","0","0","Bip158","BitcoinPeerConfig","BlockHashNotFound","CompactFiltersBlockchain","CompactFiltersBlockchainConfig","CompactFiltersError","DataCorruption","Db","Global","InvalidFilter","InvalidFilterHeader","InvalidHeaders","InvalidResponse","Io","Mempool","MissingBlock","NoPeers","NotConnected","Peer","PeerBloomDisabled","Time","Timeout","add_tx","address","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone","clone_into","clone_into","connect","connect_proxy","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","drop","drop","eq","eq","estimate_fee","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_mempool","get_network","get_tx","get_tx","get_version","has_tx","init","init","init","init","init","init","into","into","into","into","into","into","is_connected","iter_txs","ne","ne","network","new","new","peers","recv","send","serialize","serialize","skip_blocks","socks5","socks5_credentials","storage_dir","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","wallet_setup","0","0","0","0","0","ElectrumBlockchain","ElectrumBlockchainConfig","borrow","borrow","borrow_mut","borrow_mut","broadcast","clone","clone_into","deref","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","eq","estimate_fee","fmt","from","from","from","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","into","into","ne","retry","serialize","socks5","stop_gap","timeout","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","url","vzip","vzip","wallet_setup","BitcoinEncoding","EsploraBlockchain","EsploraBlockchainConfig","EsploraError","HeaderHashNotFound","HeaderHeightNotFound","Hex","HttpResponse","Io","NoHeader","Parsing","TransactionNotFound","Ureq","UreqTransport","base_url","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","broadcast","clone","clone_into","concurrency","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","eq","estimate_fee","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_client","from_config","get_block_hash","get_capabilities","get_height","get_tx","init","init","init","into","into","into","ne","new","new","proxy","serialize","stop_gap","timeout","to_owned","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","wallet_setup","with_concurrency","0","0","0","0","0","0","0","0","0","0","Auth","Cookie","None","RpcBlockchain","RpcBlockchainFactory","RpcConfig","RpcSyncParams","UserPass","auth","auth","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast","build","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","default","default_skip_blocks","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","eq","eq","eq","estimate_fee","fmt","fmt","fmt","fmt","fmt","force_start_time","from","from","from","from","from","from_config","get_block_hash","get_capabilities","get_hash","get_height","get_tx","hash","init","init","init","init","init","into","into","into","into","into","ne","ne","ne","network","network","partial_cmp","poll_rate_sec","serialize","serialize","serialize","start_script_count","start_time","sync_params","sync_params","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","url","url","vzip","vzip","vzip","vzip","vzip","wallet_name","wallet_name_prefix","wallet_setup","file","password","username","Batch","BatchDatabase","BatchOperations","Config","ConfigurableDatabase","Database","SqliteDatabase","SyncTime","any","begin_batch","begin_batch","block_time","borrow","borrow","borrow_mut","borrow_mut","check_descriptor_checksum","check_descriptor_checksum","clone","clone_into","commit_batch","commit_batch","connection","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref_mut","deref_mut","deserialize","drop","drop","fmt","fmt","from","from","from_config","from_config","get_last_index","get_last_index","get_path_from_script_pubkey","get_path_from_script_pubkey","get_raw_tx","get_raw_tx","get_script_pubkey_from_path","get_script_pubkey_from_path","get_sync_time","get_sync_time","get_tx","get_tx","get_utxo","get_utxo","increment_last_index","increment_last_index","init","init","into","into","iter_raw_txs","iter_raw_txs","iter_script_pubkeys","iter_script_pubkeys","iter_txs","iter_txs","iter_utxos","iter_utxos","memory","new","path","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","AnyBatch","AnyDatabase","AnyDatabaseConfig","Memory","Memory","Memory","Sled","Sled","Sled","SledDbConfiguration","Sqlite","Sqlite","Sqlite","SqliteDbConfiguration","begin_batch","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_descriptor_checksum","commit_batch","del_last_index","del_last_index","del_path_from_script_pubkey","del_path_from_script_pubkey","del_raw_tx","del_raw_tx","del_script_pubkey_from_path","del_script_pubkey_from_path","del_sync_time","del_sync_time","del_tx","del_tx","del_utxo","del_utxo","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","init","init","init","init","into","into","into","into","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","path","path","serialize","serialize","serialize","set_last_index","set_last_index","set_raw_tx","set_raw_tx","set_script_pubkey","set_script_pubkey","set_sync_time","set_sync_time","set_tx","set_tx","set_utxo","set_utxo","tree_name","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","0","0","MemoryDatabase","begin_batch","borrow","borrow_mut","check_descriptor_checksum","commit_batch","default","del_last_index","del_path_from_script_pubkey","del_raw_tx","del_script_pubkey_from_path","del_sync_time","del_tx","del_utxo","deref","deref_mut","drop","fmt","from","from_config","get_last_index","get_path_from_script_pubkey","get_raw_tx","get_script_pubkey_from_path","get_sync_time","get_tx","get_utxo","increment_last_index","init","into","iter_raw_txs","iter_script_pubkeys","iter_txs","iter_utxos","new","set_last_index","set_raw_tx","set_script_pubkey","set_sync_time","set_tx","set_utxo","try_from","try_into","type_id","vzip","Bare","DerivedDescriptor","Descriptor","DescriptorPublicKey","DescriptorXKey","ExtendedDescriptor","ExtractPolicy","Hardened","HdKeyPaths","IntoWalletDescriptor","Key","KeyMap","Legacy","Miniscript","None","Pkh","ScriptContext","Segwitv0","Sh","Single","TapKeyOrigins","Tr","Unhardened","Wildcard","Wpkh","Wsh","XPub","address","as_enum","as_enum","as_inner","at_derivation_index","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","check_global_consensus_validity","check_global_consensus_validity","check_global_consensus_validity","check_global_policy_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_policy_validity","check_local_policy_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","contains_raw_pkh","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derivation_path","derive","derived_descriptor","derived_descriptor","desc_type","deserialize","deserialize","drop","drop","drop","drop","drop","drop","encode","eq","eq","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","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from_ast","from_str","from_str","from_str_ext","from_str_insane","from_tree","from_tree","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_nth_child","get_nth_pk","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","has_wildcard","hash","hash","hash","hash","hash","hash","init","init","init","init","init","init","into","into","into","into","into","into","into_inner","into_wallet_descriptor","is_deriveable","is_non_malleable","iter","iter_pk","lift","lift","lift_check","matches","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","name_str","name_str","name_str","ne","ne","new_bare","new_pk","new_pkh","new_sh","new_sh_sortedmulti","new_sh_with_wpkh","new_sh_with_wsh","new_sh_wpkh","new_sh_wsh","new_sh_wsh_sortedmulti","new_tr","new_wpkh","new_wsh","new_wsh_sortedmulti","node","origin","other_top_level_checks","parse","parse_descriptor","parse_insane","parse_with_ext","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","template","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string_with_secret","top_level_checks","top_level_type_check","translate_pk","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","vzip","vzip","wildcard","within_resource_limits","xkey","0","0","0","0","0","0","0","0","get_checksum","get_checksum_bytes","Base58","Bip32","Error","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","Pk","Policy","borrow","borrow_mut","deref","deref_mut","drop","fmt","fmt","from","from","from","from","from","from","from","from","init","into","to_string","try_from","try_into","type_id","vzip","0","0","0","0","0","0","0","0","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","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","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","get_hash","get_hash","hash","hash","id","id","init","init","init","init","init","init","init","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","ne","ne","ne","ne","ne","ne","partial_cmp","requires_path","satisfaction","serialize","serialize","serialize","serialize","serialize","timelock","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","current_height","input_max_height","psbt","0","0","0","0","0","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","0","0","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","0","0","0","0","0","0","0","0","0","1","1","1","1","1","1","2","2","2","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2Wpkh","P2Wpkh_P2Sh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","build","build","build","build","build","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","from","from","from","from","from","from","from","from","from","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","Single","Single","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","at_derivation_index","bip39","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","derive","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","encode","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","generate","generate_default","generate_with_entropy","generate_with_entropy_default","get_hash","get_hash","get_hash","get_hash","has_secret","has_wildcard","hash","hash","hash","hash","init","init","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","into","into","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","name_str","ne","ne","ne","ne","new","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","sanity_check","satisfy","script_size","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_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","0","0","0","0","0","0","0","0","0","0","0","AmbiguousLanguages","BadEntropyBitCount","BadWordCount","English","Error","InvalidChecksum","Language","Mnemonic","MnemonicWithPassphrase","UnknownWord","WordCount","Words12","Words15","Words18","Words21","Words24","all","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","drop","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_entropy","from_entropy_in","from_str","generate_in_with","generate_with_entropy","get_hash","get_hash","hash","hash","init","init","init","init","into","into","into","into","into_descriptor_key","into_extended_key","language","language_of","ne","ne","parse","parse_in","parse_in_normalized","parse_normalized","partial_cmp","partial_cmp","serialize","to_entropy","to_entropy_array","to_owned","to_owned","to_owned","to_seed","to_seed_normalized","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","word_count","word_iter","words_by_prefix","0","0","0","0","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressIndex","AddressInfo","IsDust","LastUnused","New","Peek","Reset","SyncOptions","Wallet","add_signer","address","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","coin_selection","database","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_checksum","drop","drop","drop","drop","ensure_addresses_cached","eq","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","get_address","get_balance","get_descriptor_for_keychain","get_funded_wallet","get_internal_address","get_psbt_input","get_signers","get_tx","get_utxo","hardwaresigner","index","init","init","init","init","into","into","into","into","is_dust","is_mine","keychain","list_transactions","list_unspent","ne","network","new","new_offline","policies","progress","public_descriptor","secp_ctx","sign","signer","sync","time","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","tx_builder","type_id","type_id","type_id","type_id","verify","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","0","0","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Excess","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","init","init","init","init","init","into","into","into","into","into","local_selected_amount","new","selected","selected_amount","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","amount","change_fee","dust_threshold","fee","remaining_amount","FullyNodedExport","WalletExport","blockheight","borrow","borrow_mut","change_descriptor","deref","deref_mut","descriptor","deserialize","drop","export_wallet","fmt","from","from_str","init","into","label","serialize","to_string","try_from","try_into","type_id","vzip","HWISigner","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","from_device","id","init","into","sign_transaction","try_from","try_into","type_id","vzip","0","All","Dummy","Exclude","Fingerprint","HWIError","Include","InputIndexOutOfRange","InputSigner","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","Legacy","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","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","drop","drop","drop","drop","drop","drop","drop","drop","eq","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","from","get_hash","hash","id","id","id","ids","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","ne","ne","ne","ne","ne","new","new","partial_cmp","partial_cmp","remove","remove_partial_sigs","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_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","0","0","0","0","0","0","0","get_timestamp","Bip69Lexicographic","BumpFee","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","CreateTx","OnlyChange","Shuffle","TxBuilder","TxBuilderContext","TxOrdering","Untouched","add_data","add_foreign_utxo","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_dust","allow_shrinking","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_policy","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","coin_selection","current_height","default","default","default","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","do_not_spend_change","drain_to","drain_wallet","drop","drop","drop","drop","drop","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_hash","get_hash","hash","hash","include_output_redeem_witness_script","init","init","init","init","init","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unspendable","version","vzip","vzip","vzip","vzip","vzip","Consensus","Global","InvalidInput","MissingInputTx","VerifyError","borrow","borrow_mut","deref","deref_mut","drop","fmt","fmt","from","from","from","init","into","to_string","try_from","try_into","type_id","verify_tx","vzip","0","0","0","0"],"q":["bdk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::Utxo","","","bdk::blockchain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::any::AnyBlockchain","","","","bdk::blockchain::any::AnyBlockchainConfig","","","","bdk::blockchain::compact_filters","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::compact_filters::CompactFiltersError","","","","","bdk::blockchain::electrum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::esplora::EsploraError","","","","","","","","","","bdk::blockchain::rpc","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::blockchain::rpc::Auth","","","bdk::database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::database::any::AnyBatch","","","bdk::database::any::AnyDatabase","","","bdk::database::any::AnyDatabaseConfig","","","bdk::database::memory","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::Descriptor","","","","","","bdk::descriptor::DescriptorPublicKey","","bdk::descriptor::checksum","","bdk::descriptor::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::error::Error","","","","","","","","bdk::descriptor::policy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::descriptor::policy::BuildSatisfaction","","","","bdk::descriptor::policy::PkOrF","","","bdk::descriptor::policy::PolicyError","","bdk::descriptor::policy::Satisfaction","","","","","","","","","","","bdk::descriptor::policy::SatisfiableItem","","","","","","","","","","","","bdk::descriptor::template","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::DescriptorPublicKey","","bdk::keys::DescriptorSecretKey","","bdk::keys::ExtendedKey","","bdk::keys::KeyError","","","bdk::keys::SinglePubKey","","bdk::keys::bip39","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::keys::bip39::Error","","","","bdk::psbt","","","","bdk::wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::AddressIndex","","bdk::wallet::coin_selection","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::coin_selection::Excess","","","","","bdk::wallet::export","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::hardwaresigner","","","","","","","","","","","","","","","","","bdk::wallet::signer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::signer::SignerContext","bdk::wallet::signer::SignerError","","bdk::wallet::signer::SignerId","","","bdk::wallet::signer::TapLeavesOptions","","bdk::wallet::time","bdk::wallet::tx_builder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::verify","","","","","","","","","","","","","","","","","","","","","","","bdk::wallet::verify::VerifyError","","",""],"d":["Balance differentiated in various categories","BIP32 error","Block height and timestamp of a block","Branch and bound coin selection tries to avoid needing a …","Branch and bound coin selection possible attempts with …","Descriptor checksum mismatch","Compact filters client error)","DEPRECATED: Confirmation time of a transaction","Error related to the parsing and usage of descriptors","Electrum client error","Encoding error","Errors that can be thrown by the Wallet","Esplora client error","External","Fee rate","When bumping a tx the fee rate requested is lower than …","Node doesn’t have data to estimate a fee rate","When bumping a tx the absolute fee requested is lower than …","A UTXO owned by another wallet.","Generic error","Hex decoding error","Wallet’s UTXO set is not enough to cover recipient’s …","Internal, usually used for change outputs","Invalid network","Requested outpoint doesn’t exist in the tx (vout greater …","Error while extracting and manipulating policies","Progress value must be between 0.0 (included) and 100.0 …","Wrong number of bytes found when trying to convert to u32","Trying to replace a tx that has a sequence >= 0xFFFFFFFE","Error serializing or deserializing JSON data","Error while working with keys","Types of keychains","A UTXO owned by the local wallet.","An unspent output owned by a Wallet.","Miniscript error","Miniscript PSBT error","crate::blockchain::WalletSync sync attempt failed due to …","In order to use the TxBuilder::add_global_xpubs option …","Cannot build a tx without recipients","manually_selected_only option is selected but no utxo has …","Output created is under the dust limit, 546 satoshis","Progress update error (maybe the channel has been closed)","Partially signed bitcoin transaction error","Partially signed bitcoin transaction parse error","Rpc client error","Rusqlite client error","This error is thrown when trying to convert Bare and …","An ECDSA error","Signing error","Sled database error","Spending policy is not compatible with this KeychainKind","Happens when trying to bump a transaction that is already …","A wallet transaction","Thrown when a tx is not found in the internal database","Happens when trying to spend an UTXO that is not in the …","An unspent transaction output (UTXO).","Trait implemented by types that can be used to measure …","Transaction verification error","A Utxo with its satisfaction_weight.","","Return KeychainKind as a byte","","Return the value as satoshi/vbyte","","Blockchain backends","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If the transaction is confirmed, contains height and …","Confirmed and immediately spendable balance","Database types","","","","Create a new FeeRate with the default min relay fee value","","","","","","","","","","","","","","","","","","","Descriptors","Macro to write full descriptors with code","","","","","","","","","","","","","","","","","","","","","","","Fee value (sats) if confirmed. The availability of the fee …","Calculate absolute fee in Satoshis using size in virtual …","Calculate absolute fee in Satoshis using size in weight …","","","","","","","","","","","","Macro to write descriptor fragments with code","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new instance of FeeRate given a float fee rate in …","Create a new instance of FeeRate given a float fee rate in …","Create a new instance of FeeRate given a float fee rate in …","Create a new instance of FeeRate given a float fee rate in …","Calculate fee rate from fee and vbytes.","Calculate fee rate from fee and weight units (wu).","","","Get sum of trusted_pending and confirmed coins","Get the whole balance visible to the wallet","","","confirmation block height","All coinbase outputs not yet matured","","","","","","","","","","","","","","","","","","","","","","","Whether this UTXO is spent or not","Type of keychain","Key formats","","","","","","","","Returns Some BlockTime if both height and timestamp are …","Get the location of the UTXO","Reference to a transaction output","","Additional functions on the rust-bitcoin …","Received value (sats) Sum of owned outputs of this …","The weight of the witness data and scriptSig expressed in …","Sent value (sats) Sum of owned inputs of this transaction.","","","","","","","","confirmation block timestamp","","","","","","","","","","","Optional transaction","Unconfirmed UTXOs generated by a wallet tx","","","","","","","","","","","","","","","","","","","Transaction id","Get the TxOut of the UTXO","Transaction output","","","","","","","","","","Unconfirmed UTXOs received from an external wallet","The UTXO","Convert weight units to virtual bytes.","Get the version of BDK at runtime","","","","","","","","","","Wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Sats available for spending","found network, for example the network of the bitcoin node","Sats needed for some transaction","requested network, for example what is given as bdk-cli …","Required fee rate (satoshi/vbyte)","Required fee absolute value (satoshi)","","The location of the output.","The information about the input we require to add it to a …","Can compute accurate fees for the transactions found …","Trait that defines the actions that must be supported by a …","Trait for a factory of blockchains that share the …","Capabilities that can be supported by a Blockchain backend","Type that contains the configuration","Trait for Blockchain types that can be created given a …","Structure that implements the logic to sync with Esplora","Can recover the full history of a wallet and not only the …","Can fetch any historical transaction given its txid","Trait for getting block hash by block height","Trait for getting the current height of the blockchain.","Trait for getting a transaction by txid","The type returned when building a blockchain from this …","Type that implements Progress and logs at level INFO every …","Type that implements Progress and drops every update …","Trait for types that can receive and process progress …","Data sent with a progress update over a channel","Trait for blockchains that don’t contain any state","Trait for blockchains that can sync by updating the …","Runtime-checked blockchain types","","","","","","","Broadcast a transaction","Build a new blockchain for the given descriptor wallet_name","Build a new blockchain for a given wallet","","","","","","","Compact Filters","","","","","","","","","","","","Electrum","","Esplora","Estimate the fee rate required to confirm a transaction in …","","","","","","","Create a new instance given a configuration","fetch block hash given its height","Return the set of Capability supported by this backend","","Return the current height","Fetch a transaction given its txid","","","","","","","","Create a new instance of LogProgress","Create a new instance of NoopProgress","Shortcut to create a channel (pair of Sender and Receiver) …","Rpc Blockchain","Use BlockchainFactory::build_for_wallet to get a …","","","","","","","","","","","","","Send a new progress update","","","","","","Setup the backend and populate the internal database for …","If not overridden, it defaults to calling …","Type that can contain any of the Blockchain types defined …","Type that can contain any of the blockchain configurations …","Compact filters client","Compact filters client","Electrum client","Electrum client","Esplora client","Esplora client","RPC client","RPC client configuration","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Invalid BIP158 filter","Data to connect to a Bitcoin P2P peer","Block hash at specified height not found","Structure implementing the required blockchain traits","Configuration for a CompactFiltersBlockchain","An error that can occur during sync with a …","The data stored in the block filters storage are corrupted","Internal database error","Wrapper for crate::error::Error","The compact filter returned is invalid","The compact filter headers returned are invalid","The headers returned are invalid","A peer sent an invalid or unexpected response","Internal I/O error","Container for unconfirmed, but valid Bitcoin transactions","The peer is missing a block in the valid chain","No peers have been specified","A peer is not connected","A Bitcoin peer","The peer doesn’t advertise the BLOOM service flag","Internal system time error","A peer took too long to reply to one of our messages","Add a transaction to the mempool","Peer address such as 127.0.0.1:18333","","","","","","","","","","","","","","","","","","Connect to a peer over a plaintext TCP connection","Connect to a peer through a SOCKS5 proxy, optionally by …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the mempool used by this peer","Return the Bitcoin Network in use","Look-up a transaction in the mempool given an Inventory …","","Return the VersionMessage sent by the peer","Return whether or not the mempool contains a transaction …","","","","","","","","","","","","","Return whether or not the peer is still connected","Return the list of transactions contained in the mempool","","","Network used","Create a new empty mempool","Construct a new instance given a list of peers, a path to …","List of peers to try to connect to for asking headers and …","Waits for a specific incoming Bitcoin message, optionally …","Send a raw Bitcoin message to the peer","","","Optionally skip initial skip_blocks blocks (default: 0)","Optional socks5 proxy","Optional socks5 proxy credentials","Storage dir to save partially downloaded headers and full …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrapper over an Electrum Client that implements the …","Configuration for an ElectrumBlockchain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Request retry count","","URL of the socks5 proxy server or a Tor service","Stop searching addresses for transactions after finding an …","Request timeout (seconds)","","","","","","","","URL of the Electrum server (such as ElectrumX, Esplora, …","","","","Invalid Bitcoin data returned","Structure that implements the logic to sync with Esplora","Configuration for an EsploraBlockchain","Errors that can happen during a sync with Esplora","Header hash not found","Header height not found","Invalid Hex data returned","HTTP response error","IO error during ureq response read","No header found in ureq response","Invalid number returned","Transaction not found","Error during ureq HTTP request","Transport error during the ureq HTTP call","Base URL of the esplora service","","","","","","","","","","Number of parallel requests sent to the esplora service …","","","","","","","","","","","","","","","","","","","","","","","","","","","Build a new instance given a client","","","","","","","","","","","","","Create a new instance of the client from a base URL and …","create a config with default values given the base url and …","Optional URL of the proxy to use to make requests to the …","","Stop searching addresses for transactions after finding an …","Socket timeout.","","","","","","","","","","","","","","","","Set the number of parallel requests the client can make.","","","","","","","","","","","This struct is equivalent to bitcoincore_rpc::Auth but it …","Authentication with a cookie file","None authentication","The main struct for RPC backend implementing the …","Factory of RpcBlockchain instances, implements …","RpcBlockchain configuration options","Sync parameters for Bitcoin Core RPC.","Authentication with username and password, usually …","The bitcoin node authentication mechanism","The bitcoin node authentication mechanism","","","","","","","","","","","","","","","","","","","","","","","Default number of blocks to skip which will be inherited …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Forces every sync to use start_time as import timestamp.","","","","","","Returns RpcBlockchain backend creating an RPC client to a …","","","","","","","","","","","","","","","","","","","","The network we are using (it will be checked the bitcoin …","The network we are using (it will be checked the bitcoin …","","RPC poll rate (in seconds) to get state updates.","","","","The minimum number of scripts to scan for on initial sync.","Time in unix seconds in which initial sync will start …","Sync parameters","Sync parameters","","","","","","","","","","","","","","","","","","","","The bitcoin node url","The bitcoin node url","","","","","","The wallet name in the bitcoin node, consider using …","The optional prefix used to build the full wallet name for …","","Cookie file","Password","Username","Container for the operations","Trait for a database that supports batch operations","Trait for operations that can be batched","Type that contains the configuration","Trait for Database types that can be created given a …","Trait for reading data from a database","Sqlite database stored on filesystem","Blockchain state at the time of syncing","Runtime-checked database types","Create a new batch container","","Block timestamp and height at the time of sync","","","","","Read and checks the descriptor checksum for a given …","","","","Consume and apply a batch of operations","","A rusqlite connection object to the sqlite database","Delete the last derivation index for a keychain.","","Delete the data related to a specific script_pubkey, …","","Delete a raw transaction given its Txid","","Delete a script_pubkey given the keychain and its child …","","Reset the sync time to None","","Delete the metadata of a transaction and optionally the …","","Delete a LocalUtxo given its OutPoint","","","","","","","","","","","","","Create a new instance given a configuration","","Return the last derivation index for a keychain.","","Fetch the keychain and child number of a given …","","Fetch a raw transaction given its Txid","","Fetch a script_pubkey given the child number of a keychain.","","Return the sync time, if present","","Fetch the transaction metadata and optionally also the raw …","","Fetch a LocalUtxo given its OutPoint","","Increment the last derivation index for a keychain and …","","","","","","Return the list of raw transactions","","Return the list of script_pubkeys","","Return the list of transactions metadata","","Return the list of LocalUtxos","","In-memory ephemeral database","Instantiate a new SqliteDatabase instance by creating a …","Path on the local filesystem to store the sqlite file","","Store the last derivation index for a given keychain.","","Store a raw transaction","","Store a script_pubkey along with its keychain and child …","","Store the sync time","","Store the metadata of a transaction","","Store a LocalUtxo","","","","","","","","","","","Type that contains any of the BatchDatabase::Batch types …","Type that can contain any of the Database types defined by …","Type that can contain any of the database configurations …","In-memory ephemeral database","In-memory ephemeral database","Memory database has no config","Simple key-value embedded database based on sled","Simple key-value embedded database based on sled","Simple key-value embedded database based on sled","Configuration type for a sled::Tree database","Sqlite embedded database using rusqlite","Sqlite embedded database using rusqlite","Sqlite embedded database using rusqlite","Configuration type for a sqlite::SqliteDatabase database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Main directory of the db","Main directory of the db","","","","","","","","","","","","","","","","Name of the database tree, a separated namespace for the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","In-memory ephemeral database","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new empty database","","","","","","","","","","","A raw scriptpubkey (including pay-to-pubkey) under Legacy …","Alias for a Descriptor that contains extended derived keys","Script descriptor","The descriptor pubkey, either a single pubkey or an xpub.","An extended key with origin, derivation path, and wildcard.","Alias for a Descriptor that can contain extended keys …","Trait implemented on Descriptors to add a method to …","Unhardened wildcard, e.g. *h","Alias for the type of maps that represent derivation paths …","Trait for types which can be converted into an …","The consensus key associated with the type. Must be a …","Alias type for a map of public key to secret key","Legacy ScriptContext To be used as P2SH scripts For …","Top-level script AST type","No wildcard","Pay-to-PubKey-Hash","The ScriptContext for Miniscript. Additional type …","Segwitv0 ScriptContext","Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)","Single public key.","Alias for the type of maps that represent taproot key …","Pay-to-Taproot","Unhardened wildcard, e.g. *","Whether a descriptor has a wildcard in it","Pay-to-Witness-PubKey-Hash","Pay-to-Witness-ScriptHash with Segwitv0 context","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) …","Depending on script Context, some of the Terminals might …","","","Depending on script Context, some of the script resource …","","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","","","Policy rules at the Miniscript satisfaction time. It is …","","","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","","","Check whether the given satisfaction is valid under the …","","","Descriptor checksum","","","","","","","","","","","","","","","","","","","Whether the given miniscript contains a raw pkh fragment","","","","","","","","","","","","","The derivation path","Deprecated name for [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 …","","","","","","","","","","","","","","","","","","","","","","","Add type information(Type and Extdata) to Miniscript based …","","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. /*.","","","","","","","","","","","","","","","","","","","Extracts the AstElem representing the root of the …","Convert to wallet descriptor","Whether or not the descriptor has any wildcards","Whether the miniscript is malleable","Creates a new Iter iterator that will iterate over all …","Creates a new PkIter iterator that will iterate over all …","","","Lifting corresponds conversion of miniscript into Policy […","Compares this key with a keysource and returns the …","Depending on script context, the size of a satifaction …","","","Maximum size, in bytes, of a satisfying witness. For …","Computes an upper bound on the weight of a satisfying …","Maximum number of witness elements used to satisfy the …","Local helper function to display error messages with …","","","","","Create a new bare descriptor from witness script Errors …","Create a new pk descriptor","Create a new PkH descriptor","Create a new sh for a given redeem script Errors when …","Create a new sh sortedmulti descriptor with threshold k …","Create a new sh wrapper for the given wpkh descriptor","Create a new sh wrapper for the given wsh descriptor","Create a new sh wrapped wpkh from Pk. Errors when …","Create a new sh wrapped wsh descriptor with witness script …","Create a new sh wrapped wsh sortedmulti descriptor from …","Create new tr descriptor Errors when miniscript exceeds …","Create a new Wpkh descriptor Will return Err if …","Create a new wsh descriptor from witness script Errors …","Create a new wsh sorted multi descriptor Errors when …","A node in the Abstract Syntax Tree(","Origin information","Other top level checks that are context specific","Attempt to parse a Script into Miniscript representation.","Parse a descriptor that may contain secret keys","Attempt to parse an insane(scripts don’t clear sanity …","Attempt to parse an miniscript with extra features that …","","","","","","","Get the len of public key when serialized based on context …","","","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","","","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 descriptor is wildcard","Whether the miniscript can exceed the resource …","The extended key","","","","","","","","","Compute the checksum of a descriptor","Computes the checksum bytes of a descriptor","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","Key-related error","Error while extracting and manipulating policies","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Absolute timeclock timestamp","Can not add to an item that is Satisfaction::None or …","Can not add to an item that is …","Options to build the satisfaction field in the policy","Can satisfy the policy item","An extra condition that must be satisfied but that is out …","Type for a map of sets of Condition items keyed by each set…","ECDSA Signature for a raw public key","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","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the conditions that are set by the spending policy …","","","","","Returns a unique id for the SatisfiableItem","Identifier for this policy node","","","","","","","","","","","","","","","Returns whether the SatisfiableItem is a leaf item","Returns whether the Satisfaction is a leaf item","Returns true if there are no extra conditions to verify","Type of this policy node","","","","","","","","Return whether or not a specific path in the policy tree …","How much a given PSBT already satisfies this policy node …","","","","","","Optional timelock condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Current blockchain height","The highest confirmation height between the inputs CSV …","Given PSBT","","","","","","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","The items that can be satisfied by the descriptor or are …","The items that can be satisfied by the descriptor","Threshold","Threshold","Total number of items","Total number of items","Whether the items are sorted in lexicographic order (used …","Whether the items are sorted in lexicographic order (used …","","","The digest value","The digest value","The digest value","The digest value","The policy items","The raw public key or extended key fingerprint","The required threshold count","The required threshold count","The 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}/*)","Trait for descriptor templates that can be built into a …","Type alias for the return type of DescriptorTemplate, …","P2PKH template. Expands to a descriptor pkh(key)","P2WPKH template. Expands to a descriptor wpkh(key)","P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))","","","","","","","","","","","","","","","","","","","Build the complete descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BIP32 error","Trait for keys that can be derived.","Container for public or secret keys","The 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","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 and regtest","Returns the ScriptContext as a ScriptContextEnum","Replaces any wildcard (i.e. /*) in the key with a …","BIP-0039","","","","","","","","","","","","","","","","","","","","","","","","","Depending on script Context, some of the Terminals might …","Depending on script Context, some of the script resource …","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","Policy rules at the Miniscript satisfaction time. It is …","Check the consensus + policy(if not disabled) rules …","Depending on ScriptContext, fragments can be malleable. …","Check whether the given satisfaction is valid under the …","","","","","","","","","","","","","","","","","","","Whether the generated key should be “compressed” or not","","","","","","","","","","","","","","","","","","","","","","","","","","","Deprecated name of [at_derivation_index].","","","","","","","","","","","","","Encode as a Bitcoin script","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create an instance given a public key and a set of valid …","Create an instance given a secret key and a set of valid …","","","Parse an expression tree into a SortedMultiVec","Full path, from the master key","Generate a key given the options with a random entropy","Generate a key with the default options and a random …","Generate a key given the extra options and the entropy","Generate a key with the default options and a given entropy","","","","","Return whether or not the key contains the private data","Whether or not the key has a wildcard","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Turn the key into a DescriptorKey within the requested …","Consume self and turn it into a DescriptorKey by adding …","","","","","","Consume self and turn it into an ExtendedKey","","","Consumes self and returns the key","Transform the ExtendedKey into an ExtendedPrivKey for the …","Transform the ExtendedKey into an ExtendedPubKey for the …","Whether or not the key has a wildcard","Returns whether the script context is Legacy","Returns whether the script context is …","Returns whether the script context is Segwitv0","Returns whether the script context is …","Returns whether the script context is Tap, aka Taproot or …","Returns whether the script context is …","","","signatures required","The 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 …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The mnemonic can be interpreted as multiple languages. Use …","Entropy was not a multiple of 32 bits or between 128-256n …","Mnemonic has a word count that is not a multiple of 6.","The English language.","A BIP39 error.","The mnemonic has an invalid checksum.","Language to be used for the mnemonic phrase.","A mnemonic code.","Type for a BIP39 mnemonic with an optional passphrase","Mnemonic contains an unknown word. Error contains the …","Type describing entropy length (aka word count) in the …","12 words mnemonic (128 bits entropy)","15 words mnemonic (160 bits entropy)","18 words mnemonic (192 bits entropy)","21 words mnemonic (224 bits entropy)","24 words mnemonic (256 bits entropy)","The list of supported languages. Language support is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a new English Mnemonic from the given entropy. …","Create a new Mnemonic in the specified language from the …","","Generate a new Mnemonic in the given language with the …","","","","","","","","","","","","","","","","Get the language of the Mnemonic.","Determine the language of the mnemonic.","","","Parse a mnemonic and detect the language from the enabled …","Parse a mnemonic in the given language.","Parse a mnemonic in normalized UTF8 in the given language.","Parse a mnemonic in normalized UTF8.","","","","Convert the mnemonic back to the entropy used to generate …","Convert the mnemonic back to the entropy used to generate …","","","","Convert to seed bytes.","Convert to seed bytes with a passphrase in normalized UTF8.","","","","","","","","","","","","","","","","","","","","Get the number of words in the mnemonic.","Get an iterator over the words.","Get words from the word list that start with the given …","","","","","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’…","The address index selection strategy to use to derived an …","A derived address and the index it was found at For …","Trait to check if a value is below the dust limit. We are …","Return the address for the current descriptor index if it …","Return a new address after incrementing the current …","Return the address for a specific descriptor index. Does …","Return the address for a specific descriptor index and …","Options to a sync.","A Bitcoin wallet","Add an external signer","Address","","","","","","","","","Bump the fee of a transaction previously created with this …","Start building a transaction.","Coin selection","Return an immutable reference to the internal database","","","","","","","","","","","Return the checksum of the public descriptor associated to …","","","","","Ensures that there are at least max_addresses addresses …","","Wallet export","Finalize a PSBT, i.e., for each input determine if …","","","","","","","","","","Return a derived address using the external descriptor, …","Return the balance, separated into available, …","Returns the descriptor used to create addresses for a …","Return a fake wallet that appears to be funded for testing.","Return a derived address using the internal (change) …","get the corresponding PSBT Input for a LocalUtxo","Get the signers","Return a single transactions made and received by the …","Returns the UTXO owned by this wallet corresponding to …","HWI Signer","Child index of this address","","","","","","","","","Check whether or not a value is below dust limit","Return whether or not a script is part of this wallet …","Type of keychain","Return an unsorted list of transactions made and received …","Return the list of unspent outputs of this wallet","","Get the Bitcoin network the wallet is using.","Create a wallet.","Create a new “offline” wallet","Return the spending policies for the wallet’s descriptor","The progress tracker which may be informed when progress …","Return the “public” version of the wallet’s …","Return the secp256k1 context used for all signing …","Sign a transaction with all the wallet’s signers, in the …","Generalized signers","Sync the internal database with the blockchain","Cross-platform time","","","","","","","","","","Transaction builder","","","","","Verify transactions against the consensus rules","","","","","Deterministically generate a unique name given the …","","","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 …","Remaining amount after performing coin selection","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","","","","","","","","","","","","","","","","","","","","","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.","","","","","","","","","","","","","","","","","","","","","","","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 …","Structure that contains the export of a wallet","Alias for FullyNodedExport","Earliest block to rescan when looking for the wallet’s …","","","Return the internal descriptor, if present","","","Return the external descriptor","","","Export a wallet","","","","","","Arbitrary label for the wallet","","","","","","","Custom signer for Hardware Wallets","","","","","","","","Create a instance from the specified device and chain","","","","","","","","","","The signer will sign all the leaves it has a key for.","Dummy identifier","The signer won’t sign the specified leaves.","The fingerprint of a BIP32 extended key","Error while signing using hardware wallets","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","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 structure 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 …","","","","","","","","","","","","","","","","","","","","","","","","Return the SignerId for this signer","","","Returns the list of identifiers of all the signers in the …","","","","","","","","","","","","","","","","","","","","","","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 …","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","","","","","","","","Return the current timestamp in seconds","BIP69 / Lexicographic","Marker type to indicate the TxBuilder is being used to …","Use both change and non-change outputs (default)","Only use non-change outputs (see …","Policy regarding the use of change outputs when creating a …","Marker type to indicate the TxBuilder is being used to …","Only use change outputs (see TxBuilder::only_spend_change)","Randomized (default)","A transaction builder","Context in which the TxBuilder is valid","Ordering of the transaction’s inputs and outputs","Unchanged","Add data as an output, using OP_RETURN","Add a foreign UTXO i.e. a UTXO not owned by this wallet.","Fill-in the PSBT_GLOBAL_XPUB field with the extended keys …","Add a recipient to the internal list","Add a utxo to the internal list of unspendable utxos","Add a utxo to the internal list of utxos that must be spent","Add the list of outpoints to the internal list of UTXOs …","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","Set a custom fee rate","Finish building the transaction.","","","","","","","","","","","","","","","Fill-in the psbt::Output::redeem_script and …","","","","","","","","","","","Only spend utxos added by add_utxo.","Use a specific nLockTime while creating the transaction","Only spend change outputs","Only Fill-in the psbt::Input::witness_utxo field when …","Choose the ordering for inputs and outputs of the …","","","Set the policy path to use while creating the transaction …","Replace the recipients already added with a new list","Sign with a specific sig hash","Sort transaction inputs and outputs by TxOrdering variant","","","","","","","","","","","","","","","","","","","","","Replace the internal list of unspendable utxos with a new …","Build a transaction with a specific version","","","","","","Consensus error","Generic error","The transaction being spent doesn’t have the requested …","The transaction being spent is not available in the …","Error during validation of a tx agains the consensus rules","","","","","","","","","","","","","","","","","Verify a transaction against the consensus rules","","","","",""],"i":[0,1,0,1,1,1,1,0,1,1,1,0,1,2,0,1,1,1,3,1,1,1,2,1,1,1,1,1,1,1,1,0,3,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,4,2,2,5,2,0,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,2,2,5,6,7,3,8,9,4,2,5,6,7,3,8,9,4,8,4,0,5,9,4,5,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,0,0,2,6,8,9,4,1,2,5,6,7,3,8,9,4,2,5,6,7,3,8,9,4,8,5,5,1,1,2,5,6,7,3,8,9,4,4,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,5,6,7,3,8,9,9,4,5,5,5,5,5,5,2,6,4,4,2,6,9,4,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,10,10,11,12,6,6,0,5,6,7,3,8,9,4,9,3,6,5,0,8,7,8,2,6,8,9,4,5,4,9,2,5,6,7,3,8,9,4,1,4,8,4,1,2,5,6,7,3,8,9,4,1,2,5,6,7,3,8,9,4,8,3,6,1,2,5,6,7,3,8,9,4,4,7,13,0,1,2,5,6,7,3,8,9,4,0,2,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,42,43,44,45,46,47,47,48,0,0,0,49,0,0,48,48,0,0,0,50,0,0,0,0,0,0,0,48,51,52,48,51,52,53,50,50,48,51,52,48,51,52,0,51,52,48,51,52,48,51,52,48,51,52,0,48,0,53,48,51,52,48,51,52,49,54,53,48,55,56,48,48,51,52,48,51,52,0,0,0,0,50,48,51,52,48,51,52,48,51,52,48,51,52,57,51,52,48,51,52,58,58,0,0,59,60,59,60,59,60,59,60,59,60,59,60,59,60,60,59,60,59,60,60,59,60,60,59,60,59,59,59,59,59,60,60,60,60,60,59,59,59,59,59,59,60,59,60,60,60,60,59,60,59,60,59,60,59,60,59,59,61,62,63,64,65,66,67,68,69,0,69,0,0,0,69,69,69,69,69,69,69,69,0,69,69,69,0,69,69,69,70,71,70,72,73,71,74,69,70,72,73,71,74,69,73,71,74,71,74,72,72,70,70,72,73,71,74,69,70,72,73,71,74,69,71,74,70,72,73,71,74,69,71,74,73,70,72,73,71,74,69,69,70,72,73,71,74,69,69,69,69,69,69,73,73,73,73,72,72,70,73,72,70,70,72,73,71,74,69,70,72,73,71,74,69,72,70,71,74,74,70,73,74,72,72,71,74,74,71,71,74,71,74,69,70,72,73,71,74,69,70,72,73,71,74,69,70,72,73,71,74,69,70,72,73,71,74,69,73,75,76,77,78,79,0,0,80,81,80,81,80,81,81,80,80,81,80,81,81,80,81,81,80,81,80,80,81,80,80,80,80,80,80,81,80,81,81,81,81,81,81,81,81,80,81,80,81,80,81,81,80,81,80,82,0,0,0,82,82,82,82,82,82,82,82,82,82,83,82,84,83,82,84,83,84,83,83,83,82,84,84,83,82,84,83,83,82,84,83,83,84,82,82,84,83,82,82,82,82,82,82,82,84,83,84,84,84,84,84,84,82,84,83,82,84,83,83,84,83,83,83,83,83,83,82,82,84,83,82,84,83,82,84,83,82,84,83,84,84,85,86,87,88,89,90,91,92,93,94,0,95,95,0,0,0,0,95,96,97,98,96,99,95,97,98,96,99,95,97,98,97,96,99,95,97,96,99,95,97,95,99,97,98,98,96,99,95,97,98,96,99,95,97,96,99,95,98,96,99,95,97,96,99,95,98,98,96,99,95,97,99,98,96,99,95,97,98,98,98,95,98,98,95,98,96,99,95,97,98,96,99,95,97,96,99,95,96,97,95,99,96,99,95,99,99,96,97,96,99,95,97,98,96,99,95,97,98,96,99,95,97,98,96,99,95,97,96,97,98,96,99,95,97,96,97,98,100,101,101,102,0,0,103,0,0,0,0,0,102,104,105,104,105,104,105,106,104,105,105,102,104,104,107,104,107,104,107,104,107,104,107,104,107,104,107,104,104,105,104,105,105,104,105,104,105,104,105,103,104,106,104,106,104,106,104,106,104,106,104,106,104,106,104,106,104,104,105,104,105,106,104,106,104,106,104,106,104,0,104,104,105,107,104,107,104,107,104,107,104,107,104,107,104,105,104,105,104,105,104,105,104,105,0,0,0,108,109,110,108,109,110,0,108,109,110,0,109,108,109,111,112,110,108,109,111,112,110,109,109,108,109,108,109,108,109,108,109,108,109,108,109,108,109,108,109,111,112,110,108,109,111,112,110,111,112,110,108,109,111,112,110,109,111,112,110,108,108,108,108,109,109,109,109,111,112,110,110,110,110,109,109,109,109,109,109,109,109,109,108,109,111,112,110,108,109,111,112,110,109,109,109,109,111,112,111,112,110,108,109,108,109,108,109,108,109,108,109,108,109,111,108,109,111,112,110,108,109,111,112,110,108,109,111,112,110,108,109,111,112,110,113,114,115,116,117,118,119,120,121,0,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,123,0,0,0,0,0,0,124,0,0,125,0,0,0,124,123,0,0,123,126,0,123,124,0,123,123,126,123,127,128,129,123,130,124,123,127,128,129,130,124,123,127,128,129,129,125,127,128,125,128,125,125,127,128,125,127,128,125,125,127,128,125,127,128,0,130,124,123,127,128,129,130,124,123,127,128,129,130,124,123,127,128,129,129,130,124,123,127,128,129,130,124,123,127,128,129,130,123,123,123,123,123,129,130,124,123,127,128,129,129,130,124,123,127,128,129,0,123,129,129,131,123,129,123,130,124,123,123,127,128,129,129,123,129,130,124,123,123,123,123,123,123,123,127,128,129,129,123,129,129,129,123,129,130,124,123,127,128,129,129,129,123,123,129,129,123,130,124,123,127,128,129,130,124,123,127,128,129,130,124,123,127,128,129,129,132,123,129,129,129,123,129,129,130,125,127,128,129,123,129,125,127,128,130,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,129,130,125,129,123,129,129,130,124,123,127,128,129,125,127,128,0,129,123,129,123,129,129,123,123,129,123,129,125,127,128,0,130,124,123,127,128,129,123,129,123,125,125,123,129,130,124,123,127,128,129,130,124,123,127,128,129,129,130,124,123,127,128,129,123,130,124,123,127,128,129,130,129,130,133,134,135,136,137,138,139,140,0,0,141,141,0,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,142,143,144,145,146,147,148,149,150,151,151,0,152,0,0,150,153,0,150,150,151,151,151,150,152,154,151,152,152,0,0,0,154,154,153,150,150,0,0,150,150,150,153,153,150,152,155,156,151,154,153,150,152,155,156,151,154,153,150,152,155,156,154,153,150,152,155,156,154,155,156,156,153,150,152,155,156,151,154,153,150,152,155,156,151,154,153,150,152,155,156,151,154,153,150,152,155,156,151,153,150,152,155,156,151,151,154,153,150,152,152,155,155,156,151,154,155,153,156,153,156,150,155,153,150,152,155,156,151,154,153,150,152,155,156,151,154,150,152,156,155,153,150,152,155,156,151,156,155,155,153,150,152,155,156,156,153,150,152,155,156,154,151,153,150,152,155,156,151,154,153,150,152,155,156,151,154,153,150,152,155,156,151,154,153,150,152,155,156,151,154,157,158,158,158,159,160,161,162,163,164,165,166,165,166,165,166,165,166,165,166,167,168,169,170,171,172,173,174,174,173,175,176,177,178,179,180,181,182,183,184,185,180,181,182,183,184,185,181,183,185,0,0,0,0,0,0,0,0,0,0,0,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,186,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,177,178,179,180,181,182,183,184,185,187,0,0,0,0,188,188,0,0,189,0,0,0,0,187,187,187,125,0,0,190,187,187,188,191,0,191,0,0,190,126,192,0,0,0,0,190,0,189,192,126,0,193,126,0,191,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,125,125,125,125,125,125,125,125,194,195,126,196,189,190,199,194,195,126,196,189,190,199,195,126,196,189,199,199,191,194,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,126,191,194,195,126,192,196,197,189,198,190,199,187,195,195,126,196,189,190,195,195,126,126,192,192,196,197,189,198,190,199,187,187,195,191,191,191,194,195,126,126,192,196,197,189,198,190,199,187,187,187,198,198,126,192,195,126,188,200,188,200,195,126,196,189,191,126,195,126,196,189,191,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,201,202,194,194,126,192,198,202,191,194,194,191,191,126,193,190,193,190,193,190,126,126,195,196,197,195,0,126,125,195,195,0,125,195,126,196,189,195,196,197,125,198,195,126,196,189,125,195,195,195,195,125,195,0,194,195,126,196,189,190,199,192,195,126,192,187,125,125,195,191,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,191,194,195,126,192,196,197,189,198,190,199,187,139,140,203,204,205,206,207,208,209,210,211,212,212,212,213,0,212,0,0,0,212,0,214,214,214,214,214,213,213,212,215,214,213,212,215,214,213,212,215,213,212,215,213,215,213,212,215,214,213,212,215,214,215,213,212,215,214,213,212,215,213,213,212,212,215,215,213,212,215,214,215,215,215,215,215,213,215,213,215,213,212,215,214,213,212,215,214,215,215,215,215,212,215,215,215,215,215,213,215,215,215,215,213,212,215,215,215,213,212,215,213,212,215,214,213,212,215,214,213,212,215,214,213,212,215,214,215,215,213,216,217,218,219,0,220,220,220,0,0,0,221,221,221,221,0,0,222,223,222,221,223,224,222,221,223,224,222,222,0,222,224,222,221,223,223,224,222,221,223,224,222,222,221,223,224,222,223,0,222,222,221,223,223,224,222,221,223,224,222,222,222,0,222,222,222,222,222,0,223,222,221,223,224,222,221,223,224,225,222,223,222,222,223,222,222,222,222,224,222,222,222,0,222,0,223,222,221,223,224,222,221,223,224,0,222,221,223,224,0,222,221,223,224,0,226,227,0,228,0,0,0,0,0,228,0,228,229,230,231,232,228,229,230,231,232,230,231,230,231,233,230,231,232,0,230,231,232,228,229,230,231,232,228,229,230,231,232,228,229,230,231,232,229,229,228,229,230,231,232,228,229,230,231,232,228,229,230,231,232,228,229,230,231,232,229,232,229,229,230,231,228,229,230,231,232,228,229,230,231,232,228,229,230,231,232,228,229,230,231,232,234,235,235,234,235,0,0,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,0,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,238,239,240,239,240,241,239,241,0,241,241,241,242,241,241,241,241,241,241,239,240,242,241,0,0,0,0,0,0,0,0,242,0,0,241,243,244,244,243,244,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,243,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,240,238,238,243,244,239,240,241,242,245,245,238,243,244,239,240,241,242,245,238,243,244,239,246,245,245,240,241,242,245,238,243,244,239,240,241,242,238,239,243,240,241,241,242,245,238,243,244,239,240,240,240,241,241,241,242,245,238,243,244,239,240,240,246,245,245,243,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,240,241,242,238,239,245,243,240,238,243,244,247,245,245,248,245,244,243,244,240,241,242,245,238,243,244,239,241,244,244,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,240,241,242,245,238,243,244,239,249,250,251,252,253,254,255,256,0,257,0,258,258,0,0,258,257,0,0,0,257,259,259,259,259,259,259,259,259,259,260,261,259,257,258,260,261,259,257,258,259,260,261,259,257,258,260,261,259,257,258,257,258,259,259,260,261,257,258,260,261,259,257,258,260,261,259,257,258,259,259,259,260,261,259,257,258,259,259,257,258,259,259,259,260,261,259,257,258,260,261,259,257,258,257,258,257,258,259,260,261,259,257,258,260,261,259,257,258,259,259,259,259,259,257,258,259,259,259,257,260,261,259,257,258,260,261,259,257,258,260,261,259,257,258,260,261,259,257,258,259,259,260,261,259,257,258,262,262,262,262,0,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,0,262,263,264,265,266],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[],["u8",15]],[[]],[[],["f32",15]],[[],["usize",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["vec",3,[["u5",3],["global",3]]]]]],[[],["keychainkind",4]],[[],["feerate",3]],[[],["localutxo",3]],[[],["weightedutxo",3]],[[],["utxo",4]],[[],["transactiondetails",3]],[[],["blocktime",3]],[[],["balance",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,[[]],[[],["blocktime",3]],[[],["balance",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["keychainkind",4]],["bool",15]],[[["feerate",3]],["bool",15]],[[["localutxo",3]],["bool",15]],[[["weightedutxo",3]],["bool",15]],[[["utxo",4]],["bool",15]],[[["transactiondetails",3]],["bool",15]],[[["blocktime",3]],["bool",15]],[[["balance",3]],["bool",15]],null,[[["usize",15]],["u64",15]],[[["usize",15]],["u64",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],null,[[["error",4]]],[[]],[[["psbtparseerror",4]]],[[["policyerror",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["signererror",4]]],[[["keyerror",4]],["error",4]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["compactfilterserror",4]]],[[["verifyerror",4]]],[[["esploraerror",4]]],[[["error",4]]],[[["error",3]]],[[["error",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["blocktime",3]]],[[]],[[]],[[["f32",15]]],[[["f32",15]]],[[["f32",15]]],[[["f32",15]]],[[["u64",15],["usize",15]],["feerate",3]],[[["u64",15],["usize",15]],["feerate",3]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],null,null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],null,null,null,[[["feerate",3]],["bool",15]],[[["localutxo",3]],["bool",15]],[[["weightedutxo",3]],["bool",15]],[[["utxo",4]],["bool",15]],[[["transactiondetails",3]],["bool",15]],[[["blocktime",3]],["bool",15]],[[["balance",3]],["bool",15]],[[["option",4,[["u32",15]]],["option",4,[["u64",15]]]],["option",4]],[[],["outpoint",3]],null,[[["feerate",3]],["option",4,[["ordering",4]]]],null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["feerate",3]]],[[["iterator",8]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["txout",3]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[],["usize",15]],[[],["str",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["result",4]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[["str",15],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[["wallet",3],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[],["capability",4]],[[],["noopprogress",3]],[[],["logprogress",3]],[[]],[[]],[[]],null,[[],["noopprogress",3]],[[],["logprogress",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["capability",4]],["bool",15]],null,[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["u64",15]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[],["logprogress",3]],[[],["noopprogress",3]],[[]],null,[[["wallet",3],["option",4,[["u32",15]]],["syncoptions",3]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[["f32",15],["option",4,[["string",3]]]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["anyblockchainconfig",4]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["anyblockchainconfig",4]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["rpcblockchain",3]]],[[]],[[["compactfiltersblockchain",3]]],[[["electrumblockchain",3]]],[[["esplorablockchain",3]]],[[["esplorablockchainconfig",3]]],[[]],[[["rpcconfig",3]]],[[["compactfiltersblockchainconfig",3]]],[[["electrumblockchainconfig",3]]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["anyblockchainconfig",4]],["bool",15]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["transaction",3]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["bitcoinpeerconfig",3]],[[],["compactfiltersblockchainconfig",3]],[[]],[[]],[[["tosocketaddrs",8],["arc",3,[["mempool",3]]],["network",4]],["result",4,[["compactfilterserror",4]]]],[[["totargetaddr",8],["tosocketaddrs",8],["option",4],["arc",3,[["mempool",3]]],["network",4]],["result",4,[["compactfilterserror",4]]]],[[],["mempool",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["bitcoinpeerconfig",3]],["bool",15]],[[["compactfiltersblockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[["error",3]]],[[["error",4]]],[[["error",3]]],[[["error",4]]],[[["systemtimeerror",3]]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[],["arc",3,[["mempool",3]]]],[[],["network",4]],[[["inventory",4]],["option",4,[["transaction",3]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["versionmessage",3]],[[["txid",3]],["bool",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["vec",3,[["transaction",3]]]],[[["bitcoinpeerconfig",3]],["bool",15]],[[["compactfiltersblockchainconfig",3]],["bool",15]],null,[[]],[[["vec",3,[["peer",3]]],["asref",8,[["path",3]]],["option",4,[["usize",15]]]],["result",4,[["compactfilterserror",4]]]],null,[[["str",15],["option",4,[["duration",3]]]],["result",4,[["option",4,[["networkmessage",4]]],["compactfilterserror",4]]]],[[["networkmessage",4]],["result",4,[["compactfilterserror",4]]]],[[],["result",4]],[[],["result",4]],null,null,null,null,[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["electrumblockchainconfig",3]],[[]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["electrumblockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["client",3]]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["electrumblockchainconfig",3]],["bool",15]],null,[[],["result",4]],null,null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[],["esplorablockchainconfig",3]],[[]],null,[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["esplorablockchainconfig",3]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["error",4]],["error",4]],[[["parseinterror",3]],["error",4]],[[]],[[["error",3]],["error",4]],[[["error",4]],["error",4]],[[["transport",3]],["error",4]],[[["error",4]],["error",4]],[[]],[[]],[[["blockingclient",3],["usize",15]]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[["esplorablockchainconfig",3]],["bool",15]],[[["str",15],["usize",15]]],[[["string",3],["usize",15]]],null,[[],["result",4]],null,null,[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],[[["u8",15]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["transaction",3]],["result",4,[["error",4]]]],[[["str",15],["option",4,[["u32",15]]]],["result",4,[["error",4]]]],[[],["rpcconfig",3]],[[],["rpcsyncparams",3]],[[],["auth",4]],[[],["rpcblockchainfactory",3]],[[]],[[]],[[]],[[]],[[["auth",4]],["ordering",4]],[[]],null,[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["rpcconfig",3]],["bool",15]],[[["rpcsyncparams",3]],["bool",15]],[[["auth",4]],["bool",15]],[[["usize",15]],["result",4,[["feerate",3],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],null,[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["u64",15]],["result",4,[["blockhash",3],["error",4]]]],[[],["hashset",3,[["capability",4]]]],[[],["u64",15]],[[],["result",4,[["u32",15],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[["rpcconfig",3]],["bool",15]],[[["rpcsyncparams",3]],["bool",15]],[[["auth",4]],["bool",15]],null,null,[[["auth",4]],["option",4,[["ordering",4]]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],null,null,null,null,[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[]],[[]],[[]],[[]],[[]],null,null,[[["box",3,[["progress",8]]]],["result",4,[["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],null,[[]],[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["synctime",3]],[[]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],null,[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],null,[[["asref",8,[["path",3]]]]],null,[[],["result",4]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["sqlitedatabase",3]]],[[["tree",3]]],[[["memorydatabase",3]]],[[]],[[]],[[]],[[["sqlitedbconfiguration",3]]],[[["sleddbconfiguration",3]]],[[]],[[]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[["keychainkind",4],["asref",8]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[],["memorydatabase",3]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[]],[[],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["u32",15]]],["error",4]]]],[[["script",3]],["result",4,[["option",4],["error",4]]]],[[["txid",3]],["result",4,[["option",4,[["transaction",3]]],["error",4]]]],[[["keychainkind",4],["u32",15]],["result",4,[["option",4,[["script",3]]],["error",4]]]],[[],["result",4,[["option",4,[["synctime",3]]],["error",4]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],[[["keychainkind",4]],["result",4,[["u32",15],["error",4]]]],[[],["usize",15]],[[]],[[],["result",4,[["vec",3,[["transaction",3]]],["error",4]]]],[[["option",4,[["keychainkind",4]]]],["result",4,[["vec",3,[["script",3]]],["error",4]]]],[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[]],[[["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["transaction",3]],["result",4,[["error",4]]]],[[["script",3],["keychainkind",4],["u32",15]],["result",4,[["error",4]]]],[[["synctime",3]],["result",4,[["error",4]]]],[[["transactiondetails",3]],["result",4,[["error",4]]]],[[["localutxo",3]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["network",4]],["result",4,[["address",3],["error",4]]]],[[],["scriptcontextenum",4]],[[],["scriptcontextenum",4]],[[],["terminal",4]],[[["u32",15]],["descriptor",4,[["definitedescriptorkey",3]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["vec",3,[["miniscript",3],["global",3]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],null,[[],["descriptorxkey",3]],[[],["wildcard",4]],[[],["descriptor",4]],[[],["legacy",4]],[[],["segwitv0",4]],[[],["miniscript",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["descriptorxkey",3]],["ordering",4]],[[["wildcard",4]],["ordering",4]],[[["descriptor",4]],["ordering",4]],[[["legacy",4]],["ordering",4]],[[["segwitv0",4]],["ordering",4]],[[["miniscript",3]],["ordering",4]],[[],["bool",15]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["u32",15]],["descriptor",4,[["definitedescriptorkey",3]]]],[[["secp256k1",3]],["result",4,[["descriptor",4,[["publickey",3]]],["conversionerror",4]]]],[[["secp256k1",3],["u32",15]],["result",4,[["descriptor",4,[["publickey",3]]],["conversionerror",4]]]],[[],["descriptortype",4]],[[],["result",4,[["descriptor",4]]]],[[],["result",4,[["miniscript",3]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["script",3]],[[["descriptorxkey",3]],["bool",15]],[[["wildcard",4]],["bool",15]],[[["descriptor",4]],["bool",15]],[[["legacy",4]],["bool",15]],[[["segwitv0",4]],["bool",15]],[[["miniscript",3]],["bool",15]],null,[[],["result",4,[["script",3],["error",4]]]],null,[[["extparams",3]],["result",4,[["analysiserror",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["descriptorerror",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],[[["signerscontainer",3],["buildsatisfaction",4],["secp256k1",3]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],[[["secp256k1",3],["script",3],["range",3,[["u32",15]]]],["result",4,[["option",4],["conversionerror",4]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[["sh",3]],["descriptor",4]],[[]],[[["tr",3]],["descriptor",4]],[[["wsh",3]],["descriptor",4]],[[["wpkh",3]],["descriptor",4]],[[["pkh",3]],["descriptor",4]],[[["bare",3]],["descriptor",4]],[[]],[[]],[[]],[[["terminal",4]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15]],["result",4,[["descriptor",4],["error",4]]]],[[["str",15]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15],["extparams",3]],["result",4,[["miniscript",3],["error",4]]]],[[["str",15]],["result",4,[["miniscript",3],["error",4]]]],[[["tree",3]],["result",4,[["descriptor",4],["error",4]]]],[[["tree",3]],["result",4,[["miniscript",3],["error",4]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[["usize",15]],["option",4,[["miniscript",3]]]],[[["usize",15]],["option",4]],[[],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["terminal",4]],[[["secp256k1",3],["network",4]],["result",4,[["descriptorerror",4]]]],[[],["bool",15]],[[],["bool",15]],[[],["iter",3]],[[],["pkiter",3]],[[],["result",4,[["policy",4],["error",4]]]],[[],["result",4,[["policy",4],["error",4]]]],[[],["result",4,[["lifterror",4]]]],[[["secp256k1",3]],["option",4,[["derivationpath",3]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["result",4,[["usize",15],["error",4]]]],[[],["str",15]],[[],["str",15]],[[],["str",15]],[[["descriptorxkey",3]],["bool",15]],[[["descriptor",4]],["bool",15]],[[["miniscript",3,[["barectx",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["descriptor",4]],[[],["descriptor",4]],[[["miniscript",3,[["legacy",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],[[["wpkh",3]],["descriptor",4]],[[["wsh",3]],["descriptor",4]],[[],["result",4,[["descriptor",4],["error",4]]]],[[["miniscript",3,[["segwitv0",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],[[["option",4,[["taptree",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[],["result",4,[["descriptor",4],["error",4]]]],[[["miniscript",3,[["segwitv0",4]]]],["result",4,[["descriptor",4],["error",4]]]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["descriptor",4],["error",4]]]],null,null,[[["miniscript",3]],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["miniscript",3],["error",4]]]],[[["secp256k1",3],["str",15]],["result",4,[["error",4]]]],[[["script",3]],["result",4,[["miniscript",3],["error",4]]]],[[["script",3],["extparams",3]],["result",4,[["miniscript",3],["error",4]]]],[[["descriptorxkey",3]],["option",4,[["ordering",4]]]],[[["wildcard",4]],["option",4,[["ordering",4]]]],[[["descriptor",4]],["option",4,[["ordering",4]]]],[[["legacy",4]],["option",4,[["ordering",4]]]],[[["segwitv0",4]],["option",4,[["ordering",4]]]],[[["miniscript",3]],["option",4,[["ordering",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],null,[[],["bool",15]],[[],["result",4,[["error",4]]]],[[],["result",4,[["analysiserror",4]]]],[[["txin",3]],["result",4,[["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["result",4,[["script",3],["error",4]]]],[[],["script",3]],[[],["usize",15]],[[],["result",4]],[[],["result",4]],[[],["sigtype",4]],[[],["sigtype",4]],[[],["sigtype",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[["hashmap",3]],["string",3]],[[["miniscript",3]],["result",4,[["error",4]]]],[[["miniscript",3]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["script",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["bool",15]],null,null,null,null,null,null,null,null,null,[[["str",15]],["result",4,[["string",3],["descriptorerror",4]]]],[[["str",15]],["result",4,[["descriptorerror",4]]]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["error",4]]],[[["keyerror",4]],["error",4]],[[["policyerror",4]]],[[]],[[],["usize",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["pkorf",4]],[[],["satisfiableitem",4]],[[],["satisfaction",4]],[[],["policy",3]],[[],["condition",3]],[[],["buildsatisfaction",4]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["condition",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["pkorf",4]],["bool",15]],[[["satisfiableitem",4]],["bool",15]],[[["satisfaction",4]],["bool",15]],[[["policy",3]],["bool",15]],[[["condition",3]],["bool",15]],[[["policyerror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["bool",15]]],[[]],[[["satisfiableitem",4]]],[[]],[[]],[[]],[[["btreemap",3]],["result",4,[["condition",3],["policyerror",4]]]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[],["string",3]],null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,[[["pkorf",4]],["bool",15]],[[["satisfiableitem",4]],["bool",15]],[[["satisfaction",4]],["bool",15]],[[["policy",3]],["bool",15]],[[["condition",3]],["bool",15]],[[["policyerror",4]],["bool",15]],[[["condition",3]],["option",4,[["ordering",4]]]],[[],["bool",15]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["network",4]],["result",4,[["descriptortemplateout",6],["descriptorerror",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[["secp256k1",3],["network",4]],["result",4,[["error",4]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["validnetworks",6]],[[],["scriptcontextenum",4]],[[["u32",15]],["definitedescriptorkey",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["miniscript",3]],["result",4,[["scriptcontexterror",4]]]],[[["terminal",4]],["result",4,[["scriptcontexterror",4]]]],[[],["result",4,[["scriptcontexterror",4]]]],[[],["generatedkey",3]],[[],["sortedmultivec",3]],[[],["descriptorpublickey",4]],[[],["singlepub",3]],[[],["singlepubkey",4]],[[],["scriptcontextenum",4]],[[],["privatekeygenerateoptions",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["sortedmultivec",3]],["ordering",4]],[[["descriptorpublickey",4]],["ordering",4]],[[["singlepub",3]],["ordering",4]],[[["singlepubkey",4]],["ordering",4]],null,[[]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["u32",15]],["definitedescriptorkey",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["script",3]],[[["sortedmultivec",3]],["bool",15]],[[["descriptorpublickey",4]],["bool",15]],[[["singlepub",3]],["bool",15]],[[["singlepubkey",4]],["bool",15]],[[["scriptcontextenum",4]],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[],["bool",15]],[[["extendedpubkey",3]]],[[]],[[["extendedprivkey",3]]],[[]],[[]],[[["definitedescriptorkey",3]],["descriptorpublickey",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["error",4]]],[[["error",4]]],[[]],[[["descriptorpublickey",4],["validnetworks",6]]],[[["descriptorsecretkey",4],["validnetworks",6]]],[[["str",15]],["result",4,[["descriptorpublickey",4]]]],[[["str",15]],["result",4,[["descriptorsecretkey",4]]]],[[["tree",3]],["result",4,[["sortedmultivec",3],["error",4]]]],[[],["derivationpath",3]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["result",4,[["generatedkey",3]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[]],[[["network",4]],["option",4,[["extendedprivkey",3]]]],[[["network",4],["secp256k1",3]],["extendedpubkey",3]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,[[],["result",4,[["policy",4],["error",4]]]],[[],["validnetworks",6]],[[],["fingerprint",3]],[[["miniscript",3]],["option",4,[["usize",15]]]],[[],["usize",15]],[[],["usize",15]],[[["validnetworks",6],["validnetworks",6]],["validnetworks",6]],[[],["str",15]],[[["sortedmultivec",3]],["bool",15]],[[["descriptorpublickey",4]],["bool",15]],[[["singlepub",3]],["bool",15]],[[["singlepubkey",4]],["bool",15]],[[["usize",15],["vec",3,[["global",3]]]],["result",4,[["sortedmultivec",3],["error",4]]]],null,null,[[["miniscript",3]],["result",4,[["error",4]]]],[[["validnetworks",6]]],[[["sortedmultivec",3]],["option",4,[["ordering",4]]]],[[["descriptorpublickey",4]],["option",4,[["ordering",4]]]],[[["singlepub",3]],["option",4,[["ordering",4]]]],[[["singlepubkey",4]],["option",4,[["ordering",4]]]],[[],["usize",15]],null,[[],["result",4,[["error",4]]]],[[],["result",4,[["vec",3,[["vec",3,[["u8",15],["global",3]]],["global",3]]],["error",4]]]],[[],["usize",15]],[[],["sigtype",4]],[[],["terminal",4]],[[],["validnetworks",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["secp256k1",3]],["result",4,[["descriptorpublickey",4],["descriptorkeyparseerror",3]]]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[["miniscript",3]],["result",4,[["error",4]]]],[[["miniscript",3]],["result",4,[["error",4]]]],[[],["result",4,[["sortedmultivec",3]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["language",4]],[[],["error",4]],[[],["mnemonic",3]],[[]],[[]],[[]],[[["language",4]],["ordering",4]],[[["mnemonic",3]],["ordering",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4,[["mnemonic",3]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["language",4]],["bool",15]],[[["error",4]],["bool",15]],[[["mnemonic",3]],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[]],[[]],[[],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["result",4,[["mnemonic",3],["error",4]]]],[[["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4],["usize",15]],["result",4,[["mnemonic",3],["error",4]]]],[[],["result",4,[["generatedkey",3]]]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[["option",4,[["keysource",6]]],["derivationpath",3]],["result",4,[["descriptorkey",4],["keyerror",4]]]],[[],["result",4,[["extendedkey",4],["keyerror",4]]]],[[],["language",4]],[[],["result",4,[["language",4],["error",4]]]],[[["error",4]],["bool",15]],[[["mnemonic",3]],["bool",15]],[[],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4],["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["str",15]],["result",4,[["mnemonic",3],["error",4]]]],[[["language",4]],["option",4,[["ordering",4]]]],[[["mnemonic",3]],["option",4,[["ordering",4]]]],[[],["result",4]],[[],["vec",3,[["u8",15],["global",3]]]],[[]],[[]],[[]],[[]],[[]],[[["str",15]]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[]],[[["str",15]]],null,null,null,null,null,[[],["option",4,[["u64",15]]]],[[],["option",4,[["feerate",3]]]],[[["usize",15]],["option",4,[["txout",3]]]],null,null,null,null,null,null,null,null,null,[[["keychainkind",4],["signerordering",3],["arc",3,[["transactionsigner",8]]]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["txid",3]],["result",4,[["txbuilder",3,[["defaultcoinselectionalgorithm",6],["bumpfee",3]]],["error",4]]]],[[],["txbuilder",3,[["defaultcoinselectionalgorithm",6],["createtx",3]]]],null,[[]],[[],["syncoptions",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["keychainkind",4]],["string",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["u32",15]],["result",4,[["bool",15],["error",4]]]],[[["addressinfo",3]],["bool",15]],null,[[["partiallysignedtransaction",3],["signoptions",3]],["result",4,[["bool",15],["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["addressindex",4]],["result",4,[["addressinfo",3],["error",4]]]],[[],["result",4,[["balance",3],["error",4]]]],[[["keychainkind",4]],["extendeddescriptor",6]],[[["str",15]]],[[["addressindex",4]],["result",4,[["addressinfo",3],["error",4]]]],[[["localutxo",3],["option",4,[["psbtsighashtype",3]]],["bool",15]],["result",4,[["input",3],["error",4]]]],[[["keychainkind",4]],["arc",3,[["signerscontainer",3]]]],[[["txid",3],["bool",15]],["result",4,[["option",4,[["transactiondetails",3]]],["error",4]]]],[[["outpoint",3]],["result",4,[["option",4,[["localutxo",3]]],["error",4]]]],null,null,[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[["script",3]],["bool",15]],[[["script",3]],["result",4,[["bool",15],["error",4]]]],null,[[["bool",15]],["result",4,[["vec",3,[["transactiondetails",3]]],["error",4]]]],[[],["result",4,[["vec",3,[["localutxo",3]]],["error",4]]]],[[["addressinfo",3]],["bool",15]],[[],["network",4]],[[["intowalletdescriptor",8],["option",4,[["intowalletdescriptor",8]]],["network",4]],["result",4,[["error",4]]]],[[["intowalletdescriptor",8],["option",4,[["intowalletdescriptor",8]]],["network",4]],["result",4,[["error",4]]]],[[["keychainkind",4]],["result",4,[["option",4,[["policy",3]]],["error",4]]]],null,[[["keychainkind",4]],["result",4,[["option",4,[["extendeddescriptor",6]]],["error",4]]]],[[],["secp256k1",3]],[[["partiallysignedtransaction",3],["signoptions",3]],["result",4,[["bool",15],["error",4]]]],null,[[["syncoptions",3]],["result",4,[["error",4]]]],null,[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],null,[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],[[["option",4],["network",4],["secp256k1",3]],["result",4,[["string",3],["error",4]]]],null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["largestfirstcoinselection",3]],[[],["oldestfirstcoinselection",3]],[[]],[[]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["vec",3,[["weightedutxo",3]]],["vec",3,[["weightedutxo",3]]],["feerate",3],["u64",15],["script",3]],["result",4,[["coinselectionresult",3],["error",4]]]],[[["u64",15],["feerate",3],["script",3]],["excess",4]],[[],["largestfirstcoinselection",3]],[[],["oldestfirstcoinselection",3]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[["u64",15]]],null,[[],["u64",15]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,[[]],[[]],[[],["option",4,[["string",3]]]],[[["usize",15]]],[[["usize",15]]],[[],["string",3]],[[],["result",4]],[[["usize",15]]],[[["wallet",3],["str",15],["bool",15]],["result",4,[["str",15]]]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],["result",4]],[[],["usize",15]],[[]],null,[[],["result",4]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[]],[[["hwidevice",3],["hwichain",4]],["result",4,[["hwisigner",3],["error",4]]]],[[["secp256k1",3]],["signerid",4]],[[],["usize",15]],[[]],[[["partiallysignedtransaction",3],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["signerid",4],["signerordering",3],["arc",3,[["transactionsigner",8]]]],["option",4,[["arc",3,[["transactionsigner",8]]]]]],null,null,[[["secp256k1",3]],["keymap",6]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["keymap",6],["descriptor",4],["secp256k1",3]],["signerscontainer",3]],[[],["signerid",4]],[[],["signererror",4]],[[],["signercontext",4]],[[],["signerwrapper",3]],[[],["signerordering",3]],[[],["signerscontainer",3]],[[],["signoptions",3]],[[],["tapleavesoptions",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["signerid",4]],["ordering",4]],[[["signerordering",3]],["ordering",4]],[[]],[[],["signerscontainer",3]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[],["option",4,[["descriptorsecretkey",4]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["signerid",4]],["bool",15]],[[["signererror",4]],["bool",15]],[[["signercontext",4]],["bool",15]],[[["signerordering",3]],["bool",15]],[[["tapleavesoptions",4]],["bool",15]],[[["signerid",4]],["option",4,[["arc",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["hash",3]],["signerid",4]],[[["fingerprint",3]],["signerid",4]],[[]],[[["error",4]]],[[]],[[["error",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[]],[[["secp256k1",3]],["signerid",4]],[[["secp256k1",3]],["signerid",4]],[[["secp256k1",3]],["signerid",4]],[[],["vec",3,[["signerid",4]]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["signerid",4]],["bool",15]],[[["signererror",4]],["bool",15]],[[["signercontext",4]],["bool",15]],[[["signerordering",3]],["bool",15]],[[["tapleavesoptions",4]],["bool",15]],[[["signercontext",4]]],[[]],[[["signerid",4]],["option",4,[["ordering",4]]]],[[["signerordering",3]],["option",4,[["ordering",4]]]],[[["signerid",4],["signerordering",3]],["option",4,[["arc",3,[["transactionsigner",8]]]]]],null,[[["partiallysignedtransaction",3],["usize",15],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["usize",15],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["usize",15],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],[[["partiallysignedtransaction",3],["signoptions",3],["secp256k1",3]],["result",4,[["signererror",4]]]],null,[[],["vec",3,[["arc",3]]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,[[],["u64",15]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[["outpoint",3],["input",3],["usize",15]],["result",4,[["error",4]]]],[[]],[[["script",3],["u64",15]]],[[["outpoint",3]]],[[["outpoint",3]],["result",4,[["error",4]]]],[[],["result",4,[["error",4]]]],[[["bool",15]]],[[["script",3]],["result",4,[["error",4]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["changespendpolicy",4]]],[[],["createtx",3]],[[],["bumpfee",3]],[[]],[[],["txordering",4]],[[],["changespendpolicy",4]],[[]],[[]],[[]],[[]],[[]],[[["txordering",4]],["ordering",4]],[[["changespendpolicy",4]],["ordering",4]],[[["coinselectionalgorithm",8]],["txbuilder",3,[["coinselectionalgorithm",8]]]],[[["u32",15]]],[[],["createtx",3]],[[],["bumpfee",3]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["script",3]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["sequence",3]]],[[["txordering",4]],["bool",15]],[[["changespendpolicy",4]],["bool",15]],[[["u64",15]]],[[["feerate",3]]],[[],["result",4,[["error",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["locktime",4]]],[[]],[[]],[[["txordering",4]]],[[["txordering",4]],["option",4,[["ordering",4]]]],[[["changespendpolicy",4]],["option",4,[["ordering",4]]]],[[["btreemap",3,[["string",3],["vec",3,[["usize",15]]]]],["keychainkind",4]]],[[["vec",3]]],[[["psbtsighashtype",3]]],[[["transaction",3]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["vec",3,[["outpoint",3]]]]],[[["i32",15]]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["error",4]]],[[["error",4]]],[[]],[[],["usize",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["transaction",3]],["result",4,[["verifyerror",4]]]],[[]],null,null,null,null],"p":[[4,"Error"],[4,"KeychainKind"],[4,"Utxo"],[3,"Balance"],[3,"FeeRate"],[3,"LocalUtxo"],[3,"WeightedUtxo"],[3,"TransactionDetails"],[3,"BlockTime"],[6,"MnemonicWithPassphrase"],[6,"DescriptorTemplateOut"],[6,"ExtendedDescriptor"],[8,"Vbytes"],[13,"InvalidU32Bytes"],[13,"Generic"],[13,"OutputBelowDustLimit"],[13,"MissingKeyOrigin"],[13,"Key"],[13,"SpendingPolicyRequired"],[13,"InvalidPolicyPathError"],[13,"Signer"],[13,"Verification"],[13,"InvalidProgressValue"],[13,"InvalidOutpoint"],[13,"Descriptor"],[13,"Encode"],[13,"Miniscript"],[13,"MiniscriptPsbt"],[13,"Bip32"],[13,"Secp256k1"],[13,"Json"],[13,"Hex"],[13,"Psbt"],[13,"PsbtParse"],[13,"MissingCachedScripts"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Sled"],[13,"Rpc"],[13,"Rusqlite"],[13,"InsufficientFunds"],[13,"InvalidNetwork"],[13,"FeeRateTooLow"],[13,"FeeTooLow"],[13,"Local"],[13,"Foreign"],[4,"Capability"],[8,"ConfigurableBlockchain"],[8,"BlockchainFactory"],[3,"NoopProgress"],[3,"LogProgress"],[8,"Blockchain"],[8,"GetBlockHash"],[8,"GetHeight"],[8,"GetTx"],[8,"Progress"],[8,"WalletSync"],[4,"AnyBlockchain"],[4,"AnyBlockchainConfig"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Rpc"],[13,"Electrum"],[13,"Esplora"],[13,"CompactFilters"],[13,"Rpc"],[4,"CompactFiltersError"],[3,"Mempool"],[3,"BitcoinPeerConfig"],[3,"Peer"],[3,"CompactFiltersBlockchain"],[3,"CompactFiltersBlockchainConfig"],[13,"Db"],[13,"Io"],[13,"Bip158"],[13,"Time"],[13,"Global"],[3,"ElectrumBlockchain"],[3,"ElectrumBlockchainConfig"],[4,"EsploraError"],[3,"EsploraBlockchainConfig"],[3,"EsploraBlockchain"],[13,"Ureq"],[13,"UreqTransport"],[13,"HttpResponse"],[13,"Io"],[13,"Parsing"],[13,"BitcoinEncoding"],[13,"Hex"],[13,"TransactionNotFound"],[13,"HeaderHeightNotFound"],[13,"HeaderHashNotFound"],[4,"Auth"],[3,"RpcConfig"],[3,"RpcBlockchainFactory"],[3,"RpcBlockchain"],[3,"RpcSyncParams"],[13,"Cookie"],[13,"UserPass"],[8,"BatchDatabase"],[8,"ConfigurableDatabase"],[3,"SqliteDatabase"],[3,"SyncTime"],[8,"Database"],[8,"BatchOperations"],[4,"AnyBatch"],[4,"AnyDatabase"],[4,"AnyDatabaseConfig"],[3,"SledDbConfiguration"],[3,"SqliteDbConfiguration"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[13,"Memory"],[13,"Sled"],[13,"Sqlite"],[3,"MemoryDatabase"],[4,"Descriptor"],[4,"Wildcard"],[8,"ScriptContext"],[4,"DescriptorPublicKey"],[4,"Legacy"],[4,"Segwitv0"],[3,"Miniscript"],[3,"DescriptorXKey"],[8,"ExtractPolicy"],[8,"IntoWalletDescriptor"],[13,"Bare"],[13,"Pkh"],[13,"Wpkh"],[13,"Sh"],[13,"Wsh"],[13,"Tr"],[13,"Single"],[13,"XPub"],[4,"Error"],[13,"Key"],[13,"Policy"],[13,"InvalidDescriptorCharacter"],[13,"Bip32"],[13,"Base58"],[13,"Pk"],[13,"Miniscript"],[13,"Hex"],[4,"SatisfiableItem"],[4,"PolicyError"],[4,"Satisfaction"],[4,"PkOrF"],[4,"BuildSatisfaction"],[3,"Policy"],[3,"Condition"],[13,"Psbt"],[13,"PsbtTimelocks"],[13,"Pubkey"],[13,"XOnlyPubkey"],[13,"Fingerprint"],[13,"NotEnoughItemsSelected"],[13,"IndexOutOfRange"],[13,"Complete"],[13,"Partial"],[13,"PartialComplete"],[13,"EcdsaSignature"],[13,"SchnorrSignature"],[13,"Sha256Preimage"],[13,"Hash256Preimage"],[13,"Ripemd160Preimage"],[13,"Hash160Preimage"],[13,"Thresh"],[13,"Multisig"],[13,"AbsoluteTimelock"],[13,"RelativeTimelock"],[3,"P2Pkh"],[3,"P2Wpkh_P2Sh"],[3,"P2Wpkh"],[3,"Bip44"],[3,"Bip44Public"],[3,"Bip49"],[3,"Bip49Public"],[3,"Bip84"],[3,"Bip84Public"],[8,"DescriptorTemplate"],[4,"KeyError"],[8,"GeneratableKey"],[4,"SinglePubKey"],[4,"ScriptContextEnum"],[4,"ExtendedKey"],[4,"DescriptorSecretKey"],[8,"ExtScriptContext"],[3,"GeneratedKey"],[3,"SortedMultiVec"],[3,"SinglePub"],[3,"SinglePriv"],[4,"DescriptorKey"],[3,"PrivateKeyGenerateOptions"],[8,"GeneratableDefaultOptions"],[8,"IntoDescriptorKey"],[8,"DerivableKey"],[13,"Single"],[13,"XPrv"],[13,"Private"],[13,"Public"],[13,"Message"],[13,"Bip32"],[13,"Miniscript"],[13,"FullKey"],[13,"XOnly"],[4,"Error"],[4,"Language"],[4,"WordCount"],[3,"Mnemonic"],[13,"BadWordCount"],[13,"UnknownWord"],[13,"BadEntropyBitCount"],[13,"AmbiguousLanguages"],[8,"PsbtUtils"],[4,"AddressIndex"],[3,"Wallet"],[3,"AddressInfo"],[3,"SyncOptions"],[8,"IsDust"],[13,"Peek"],[13,"Reset"],[4,"Excess"],[3,"CoinSelectionResult"],[3,"LargestFirstCoinSelection"],[3,"OldestFirstCoinSelection"],[3,"BranchAndBoundCoinSelection"],[8,"CoinSelectionAlgorithm"],[13,"Change"],[13,"NoChange"],[3,"FullyNodedExport"],[3,"HWISigner"],[3,"SignerOrdering"],[4,"TapLeavesOptions"],[4,"SignerId"],[4,"SignerError"],[4,"SignerContext"],[3,"SignersContainer"],[3,"SignOptions"],[3,"SignerWrapper"],[8,"SignerCommon"],[8,"InputSigner"],[8,"TransactionSigner"],[13,"Tap"],[13,"SighashError"],[13,"HWIError"],[13,"PkHash"],[13,"Fingerprint"],[13,"Dummy"],[13,"Include"],[13,"Exclude"],[4,"TxOrdering"],[4,"ChangeSpendPolicy"],[3,"TxBuilder"],[3,"CreateTx"],[3,"BumpFee"],[4,"VerifyError"],[13,"MissingInputTx"],[13,"InvalidInput"],[13,"Consensus"],[13,"Global"]]}\ }'); if (window.initSearch) {window.initSearch(searchIndex)}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/source-files.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/source-files.js index ed6f564b9f..8dcec546df 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/source-files.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/source-files.js @@ -1,3 +1,3 @@ var N = null;var sourcesIndex = {}; -sourcesIndex["bdk"] = {"name":"","dirs":[{"name":"blockchain","dirs":[{"name":"compact_filters","files":["mod.rs","peer.rs","store.rs","sync.rs"]},{"name":"esplora","files":["blocking.rs","mod.rs"]}],"files":["any.rs","electrum.rs","mod.rs","rpc.rs","script_sync.rs"]},{"name":"database","files":["any.rs","keyvalue.rs","memory.rs","mod.rs","sqlite.rs"]},{"name":"descriptor","files":["checksum.rs","derived.rs","dsl.rs","error.rs","mod.rs","policy.rs","template.rs"]},{"name":"keys","files":["bip39.rs","mod.rs"]},{"name":"psbt","files":["mod.rs"]},{"name":"testutils","files":["mod.rs"]},{"name":"wallet","files":["address_validator.rs","coin_selection.rs","export.rs","hardwaresigner.rs","mod.rs","signer.rs","time.rs","tx_builder.rs","utils.rs","verify.rs"]}],"files":["error.rs","lib.rs","types.rs"]}; +sourcesIndex["bdk"] = {"name":"","dirs":[{"name":"blockchain","dirs":[{"name":"compact_filters","files":["mod.rs","peer.rs","store.rs","sync.rs"]},{"name":"esplora","files":["blocking.rs","mod.rs"]}],"files":["any.rs","electrum.rs","mod.rs","rpc.rs","script_sync.rs"]},{"name":"database","files":["any.rs","keyvalue.rs","memory.rs","mod.rs","sqlite.rs"]},{"name":"descriptor","files":["checksum.rs","dsl.rs","error.rs","mod.rs","policy.rs","template.rs"]},{"name":"keys","files":["bip39.rs","mod.rs"]},{"name":"psbt","files":["mod.rs"]},{"name":"testutils","files":["mod.rs"]},{"name":"wallet","files":["coin_selection.rs","export.rs","hardwaresigner.rs","mod.rs","signer.rs","time.rs","tx_builder.rs","utils.rs","verify.rs"]}],"files":["error.rs","lib.rs","types.rs"]}; createSourceSidebar(); diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/any.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/any.rs.html index 457e5fd296..1946a2b5cb 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/any.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/any.rs.html @@ -447,7 +447,7 @@ /// ); /// # } /// ``` -#[derive(Debug, serde::Serialize, serde::Deserialize, Clone, PartialEq)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq)] #[serde(tag = "type", rename_all = "snake_case")] pub enum AnyBlockchainConfig { #[cfg(feature = "electrum")] diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/mod.rs.html index b5ac248bf0..dcd02fc166 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/mod.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/mod.rs.html @@ -1080,7 +1080,7 @@ } /// Data to connect to a Bitcoin P2P peer -#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq)] +#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq)] pub struct BitcoinPeerConfig { /// Peer address such as 127.0.0.1:18333 pub address: String, @@ -1091,7 +1091,7 @@ } /// Configuration for a [`CompactFiltersBlockchain`] -#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq)] +#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq)] pub struct CompactFiltersBlockchainConfig { /// List of peers to try to connect to for asking headers and filters pub peers: Vec<BitcoinPeerConfig>, diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/peer.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/peer.rs.html index b35d5f9c78..7138fd99d9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/peer.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/peer.rs.html @@ -578,6 +578,9 @@ 571 572 573 +574 +575 +576
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -655,7 +658,10 @@
         /// Look-up a transaction in the mempool given an [`Inventory`] request
         pub fn get_tx(&self, inventory: &Inventory) -> Option<Transaction> {
             let identifer = match inventory {
    -            Inventory::Error | Inventory::Block(_) | Inventory::WitnessBlock(_) => return None,
    +            Inventory::Error
    +            | Inventory::Block(_)
    +            | Inventory::WitnessBlock(_)
    +            | Inventory::CompactBlock(_) => return None,
                 Inventory::Transaction(txid) => TxIdentifier::Txid(*txid),
                 Inventory::WitnessTransaction(txid) => TxIdentifier::Txid(*txid),
                 Inventory::WTx(wtxid) => TxIdentifier::Wtxid(*wtxid),
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/store.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/store.rs.html
    index 28d6e2dc21..adadb39924 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/store.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/store.rs.html
    @@ -835,6 +835,12 @@
     828
     829
     830
    +831
    +832
    +833
    +834
    +835
    +836
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -940,42 +946,42 @@
     }
     
     impl Encodable for BundleStatus {
    -    fn consensus_encode<W: Write>(&self, mut e: W) -> Result<usize, std::io::Error> {
    +    fn consensus_encode<W: Write + ?Sized>(&self, e: &mut W) -> Result<usize, std::io::Error> {
             let mut written = 0;
     
             match self {
                 BundleStatus::Init => {
    -                written += 0x00u8.consensus_encode(&mut e)?;
    +                written += 0x00u8.consensus_encode(e)?;
                 }
                 BundleStatus::CfHeaders { cf_headers } => {
    -                written += 0x01u8.consensus_encode(&mut e)?;
    -                written += VarInt(cf_headers.len() as u64).consensus_encode(&mut e)?;
    +                written += 0x01u8.consensus_encode(e)?;
    +                written += VarInt(cf_headers.len() as u64).consensus_encode(e)?;
                     for header in cf_headers {
    -                    written += header.consensus_encode(&mut e)?;
    +                    written += header.consensus_encode(e)?;
                     }
                 }
                 BundleStatus::CFilters { cf_filters } => {
    -                written += 0x02u8.consensus_encode(&mut e)?;
    -                written += VarInt(cf_filters.len() as u64).consensus_encode(&mut e)?;
    +                written += 0x02u8.consensus_encode(e)?;
    +                written += VarInt(cf_filters.len() as u64).consensus_encode(e)?;
                     for filter in cf_filters {
    -                    written += filter.consensus_encode(&mut e)?;
    +                    written += filter.consensus_encode(e)?;
                     }
                 }
                 BundleStatus::Processed { cf_filters } => {
    -                written += 0x03u8.consensus_encode(&mut e)?;
    -                written += VarInt(cf_filters.len() as u64).consensus_encode(&mut e)?;
    +                written += 0x03u8.consensus_encode(e)?;
    +                written += VarInt(cf_filters.len() as u64).consensus_encode(e)?;
                     for filter in cf_filters {
    -                    written += filter.consensus_encode(&mut e)?;
    +                    written += filter.consensus_encode(e)?;
                     }
                 }
                 BundleStatus::Pruned => {
    -                written += 0x04u8.consensus_encode(&mut e)?;
    +                written += 0x04u8.consensus_encode(e)?;
                 }
                 BundleStatus::Tip { cf_filters } => {
    -                written += 0x05u8.consensus_encode(&mut e)?;
    -                written += VarInt(cf_filters.len() as u64).consensus_encode(&mut e)?;
    +                written += 0x05u8.consensus_encode(e)?;
    +                written += VarInt(cf_filters.len() as u64).consensus_encode(e)?;
                     for filter in cf_filters {
    -                    written += filter.consensus_encode(&mut e)?;
    +                    written += filter.consensus_encode(e)?;
                     }
                 }
             }
    @@ -985,51 +991,53 @@
     }
     
     impl Decodable for BundleStatus {
    -    fn consensus_decode<D: Read>(mut d: D) -> Result<Self, bitcoin::consensus::encode::Error> {
    -        let byte_type = u8::consensus_decode(&mut d)?;
    +    fn consensus_decode<D: Read + ?Sized>(
    +        d: &mut D,
    +    ) -> Result<Self, bitcoin::consensus::encode::Error> {
    +        let byte_type = u8::consensus_decode(d)?;
             match byte_type {
                 0x00 => Ok(BundleStatus::Init),
                 0x01 => {
    -                let num = VarInt::consensus_decode(&mut d)?;
    +                let num = VarInt::consensus_decode(d)?;
                     let num = num.0 as usize;
     
                     let mut cf_headers = Vec::with_capacity(num);
                     for _ in 0..num {
    -                    cf_headers.push(FilterHeader::consensus_decode(&mut d)?);
    +                    cf_headers.push(FilterHeader::consensus_decode(d)?);
                     }
     
                     Ok(BundleStatus::CfHeaders { cf_headers })
                 }
                 0x02 => {
    -                let num = VarInt::consensus_decode(&mut d)?;
    +                let num = VarInt::consensus_decode(d)?;
                     let num = num.0 as usize;
     
                     let mut cf_filters = Vec::with_capacity(num);
                     for _ in 0..num {
    -                    cf_filters.push(Vec::<u8>::consensus_decode(&mut d)?);
    +                    cf_filters.push(Vec::<u8>::consensus_decode(d)?);
                     }
     
                     Ok(BundleStatus::CFilters { cf_filters })
                 }
                 0x03 => {
    -                let num = VarInt::consensus_decode(&mut d)?;
    +                let num = VarInt::consensus_decode(d)?;
                     let num = num.0 as usize;
     
                     let mut cf_filters = Vec::with_capacity(num);
                     for _ in 0..num {
    -                    cf_filters.push(Vec::<u8>::consensus_decode(&mut d)?);
    +                    cf_filters.push(Vec::<u8>::consensus_decode(d)?);
                     }
     
                     Ok(BundleStatus::Processed { cf_filters })
                 }
                 0x04 => Ok(BundleStatus::Pruned),
                 0x05 => {
    -                let num = VarInt::consensus_decode(&mut d)?;
    +                let num = VarInt::consensus_decode(d)?;
                     let num = num.0 as usize;
     
                     let mut cf_filters = Vec::with_capacity(num);
                     for _ in 0..num {
    -                    cf_filters.push(Vec::<u8>::consensus_decode(&mut d)?);
    +                    cf_filters.push(Vec::<u8>::consensus_decode(d)?);
                     }
     
                     Ok(BundleStatus::Tip { cf_filters })
    @@ -1113,7 +1121,11 @@
         }
     
         pub fn start_snapshot(&self, from: usize) -> Result<ChainStore<Snapshot>, CompactFiltersError> {
    -        let new_cf_name: String = thread_rng().sample_iter(&Alphanumeric).take(16).collect();
    +        let new_cf_name: String = thread_rng()
    +            .sample_iter(&Alphanumeric)
    +            .map(|byte| byte as char)
    +            .take(16)
    +            .collect();
             let new_cf_name = format!("_headers:{}", new_cf_name);
     
             let mut write_store = self.store.write().unwrap();
    @@ -1484,7 +1496,7 @@
                         &first_key,
                         (
                             BundleStatus::Init,
    -                        filter.filter_header(&FilterHeader::from_hash(Default::default())),
    +                        filter.filter_header(&FilterHeader::from_hash(Hash::all_zeros())),
                         )
                             .serialize(),
                     )?;
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/sync.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/sync.rs.html
    index b22d7020b6..367f9e9571 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/sync.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/compact_filters/sync.rs.html
    @@ -301,6 +301,7 @@
     294
     295
     296
    +297
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -317,6 +318,7 @@
     use std::time::Duration;
     
     use bitcoin::hash_types::{BlockHash, FilterHeader};
    +use bitcoin::hashes::Hash;
     use bitcoin::network::message::NetworkMessage;
     use bitcoin::network::message_blockdata::GetHeadersMessage;
     use bitcoin::util::bip158::BlockFilter;
    @@ -557,7 +559,7 @@
     
         peer.send(NetworkMessage::GetHeaders(GetHeadersMessage::new(
             locators_vec,
    -        Default::default(),
    +        Hash::all_zeros(),
         )))?;
         let (mut snapshot, mut last_hash) = if let NetworkMessage::Headers(headers) = peer
             .recv("headers", Some(Duration::from_secs(TIMEOUT_SECS)))?
    @@ -579,7 +581,7 @@
         while sync_height < peer.get_version().start_height as usize {
             peer.send(NetworkMessage::GetHeaders(GetHeadersMessage::new(
                 vec![last_hash],
    -            Default::default(),
    +            Hash::all_zeros(),
             )))?;
             if let NetworkMessage::Headers(headers) = peer
                 .recv("headers", Some(Duration::from_secs(TIMEOUT_SECS)))?
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/electrum.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/electrum.rs.html
    index f23be5c850..706341a3ea 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/electrum.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/electrum.rs.html
    @@ -727,7 +727,7 @@
     }
     
     /// Configuration for an [`ElectrumBlockchain`]
    -#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq)]
    +#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq)]
     pub struct ElectrumBlockchainConfig {
         /// URL of the Electrum server (such as ElectrumX, Esplora, BWT) may start with `ssl://` or `tcp://` and include a port
         ///
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/blocking.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/blocking.rs.html
    index aae5485d57..bf23bbbe25 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/blocking.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/blocking.rs.html
    @@ -243,7 +243,6 @@
     236
     237
     238
    -239
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -356,8 +355,7 @@
     
     impl GetBlockHash for EsploraBlockchain {
         fn get_block_hash(&self, height: u64) -> Result<BlockHash, Error> {
    -        let block_header = self.url_client.get_header(height as u32)?;
    -        Ok(block_header.block_hash())
    +        Ok(self.url_client.get_block_hash(height as u32)?)
         }
     }
     
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/mod.rs.html
    index 8898c4f58b..608f4677ba 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/mod.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/esplora/mod.rs.html
    @@ -170,7 +170,7 @@
     pub use self::blocking::*;
     
     /// Configuration for an [`EsploraBlockchain`]
    -#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq)]
    +#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq)]
     pub struct EsploraBlockchainConfig {
         /// Base URL of the esplora service
         ///
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/rpc.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/rpc.rs.html
    index 93e603ea10..074dd89cb0 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/rpc.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/blockchain/rpc.rs.html
    @@ -5,1003 +5,1006 @@
         
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 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
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
    -232
    -233
    -234
    -235
    -236
    -237
    -238
    -239
    -240
    -241
    -242
    -243
    -244
    -245
    -246
    -247
    -248
    -249
    -250
    -251
    -252
    -253
    -254
    -255
    -256
    -257
    -258
    -259
    -260
    -261
    -262
    -263
    -264
    -265
    -266
    -267
    -268
    -269
    -270
    -271
    -272
    -273
    -274
    -275
    -276
    -277
    -278
    -279
    -280
    -281
    -282
    -283
    -284
    -285
    -286
    -287
    -288
    -289
    -290
    -291
    -292
    -293
    -294
    -295
    -296
    -297
    -298
    -299
    -300
    -301
    -302
    -303
    -304
    -305
    -306
    -307
    -308
    -309
    -310
    -311
    -312
    -313
    -314
    -315
    -316
    -317
    -318
    -319
    -320
    -321
    -322
    -323
    -324
    -325
    -326
    -327
    -328
    -329
    -330
    -331
    -332
    -333
    -334
    -335
    -336
    -337
    -338
    -339
    -340
    -341
    -342
    -343
    -344
    -345
    -346
    -347
    -348
    -349
    -350
    -351
    -352
    -353
    -354
    -355
    -356
    -357
    -358
    -359
    -360
    -361
    -362
    -363
    -364
    -365
    -366
    -367
    -368
    -369
    -370
    -371
    -372
    -373
    -374
    -375
    -376
    -377
    -378
    -379
    -380
    -381
    -382
    -383
    -384
    -385
    -386
    -387
    -388
    -389
    -390
    -391
    -392
    -393
    -394
    -395
    -396
    -397
    -398
    -399
    -400
    -401
    -402
    -403
    -404
    -405
    -406
    -407
    -408
    -409
    -410
    -411
    -412
    -413
    -414
    -415
    -416
    -417
    -418
    -419
    -420
    -421
    -422
    -423
    -424
    -425
    -426
    -427
    -428
    -429
    -430
    -431
    -432
    -433
    -434
    -435
    -436
    -437
    -438
    -439
    -440
    -441
    -442
    -443
    -444
    -445
    -446
    -447
    -448
    -449
    -450
    -451
    -452
    -453
    -454
    -455
    -456
    -457
    -458
    -459
    -460
    -461
    -462
    -463
    -464
    -465
    -466
    -467
    -468
    -469
    -470
    -471
    -472
    -473
    -474
    -475
    -476
    -477
    -478
    -479
    -480
    -481
    -482
    -483
    -484
    -485
    -486
    -487
    -488
    -489
    -490
    -491
    -492
    -493
    -494
    -495
    -496
    -497
    -498
    -499
    -500
    -501
    -502
    -503
    -504
    -505
    -506
    -507
    -508
    -509
    -510
    -511
    -512
    -513
    -514
    -515
    -516
    -517
    -518
    -519
    -520
    -521
    -522
    -523
    -524
    -525
    -526
    -527
    -528
    -529
    -530
    -531
    -532
    -533
    -534
    -535
    -536
    -537
    -538
    -539
    -540
    -541
    -542
    -543
    -544
    -545
    -546
    -547
    -548
    -549
    -550
    -551
    -552
    -553
    -554
    -555
    -556
    -557
    -558
    -559
    -560
    -561
    -562
    -563
    -564
    -565
    -566
    -567
    -568
    -569
    -570
    -571
    -572
    -573
    -574
    -575
    -576
    -577
    -578
    -579
    -580
    -581
    -582
    -583
    -584
    -585
    -586
    -587
    -588
    -589
    -590
    -591
    -592
    -593
    -594
    -595
    -596
    -597
    -598
    -599
    -600
    -601
    -602
    -603
    -604
    -605
    -606
    -607
    -608
    -609
    -610
    -611
    -612
    -613
    -614
    -615
    -616
    -617
    -618
    -619
    -620
    -621
    -622
    -623
    -624
    -625
    -626
    -627
    -628
    -629
    -630
    -631
    -632
    -633
    -634
    -635
    -636
    -637
    -638
    -639
    -640
    -641
    -642
    -643
    -644
    -645
    -646
    -647
    -648
    -649
    -650
    -651
    -652
    -653
    -654
    -655
    -656
    -657
    -658
    -659
    -660
    -661
    -662
    -663
    -664
    -665
    -666
    -667
    -668
    -669
    -670
    -671
    -672
    -673
    -674
    -675
    -676
    -677
    -678
    -679
    -680
    -681
    -682
    -683
    -684
    -685
    -686
    -687
    -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
    -972
    -973
    -974
    -975
    -976
    -977
    -978
    -979
    -980
    -981
    -982
    -983
    -984
    -985
    -986
    -987
    -988
    -989
    -990
    -991
    -992
    -993
    -994
    -995
    -996
    -997
    +                        logo
       1
    +   2
    +   3
    +   4
    +   5
    +   6
    +   7
    +   8
    +   9
    +  10
    +  11
    +  12
    +  13
    +  14
    +  15
    +  16
    +  17
    +  18
    +  19
    +  20
    +  21
    +  22
    +  23
    +  24
    +  25
    +  26
    +  27
    +  28
    +  29
    +  30
    +  31
    +  32
    +  33
    +  34
    +  35
    +  36
    +  37
    +  38
    +  39
    +  40
    +  41
    +  42
    +  43
    +  44
    +  45
    +  46
    +  47
    +  48
    +  49
    +  50
    +  51
    +  52
    +  53
    +  54
    +  55
    +  56
    +  57
    +  58
    +  59
    +  60
    +  61
    +  62
    +  63
    +  64
    +  65
    +  66
    +  67
    +  68
    +  69
    +  70
    +  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
    + 177
    + 178
    + 179
    + 180
    + 181
    + 182
    + 183
    + 184
    + 185
    + 186
    + 187
    + 188
    + 189
    + 190
    + 191
    + 192
    + 193
    + 194
    + 195
    + 196
    + 197
    + 198
    + 199
    + 200
    + 201
    + 202
    + 203
    + 204
    + 205
    + 206
    + 207
    + 208
    + 209
    + 210
    + 211
    + 212
    + 213
    + 214
    + 215
    + 216
    + 217
    + 218
    + 219
    + 220
    + 221
    + 222
    + 223
    + 224
    + 225
    + 226
    + 227
    + 228
    + 229
    + 230
    + 231
    + 232
    + 233
    + 234
    + 235
    + 236
    + 237
    + 238
    + 239
    + 240
    + 241
    + 242
    + 243
    + 244
    + 245
    + 246
    + 247
    + 248
    + 249
    + 250
    + 251
    + 252
    + 253
    + 254
    + 255
    + 256
    + 257
    + 258
    + 259
    + 260
    + 261
    + 262
    + 263
    + 264
    + 265
    + 266
    + 267
    + 268
    + 269
    + 270
    + 271
    + 272
    + 273
    + 274
    + 275
    + 276
    + 277
    + 278
    + 279
    + 280
    + 281
    + 282
    + 283
    + 284
    + 285
    + 286
    + 287
    + 288
    + 289
    + 290
    + 291
    + 292
    + 293
    + 294
    + 295
    + 296
    + 297
    + 298
    + 299
    + 300
    + 301
    + 302
    + 303
    + 304
    + 305
    + 306
    + 307
    + 308
    + 309
    + 310
    + 311
    + 312
    + 313
    + 314
    + 315
    + 316
    + 317
    + 318
    + 319
    + 320
    + 321
    + 322
    + 323
    + 324
    + 325
    + 326
    + 327
    + 328
    + 329
    + 330
    + 331
    + 332
    + 333
    + 334
    + 335
    + 336
    + 337
    + 338
    + 339
    + 340
    + 341
    + 342
    + 343
    + 344
    + 345
    + 346
    + 347
    + 348
    + 349
    + 350
    + 351
    + 352
    + 353
    + 354
    + 355
    + 356
    + 357
    + 358
    + 359
    + 360
    + 361
    + 362
    + 363
    + 364
    + 365
    + 366
    + 367
    + 368
    + 369
    + 370
    + 371
    + 372
    + 373
    + 374
    + 375
    + 376
    + 377
    + 378
    + 379
    + 380
    + 381
    + 382
    + 383
    + 384
    + 385
    + 386
    + 387
    + 388
    + 389
    + 390
    + 391
    + 392
    + 393
    + 394
    + 395
    + 396
    + 397
    + 398
    + 399
    + 400
    + 401
    + 402
    + 403
    + 404
    + 405
    + 406
    + 407
    + 408
    + 409
    + 410
    + 411
    + 412
    + 413
    + 414
    + 415
    + 416
    + 417
    + 418
    + 419
    + 420
    + 421
    + 422
    + 423
    + 424
    + 425
    + 426
    + 427
    + 428
    + 429
    + 430
    + 431
    + 432
    + 433
    + 434
    + 435
    + 436
    + 437
    + 438
    + 439
    + 440
    + 441
    + 442
    + 443
    + 444
    + 445
    + 446
    + 447
    + 448
    + 449
    + 450
    + 451
    + 452
    + 453
    + 454
    + 455
    + 456
    + 457
    + 458
    + 459
    + 460
    + 461
    + 462
    + 463
    + 464
    + 465
    + 466
    + 467
    + 468
    + 469
    + 470
    + 471
    + 472
    + 473
    + 474
    + 475
    + 476
    + 477
    + 478
    + 479
    + 480
    + 481
    + 482
    + 483
    + 484
    + 485
    + 486
    + 487
    + 488
    + 489
    + 490
    + 491
    + 492
    + 493
    + 494
    + 495
    + 496
    + 497
    + 498
    + 499
    + 500
    + 501
    + 502
    + 503
    + 504
    + 505
    + 506
    + 507
    + 508
    + 509
    + 510
    + 511
    + 512
    + 513
    + 514
    + 515
    + 516
    + 517
    + 518
    + 519
    + 520
    + 521
    + 522
    + 523
    + 524
    + 525
    + 526
    + 527
    + 528
    + 529
    + 530
    + 531
    + 532
    + 533
    + 534
    + 535
    + 536
    + 537
    + 538
    + 539
    + 540
    + 541
    + 542
    + 543
    + 544
    + 545
    + 546
    + 547
    + 548
    + 549
    + 550
    + 551
    + 552
    + 553
    + 554
    + 555
    + 556
    + 557
    + 558
    + 559
    + 560
    + 561
    + 562
    + 563
    + 564
    + 565
    + 566
    + 567
    + 568
    + 569
    + 570
    + 571
    + 572
    + 573
    + 574
    + 575
    + 576
    + 577
    + 578
    + 579
    + 580
    + 581
    + 582
    + 583
    + 584
    + 585
    + 586
    + 587
    + 588
    + 589
    + 590
    + 591
    + 592
    + 593
    + 594
    + 595
    + 596
    + 597
    + 598
    + 599
    + 600
    + 601
    + 602
    + 603
    + 604
    + 605
    + 606
    + 607
    + 608
    + 609
    + 610
    + 611
    + 612
    + 613
    + 614
    + 615
    + 616
    + 617
    + 618
    + 619
    + 620
    + 621
    + 622
    + 623
    + 624
    + 625
    + 626
    + 627
    + 628
    + 629
    + 630
    + 631
    + 632
    + 633
    + 634
    + 635
    + 636
    + 637
    + 638
    + 639
    + 640
    + 641
    + 642
    + 643
    + 644
    + 645
    + 646
    + 647
    + 648
    + 649
    + 650
    + 651
    + 652
    + 653
    + 654
    + 655
    + 656
    + 657
    + 658
    + 659
    + 660
    + 661
    + 662
    + 663
    + 664
    + 665
    + 666
    + 667
    + 668
    + 669
    + 670
    + 671
    + 672
    + 673
    + 674
    + 675
    + 676
    + 677
    + 678
    + 679
    + 680
    + 681
    + 682
    + 683
    + 684
    + 685
    + 686
    + 687
    + 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
    + 972
    + 973
    + 974
    + 975
    + 976
    + 977
    + 978
    + 979
    + 980
    + 981
    + 982
    + 983
    + 984
    + 985
    + 986
    + 987
    + 988
    + 989
    + 990
    + 991
    + 992
    + 993
    + 994
    + 995
    + 996
    + 997
    + 998
    + 999
    +1000
     
    // Bitcoin Dev Kit
     // Written in 2021 by Riccardo Casatta <riccardo@casatta.it>
     //
    @@ -1081,7 +1084,7 @@
     }
     
     /// RpcBlockchain configuration options
    -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
    +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
     pub struct RpcConfig {
         /// The bitcoin node url
         pub url: String,
    @@ -1100,7 +1103,7 @@
     /// In general, BDK tries to sync `scriptPubKey`s cached in [`crate::database::Database`] with
     /// `scriptPubKey`s imported in the Bitcoin Core Wallet. These parameters are used for determining
     /// how the `importdescriptors` RPC calls are to be made.
    -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
    +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
     pub struct RpcSyncParams {
         /// The minimum number of scripts to scan for on initial sync.
         pub start_script_count: usize,
    @@ -1171,7 +1174,7 @@
                 .estimate_smart_fee(target as u16, None)?
                 .fee_rate
                 .ok_or(Error::FeeRateUnavailable)?
    -            .as_sat() as f64;
    +            .to_sat() as f64;
     
             Ok(FeeRate::from_sat_per_vb((sat_per_kb / 1000f64) as f32))
         }
    @@ -1414,7 +1417,12 @@
                     updated = true;
                     TransactionDetails {
                         txid: tx_res.info.txid,
    -                    ..Default::default()
    +                    transaction: None,
    +
    +                    received: 0,
    +                    sent: 0,
    +                    fee: None,
    +                    confirmation_time: None,
                     }
                 });
     
    @@ -1434,7 +1442,7 @@
                 // update fee (if needed)
                 if let (None, Some(new_fee)) = (db_tx.fee, tx_res.detail.fee) {
                     updated = true;
    -                db_tx.fee = Some(new_fee.as_sat().unsigned_abs());
    +                db_tx.fee = Some(new_fee.to_sat().unsigned_abs());
                 }
     
                 // update confirmation time (if needed)
    @@ -1607,7 +1615,7 @@
             LocalUtxo {
                 outpoint: OutPoint::new(entry.txid, entry.vout),
                 txout: TxOut {
    -                value: entry.amount.as_sat(),
    +                value: entry.amount.to_sat(),
                     script_pubkey: entry.script_pub_key,
                 },
                 keychain,
    @@ -1877,15 +1885,13 @@
     mod test {
         use super::*;
         use crate::{
    -        descriptor::{into_wallet_descriptor_checked, AsDerived},
    -        testutils::blockchain_tests::TestClient,
    +        descriptor::into_wallet_descriptor_checked, testutils::blockchain_tests::TestClient,
             wallet::utils::SecpCtx,
         };
     
         use bitcoin::{Address, Network};
         use bitcoincore_rpc::RpcApi;
         use log::LevelFilter;
    -    use miniscript::DescriptorTrait;
     
         crate::bdk_blockchain_tests! {
             fn test_instance(test_client: &TestClient) -> RpcBlockchain {
    @@ -1962,7 +1968,7 @@
     
             // generate scripts (1 tx per script)
             let scripts = (0..TX_COUNT)
    -            .map(|index| desc.as_derived(index, &secp).script_pubkey())
    +            .map(|index| desc.at_derivation_index(index).script_pubkey())
                 .collect::<Vec<_>>();
     
             // import scripts and wait
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/database/memory.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/database/memory.rs.html
    index 1e78d59c94..d6b4fd8027 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/database/memory.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/database/memory.rs.html
    @@ -1194,7 +1194,7 @@
             }
             let tx = $crate::bitcoin::Transaction {
                 version: 1,
    -            lock_time: 0,
    +            lock_time: bitcoin::PackedLockTime(0),
                 input,
                 output: tx_meta
                     .output
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/derived.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/derived.rs.html
    deleted file mode 100644
    index da5799a0ae..0000000000
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/derived.rs.html
    +++ /dev/null
    @@ -1,430 +0,0 @@
    -derived.rs - source
    -    
    -    
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 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
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -
    // Bitcoin Dev Kit
    -// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
    -//
    -// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    -//
    -// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
    -// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
    -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
    -// You may not use this file except in accordance with one or both of these
    -// licenses.
    -
    -//! Derived descriptor keys
    -//!
    -//! The [`DerivedDescriptorKey`] type is a wrapper over the standard [`DescriptorPublicKey`] which
    -//! guarantees that all the extended keys have a fixed derivation path, i.e. all the wildcards have
    -//! been replaced by actual derivation indexes.
    -//!
    -//! The [`AsDerived`] trait provides a quick way to derive descriptors to obtain a
    -//! `Descriptor<DerivedDescriptorKey>` type. This, in turn, can be used to derive public
    -//! keys for arbitrary derivation indexes.
    -//!
    -//! Combining this with [`Wallet::get_signers`], secret keys can also be derived.
    -//!
    -//! # Example
    -//!
    -//! ```
    -//! # use std::str::FromStr;
    -//! # use bitcoin::secp256k1::Secp256k1;
    -//! use bdk::descriptor::{AsDerived, DescriptorPublicKey};
    -//! use bdk::miniscript::{ToPublicKey, TranslatePk, MiniscriptKey};
    -//!
    -//! let secp = Secp256k1::gen_new();
    -//!
    -//! let key = DescriptorPublicKey::from_str("[aa600a45/84'/0'/0']tpubDCbDXFKoLTQp44wQuC12JgSn5g9CWGjZdpBHeTqyypZ4VvgYjTJmK9CkyR5bFvG9f4PutvwmvpYCLkFx2rpx25hiMs4sUgxJveW8ZzSAVAc/0/*")?;
    -//! let (descriptor, _, _) = bdk::descriptor!(wpkh(key))?;
    -//!
    -//! // derived: wpkh([aa600a45/84'/0'/0']tpubDCbDXFKoLTQp44wQuC12JgSn5g9CWGjZdpBHeTqyypZ4VvgYjTJmK9CkyR5bFvG9f4PutvwmvpYCLkFx2rpx25hiMs4sUgxJveW8ZzSAVAc/0/42)#3ladd0t2
    -//! let derived = descriptor.as_derived(42, &secp);
    -//! println!("derived: {}", derived);
    -//!
    -//! // with_pks: wpkh(02373ecb54c5e83bd7e0d40adf78b65efaf12fafb13571f0261fc90364eee22e1e)#p4jjgvll
    -//! let with_pks = derived.translate_pk_infallible(|pk| pk.to_public_key(), |pkh| pkh.to_public_key().to_pubkeyhash());
    -//! println!("with_pks: {}", with_pks);
    -//! # Ok::<(), Box<dyn std::error::Error>>(())
    -//! ```
    -//!
    -//! [`Wallet::get_signers`]: crate::wallet::Wallet::get_signers
    -
    -use std::cmp::Ordering;
    -use std::fmt;
    -use std::hash::{Hash, Hasher};
    -use std::ops::Deref;
    -
    -use bitcoin::hashes::hash160;
    -use bitcoin::{PublicKey, XOnlyPublicKey};
    -
    -use miniscript::descriptor::{DescriptorSinglePub, SinglePubKey, Wildcard};
    -use miniscript::{Descriptor, DescriptorPublicKey, MiniscriptKey, ToPublicKey, TranslatePk};
    -
    -use crate::wallet::utils::SecpCtx;
    -
    -/// Extended [`DescriptorPublicKey`] that has been derived
    -///
    -/// Derived keys are guaranteed to never contain wildcards of any kind
    -#[derive(Debug, Clone)]
    -pub struct DerivedDescriptorKey<'s>(DescriptorPublicKey, &'s SecpCtx);
    -
    -impl<'s> DerivedDescriptorKey<'s> {
    -    /// Construct a new derived key
    -    ///
    -    /// Panics if the key is wildcard
    -    pub fn new(key: DescriptorPublicKey, secp: &'s SecpCtx) -> DerivedDescriptorKey<'s> {
    -        if let DescriptorPublicKey::XPub(xpub) = &key {
    -            assert!(xpub.wildcard == Wildcard::None)
    -        }
    -
    -        DerivedDescriptorKey(key, secp)
    -    }
    -}
    -
    -impl<'s> Deref for DerivedDescriptorKey<'s> {
    -    type Target = DescriptorPublicKey;
    -
    -    fn deref(&self) -> &Self::Target {
    -        &self.0
    -    }
    -}
    -
    -impl<'s> PartialEq for DerivedDescriptorKey<'s> {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.0 == other.0
    -    }
    -}
    -
    -impl<'s> Eq for DerivedDescriptorKey<'s> {}
    -
    -impl<'s> PartialOrd for DerivedDescriptorKey<'s> {
    -    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
    -        self.0.partial_cmp(&other.0)
    -    }
    -}
    -
    -impl<'s> Ord for DerivedDescriptorKey<'s> {
    -    fn cmp(&self, other: &Self) -> Ordering {
    -        self.0.cmp(&other.0)
    -    }
    -}
    -
    -impl<'s> fmt::Display for DerivedDescriptorKey<'s> {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        self.0.fmt(f)
    -    }
    -}
    -
    -impl<'s> Hash for DerivedDescriptorKey<'s> {
    -    fn hash<H: Hasher>(&self, state: &mut H) {
    -        self.0.hash(state);
    -    }
    -}
    -
    -impl<'s> MiniscriptKey for DerivedDescriptorKey<'s> {
    -    type Hash = Self;
    -
    -    fn to_pubkeyhash(&self) -> Self::Hash {
    -        DerivedDescriptorKey(self.0.to_pubkeyhash(), self.1)
    -    }
    -
    -    fn is_uncompressed(&self) -> bool {
    -        self.0.is_uncompressed()
    -    }
    -}
    -
    -impl<'s> ToPublicKey for DerivedDescriptorKey<'s> {
    -    fn to_public_key(&self) -> PublicKey {
    -        match &self.0 {
    -            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    -                key: SinglePubKey::XOnly(_),
    -                ..
    -            }) => panic!("Found x-only public key in non-tr descriptor"),
    -            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    -                key: SinglePubKey::FullKey(ref pk),
    -                ..
    -            }) => *pk,
    -            DescriptorPublicKey::XPub(ref xpub) => PublicKey::new(
    -                xpub.xkey
    -                    .derive_pub(self.1, &xpub.derivation_path)
    -                    .expect("Shouldn't fail, only normal derivations")
    -                    .public_key,
    -            ),
    -        }
    -    }
    -
    -    fn to_x_only_pubkey(&self) -> XOnlyPublicKey {
    -        match &self.0 {
    -            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    -                key: SinglePubKey::XOnly(ref pk),
    -                ..
    -            }) => *pk,
    -            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    -                key: SinglePubKey::FullKey(ref pk),
    -                ..
    -            }) => XOnlyPublicKey::from(pk.inner),
    -            DescriptorPublicKey::XPub(ref xpub) => XOnlyPublicKey::from(
    -                xpub.xkey
    -                    .derive_pub(self.1, &xpub.derivation_path)
    -                    .expect("Shouldn't fail, only normal derivations")
    -                    .public_key,
    -            ),
    -        }
    -    }
    -
    -    fn hash_to_hash160(hash: &Self::Hash) -> hash160::Hash {
    -        hash.to_public_key().to_pubkeyhash()
    -    }
    -}
    -
    -/// Utilities to derive descriptors
    -///
    -/// Check out the [module level] documentation for more.
    -///
    -/// [module level]: crate::descriptor::derived
    -pub trait AsDerived {
    -    /// Derive a descriptor and transform all of its keys to `DerivedDescriptorKey`
    -    fn as_derived<'s>(&self, index: u32, secp: &'s SecpCtx)
    -        -> Descriptor<DerivedDescriptorKey<'s>>;
    -
    -    /// Transform the keys into `DerivedDescriptorKey`.
    -    ///
    -    /// Panics if the descriptor is not "fixed", i.e. if it's derivable
    -    fn as_derived_fixed<'s>(&self, secp: &'s SecpCtx) -> Descriptor<DerivedDescriptorKey<'s>>;
    -}
    -
    -impl AsDerived for Descriptor<DescriptorPublicKey> {
    -    fn as_derived<'s>(
    -        &self,
    -        index: u32,
    -        secp: &'s SecpCtx,
    -    ) -> Descriptor<DerivedDescriptorKey<'s>> {
    -        self.derive(index).translate_pk_infallible(
    -            |key| DerivedDescriptorKey::new(key.clone(), secp),
    -            |key| DerivedDescriptorKey::new(key.clone(), secp),
    -        )
    -    }
    -
    -    fn as_derived_fixed<'s>(&self, secp: &'s SecpCtx) -> Descriptor<DerivedDescriptorKey<'s>> {
    -        assert!(!self.is_deriveable());
    -
    -        self.as_derived(0, secp)
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/dsl.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/dsl.rs.html index 39b5127422..2b4608c6d1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/dsl.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/dsl.rs.html @@ -1224,10 +1224,6 @@ 1217 1218 1219 -1220 -1221 -1222 -1223
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -1930,10 +1926,10 @@
             $crate::keys::make_pkh($key, &secp)
         });
         ( after ( $value:expr ) ) => ({
    -        $crate::impl_leaf_opcode_value!(After, $value)
    +        $crate::impl_leaf_opcode_value!(After, $crate::bitcoin::PackedLockTime($value)) // TODO!! https://github.com/rust-bitcoin/rust-bitcoin/issues/1302
         });
         ( older ( $value:expr ) ) => ({
    -        $crate::impl_leaf_opcode_value!(Older, $value)
    +        $crate::impl_leaf_opcode_value!(Older, $crate::bitcoin::Sequence($value)) // TODO!!
         });
         ( sha256 ( $hash:expr ) ) => ({
             $crate::impl_leaf_opcode_value!(Sha256, $hash)
    @@ -2025,7 +2021,7 @@
     mod test {
         use bitcoin::hashes::hex::ToHex;
         use bitcoin::secp256k1::Secp256k1;
    -    use miniscript::descriptor::{DescriptorPublicKey, DescriptorTrait, KeyMap};
    +    use miniscript::descriptor::{DescriptorPublicKey, KeyMap};
         use miniscript::{Descriptor, Legacy, Segwitv0};
     
         use std::str::FromStr;
    @@ -2036,8 +2032,6 @@
         use bitcoin::util::bip32;
         use bitcoin::PrivateKey;
     
    -    use crate::descriptor::derived::AsDerived;
    -
         // test the descriptor!() macro
     
         // verify descriptor generates expected script(s) (if bare or pk) or address(es)
    @@ -2047,17 +2041,15 @@
             is_fixed: bool,
             expected: &[&str],
         ) {
    -        let secp = Secp256k1::new();
    -
             let (desc, _key_map, _networks) = desc.unwrap();
             assert_eq!(desc.is_witness(), is_witness);
    -        assert_eq!(!desc.is_deriveable(), is_fixed);
    +        assert_eq!(!desc.has_wildcard(), is_fixed);
             for i in 0..expected.len() {
                 let index = i as u32;
    -            let child_desc = if !desc.is_deriveable() {
    -                desc.as_derived_fixed(&secp)
    +            let child_desc = if !desc.has_wildcard() {
    +                desc.at_derivation_index(0)
                 } else {
    -                desc.as_derived(index, &secp)
    +                desc.at_derivation_index(index)
                 };
                 let address = child_desc.address(Regtest);
                 if let Ok(address) = address {
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/mod.rs.html
    index be0ad73f60..2c5cf7e50d 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/mod.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/mod.rs.html
    @@ -857,89 +857,6 @@
     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
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -957,24 +874,22 @@
     //! from [`miniscript`].
     
     use std::collections::BTreeMap;
    -use std::ops::Deref;
     
     use bitcoin::util::bip32::{ChildNumber, DerivationPath, ExtendedPubKey, Fingerprint, KeySource};
     use bitcoin::util::{psbt, taproot};
     use bitcoin::{secp256k1, PublicKey, XOnlyPublicKey};
    -use bitcoin::{Network, Script, TxOut};
    +use bitcoin::{Network, TxOut};
     
    -use miniscript::descriptor::{DescriptorType, InnerXKey, SinglePubKey};
    +use miniscript::descriptor::{DefiniteDescriptorKey, DescriptorType, InnerXKey, SinglePubKey};
     pub use miniscript::{
         descriptor::DescriptorXKey, descriptor::KeyMap, descriptor::Wildcard, Descriptor,
         DescriptorPublicKey, Legacy, Miniscript, ScriptContext, Segwitv0,
     };
    -use miniscript::{DescriptorTrait, ForEachKey, TranslatePk};
    +use miniscript::{ForEachKey, MiniscriptKey, TranslatePk};
     
     use crate::descriptor::policy::BuildSatisfaction;
     
     pub mod checksum;
    -pub mod derived;
     #[doc(hidden)]
     pub mod dsl;
     pub mod error;
    @@ -982,7 +897,6 @@
     pub mod template;
     
     pub use self::checksum::get_checksum;
    -pub use self::derived::{AsDerived, DerivedDescriptorKey};
     pub use self::error::Error as DescriptorError;
     pub use self::policy::Policy;
     use self::template::DescriptorTemplateOut;
    @@ -994,7 +908,7 @@
     pub type ExtendedDescriptor = Descriptor<DescriptorPublicKey>;
     
     /// Alias for a [`Descriptor`] that contains extended **derived** keys
    -pub type DerivedDescriptor<'s> = Descriptor<DerivedDescriptorKey<'s>>;
    +pub type DerivedDescriptor = Descriptor<DefiniteDescriptorKey>;
     
     /// Alias for the type of maps that represent derivation paths in a [`psbt::Input`] or
     /// [`psbt::Output`]
    @@ -1074,28 +988,76 @@
         ) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError> {
             use crate::keys::DescriptorKey;
     
    -        let check_key = |pk: &DescriptorPublicKey| {
    -            let (pk, _, networks) = if self.0.is_witness() {
    -                let descriptor_key: DescriptorKey<miniscript::Segwitv0> =
    -                    pk.clone().into_descriptor_key()?;
    -                descriptor_key.extract(secp)?
    -            } else {
    -                let descriptor_key: DescriptorKey<miniscript::Legacy> =
    -                    pk.clone().into_descriptor_key()?;
    -                descriptor_key.extract(secp)?
    -            };
    -
    -            if networks.contains(&network) {
    -                Ok(pk)
    -            } else {
    -                Err(DescriptorError::Key(KeyError::InvalidNetwork))
    +        struct Translator<'s, 'd> {
    +            secp: &'s SecpCtx,
    +            descriptor: &'d ExtendedDescriptor,
    +            network: Network,
    +        }
    +
    +        impl<'s, 'd>
    +            miniscript::Translator<DescriptorPublicKey, miniscript::DummyKey, DescriptorError>
    +            for Translator<'s, 'd>
    +        {
    +            fn pk(
    +                &mut self,
    +                pk: &DescriptorPublicKey,
    +            ) -> Result<miniscript::DummyKey, DescriptorError> {
    +                let secp = &self.secp;
    +
    +                let (_, _, networks) = if self.descriptor.is_taproot() {
    +                    let descriptor_key: DescriptorKey<miniscript::Tap> =
    +                        pk.clone().into_descriptor_key()?;
    +                    descriptor_key.extract(secp)?
    +                } else if self.descriptor.is_witness() {
    +                    let descriptor_key: DescriptorKey<miniscript::Segwitv0> =
    +                        pk.clone().into_descriptor_key()?;
    +                    descriptor_key.extract(secp)?
    +                } else {
    +                    let descriptor_key: DescriptorKey<miniscript::Legacy> =
    +                        pk.clone().into_descriptor_key()?;
    +                    descriptor_key.extract(secp)?
    +                };
    +
    +                if networks.contains(&self.network) {
    +                    Ok(miniscript::DummyKey)
    +                } else {
    +                    Err(DescriptorError::Key(KeyError::InvalidNetwork))
    +                }
                 }
    -        };
    +            fn sha256(
    +                &mut self,
    +                _sha256: &<DescriptorPublicKey as MiniscriptKey>::Sha256,
    +            ) -> Result<miniscript::DummySha256Hash, DescriptorError> {
    +                Ok(Default::default())
    +            }
    +            fn hash256(
    +                &mut self,
    +                _hash256: &<DescriptorPublicKey as MiniscriptKey>::Hash256,
    +            ) -> Result<miniscript::DummyHash256Hash, DescriptorError> {
    +                Ok(Default::default())
    +            }
    +            fn ripemd160(
    +                &mut self,
    +                _ripemd160: &<DescriptorPublicKey as MiniscriptKey>::Ripemd160,
    +            ) -> Result<miniscript::DummyRipemd160Hash, DescriptorError> {
    +                Ok(Default::default())
    +            }
    +            fn hash160(
    +                &mut self,
    +                _hash160: &<DescriptorPublicKey as MiniscriptKey>::Hash160,
    +            ) -> Result<miniscript::DummyHash160Hash, DescriptorError> {
    +                Ok(Default::default())
    +            }
    +        }
     
             // check the network for the keys
    -        let translated = self.0.translate_pk(check_key, check_key)?;
    +        self.0.translate_pk(&mut Translator {
    +            secp,
    +            network,
    +            descriptor: &self.0,
    +        })?;
     
    -        Ok((translated, self.1))
    +        Ok(self)
         }
     }
     
    @@ -1105,10 +1067,17 @@
             _secp: &SecpCtx,
             network: Network,
         ) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError> {
    -        let valid_networks = &self.2;
    +        struct Translator {
    +            network: Network,
    +        }
     
    -        let fix_key = |pk: &DescriptorPublicKey| {
    -            if valid_networks.contains(&network) {
    +        impl miniscript::Translator<DescriptorPublicKey, DescriptorPublicKey, DescriptorError>
    +            for Translator
    +        {
    +            fn pk(
    +                &mut self,
    +                pk: &DescriptorPublicKey,
    +            ) -> Result<DescriptorPublicKey, DescriptorError> {
                     // workaround for xpubs generated by other key types, like bip39: since when the
                     // conversion is made one network has to be chosen, what we generally choose
                     // "mainnet", but then override the set of valid networks to specify that all of
    @@ -1117,7 +1086,7 @@
                     let pk = match pk {
                         DescriptorPublicKey::XPub(ref xpub) => {
                             let mut xpub = xpub.clone();
    -                        xpub.xkey.network = network;
    +                        xpub.xkey.network = self.network;
     
                             DescriptorPublicKey::XPub(xpub)
                         }
    @@ -1125,13 +1094,20 @@
                     };
     
                     Ok(pk)
    -            } else {
    -                Err(DescriptorError::Key(KeyError::InvalidNetwork))
                 }
    -        };
    +            miniscript::translate_hash_clone!(
    +                DescriptorPublicKey,
    +                DescriptorPublicKey,
    +                DescriptorError
    +            );
    +        }
    +
    +        if !self.2.contains(&network) {
    +            return Err(DescriptorError::Key(KeyError::InvalidNetwork));
    +        }
     
             // fixup the network for keys that need it
    -        let translated = self.0.translate_pk(fix_key, fix_key)?;
    +        let translated = self.0.translate_pk(&mut Translator { network })?;
     
             Ok((translated, self.1))
         }
    @@ -1152,7 +1128,7 @@
                 derivation_path,
                 wildcard,
                 ..
    -        }) = k.as_key()
    +        }) = k
             {
                 return *wildcard == Wildcard::Hardened
                     || derivation_path.into_iter().any(ChildNumber::is_hardened);
    @@ -1199,7 +1175,6 @@
     }
     
     pub(crate) trait XKeyUtils {
    -    fn full_path(&self, append: &[ChildNumber]) -> DerivationPath;
         fn root_fingerprint(&self, secp: &SecpCtx) -> Fingerprint;
     }
     
    @@ -1207,27 +1182,6 @@
     where
         T: InnerXKey,
     {
    -    fn full_path(&self, append: &[ChildNumber]) -> DerivationPath {
    -        let full_path = match self.origin {
    -            Some((_, ref path)) => path
    -                .into_iter()
    -                .chain(self.derivation_path.into_iter())
    -                .cloned()
    -                .collect(),
    -            None => self.derivation_path.clone(),
    -        };
    -
    -        if self.wildcard != Wildcard::None {
    -            full_path
    -                .into_iter()
    -                .chain(append.iter())
    -                .cloned()
    -                .collect()
    -        } else {
    -            full_path
    -        }
    -    }
    -
         fn root_fingerprint(&self, secp: &SecpCtx) -> Fingerprint {
             match self.origin {
                 Some((fingerprint, _)) => fingerprint,
    @@ -1236,11 +1190,6 @@
         }
     }
     
    -pub(crate) trait DerivedDescriptorMeta {
    -    fn get_hd_keypaths(&self, secp: &SecpCtx) -> HdKeyPaths;
    -    fn get_tap_key_origins(&self, secp: &SecpCtx) -> TapKeyOrigins;
    -}
    -
     pub(crate) trait DescriptorMeta {
         fn is_witness(&self) -> bool;
         fn is_taproot(&self) -> bool;
    @@ -1249,63 +1198,23 @@
             &self,
             hd_keypaths: &HdKeyPaths,
             secp: &'s SecpCtx,
    -    ) -> Option<DerivedDescriptor<'s>>;
    +    ) -> Option<DerivedDescriptor>;
         fn derive_from_tap_key_origins<'s>(
             &self,
             tap_key_origins: &TapKeyOrigins,
             secp: &'s SecpCtx,
    -    ) -> Option<DerivedDescriptor<'s>>;
    +    ) -> Option<DerivedDescriptor>;
         fn derive_from_psbt_key_origins<'s>(
             &self,
             key_origins: BTreeMap<Fingerprint, (&DerivationPath, SinglePubKey)>,
             secp: &'s SecpCtx,
    -    ) -> Option<DerivedDescriptor<'s>>;
    +    ) -> Option<DerivedDescriptor>;
         fn derive_from_psbt_input<'s>(
             &self,
             psbt_input: &psbt::Input,
             utxo: Option<TxOut>,
             secp: &'s SecpCtx,
    -    ) -> Option<DerivedDescriptor<'s>>;
    -}
    -
    -pub(crate) trait DescriptorScripts {
    -    fn psbt_redeem_script(&self) -> Option<Script>;
    -    fn psbt_witness_script(&self) -> Option<Script>;
    -}
    -
    -impl<'s> DescriptorScripts for DerivedDescriptor<'s> {
    -    fn psbt_redeem_script(&self) -> Option<Script> {
    -        match self.desc_type() {
    -            DescriptorType::ShWpkh => Some(self.explicit_script().unwrap()),
    -            DescriptorType::ShWsh => Some(self.explicit_script().unwrap().to_v0_p2wsh()),
    -            DescriptorType::Sh => Some(self.explicit_script().unwrap()),
    -            DescriptorType::Bare => Some(self.explicit_script().unwrap()),
    -            DescriptorType::ShSortedMulti => Some(self.explicit_script().unwrap()),
    -            DescriptorType::ShWshSortedMulti => Some(self.explicit_script().unwrap().to_v0_p2wsh()),
    -            DescriptorType::Pkh
    -            | DescriptorType::Wpkh
    -            | DescriptorType::Tr
    -            | DescriptorType::Wsh
    -            | DescriptorType::WshSortedMulti => None,
    -        }
    -    }
    -
    -    fn psbt_witness_script(&self) -> Option<Script> {
    -        match self.desc_type() {
    -            DescriptorType::Wsh => Some(self.explicit_script().unwrap()),
    -            DescriptorType::ShWsh => Some(self.explicit_script().unwrap()),
    -            DescriptorType::WshSortedMulti | DescriptorType::ShWshSortedMulti => {
    -                Some(self.explicit_script().unwrap())
    -            }
    -            DescriptorType::Bare
    -            | DescriptorType::Sh
    -            | DescriptorType::Pkh
    -            | DescriptorType::Wpkh
    -            | DescriptorType::ShSortedMulti
    -            | DescriptorType::Tr
    -            | DescriptorType::ShWpkh => None,
    -        }
    -    }
    +    ) -> Option<DerivedDescriptor>;
     }
     
     impl DescriptorMeta for ExtendedDescriptor {
    @@ -1329,7 +1238,7 @@
             let mut answer = Vec::new();
     
             self.for_each_key(|pk| {
    -            if let DescriptorPublicKey::XPub(xpub) = pk.as_key() {
    +            if let DescriptorPublicKey::XPub(xpub) = pk {
                     answer.push(xpub.clone());
                 }
     
    @@ -1343,7 +1252,7 @@
             &self,
             key_origins: BTreeMap<Fingerprint, (&DerivationPath, SinglePubKey)>,
             secp: &'s SecpCtx,
    -    ) -> Option<DerivedDescriptor<'s>> {
    +    ) -> Option<DerivedDescriptor> {
             // Ensure that deriving `xpub` with `path` yields `expected`
             let verify_key = |xpub: &DescriptorXKey<ExtendedPubKey>,
                               path: &DerivationPath,
    @@ -1365,7 +1274,7 @@
     
             // using `for_any_key` should make this stop as soon as we return `true`
             self.for_any_key(|key| {
    -            if let DescriptorPublicKey::XPub(xpub) = key.as_key().deref() {
    +            if let DescriptorPublicKey::XPub(xpub) = key {
                     // Check if the key matches one entry in our `key_origins`. If it does, `matches()` will
                     // return the "prefix" that matched, so we remove that prefix from the full path
                     // found in `key_origins` and save it in `derive_path`. We expect this to be a derivation
    @@ -1423,14 +1332,14 @@
                 false
             });
     
    -        path_found.map(|path| self.as_derived(path, secp))
    +        path_found.map(|path| self.at_derivation_index(path))
         }
     
         fn derive_from_hd_keypaths<'s>(
             &self,
             hd_keypaths: &HdKeyPaths,
             secp: &'s SecpCtx,
    -    ) -> Option<DerivedDescriptor<'s>> {
    +    ) -> Option<DerivedDescriptor> {
             // "Convert" an hd_keypaths map to the format required by `derive_from_psbt_key_origins`
             let key_origins = hd_keypaths
                 .iter()
    @@ -1448,7 +1357,7 @@
             &self,
             tap_key_origins: &TapKeyOrigins,
             secp: &'s SecpCtx,
    -    ) -> Option<DerivedDescriptor<'s>> {
    +    ) -> Option<DerivedDescriptor> {
             // "Convert" a tap_key_origins map to the format required by `derive_from_psbt_key_origins`
             let key_origins = tap_key_origins
                 .iter()
    @@ -1462,19 +1371,19 @@
             psbt_input: &psbt::Input,
             utxo: Option<TxOut>,
             secp: &'s SecpCtx,
    -    ) -> Option<DerivedDescriptor<'s>> {
    +    ) -> Option<DerivedDescriptor> {
             if let Some(derived) = self.derive_from_hd_keypaths(&psbt_input.bip32_derivation, secp) {
                 return Some(derived);
             }
             if let Some(derived) = self.derive_from_tap_key_origins(&psbt_input.tap_key_origins, secp) {
                 return Some(derived);
             }
    -        if self.is_deriveable() {
    +        if self.has_wildcard() {
                 // We can't try to bruteforce the derivation index, exit here
                 return None;
             }
     
    -        let descriptor = self.as_derived_fixed(secp);
    +        let descriptor = self.at_derivation_index(0);
             match descriptor.desc_type() {
                 // TODO: add pk() here
                 DescriptorType::Pkh
    @@ -1508,86 +1417,6 @@
         }
     }
     
    -impl<'s> DerivedDescriptorMeta for DerivedDescriptor<'s> {
    -    fn get_hd_keypaths(&self, secp: &SecpCtx) -> HdKeyPaths {
    -        let mut answer = BTreeMap::new();
    -        self.for_each_key(|key| {
    -            if let DescriptorPublicKey::XPub(xpub) = key.as_key().deref() {
    -                let derived_pubkey = xpub
    -                    .xkey
    -                    .derive_pub(secp, &xpub.derivation_path)
    -                    .expect("Derivation can't fail");
    -
    -                answer.insert(
    -                    derived_pubkey.public_key,
    -                    (xpub.root_fingerprint(secp), xpub.full_path(&[])),
    -                );
    -            }
    -
    -            true
    -        });
    -
    -        answer
    -    }
    -
    -    fn get_tap_key_origins(&self, secp: &SecpCtx) -> TapKeyOrigins {
    -        use miniscript::ToPublicKey;
    -
    -        let mut answer = BTreeMap::new();
    -        let mut insert_path = |pk: &DerivedDescriptorKey<'_>, lh| {
    -            let key_origin = match pk.deref() {
    -                DescriptorPublicKey::XPub(xpub) => {
    -                    Some((xpub.root_fingerprint(secp), xpub.full_path(&[])))
    -                }
    -                DescriptorPublicKey::SinglePub(_) => None,
    -            };
    -
    -            // If this is the internal key, we only insert the key origin if it's not None.
    -            // For keys found in the tap tree we always insert a key origin (because the signer
    -            // looks for it to know which leaves to sign for), even though it may be None
    -            match (lh, key_origin) {
    -                (None, Some(ko)) => {
    -                    answer
    -                        .entry(pk.to_x_only_pubkey())
    -                        .or_insert_with(|| (vec![], ko));
    -                }
    -                (Some(lh), origin) => {
    -                    answer
    -                        .entry(pk.to_x_only_pubkey())
    -                        .or_insert_with(|| (vec![], origin.unwrap_or_default()))
    -                        .0
    -                        .push(lh);
    -                }
    -                _ => {}
    -            }
    -        };
    -
    -        if let Descriptor::Tr(tr) = &self {
    -            // Internal key first, then iterate the scripts
    -            insert_path(tr.internal_key(), None);
    -
    -            for (_, ms) in tr.iter_scripts() {
    -                // Assume always the same leaf version
    -                let leaf_hash = taproot::TapLeafHash::from_script(
    -                    &ms.encode(),
    -                    taproot::LeafVersion::TapScript,
    -                );
    -
    -                for key in ms.iter_pk_pkh() {
    -                    let key = match key {
    -                        miniscript::miniscript::iter::PkPkh::PlainPubkey(pk) => pk,
    -                        miniscript::miniscript::iter::PkPkh::HashedPubkey(pk) => pk,
    -                    };
    -
    -                    insert_path(&key, Some(leaf_hash));
    -                }
    -            }
    -        }
    -
    -        answer
    -    }
    -}
    -
     #[cfg(test)]
     mod test {
         use std::str::FromStr;
    @@ -1859,7 +1688,7 @@
     
         #[test]
         fn test_sh_wsh_sortedmulti_redeemscript() {
    -        use super::{AsDerived, DescriptorScripts};
    +        use miniscript::psbt::PsbtInputExt;
     
             let secp = Secp256k1::new();
     
    @@ -1867,12 +1696,17 @@
             let (descriptor, _) =
                 into_wallet_descriptor_checked(descriptor, &secp, Network::Testnet).unwrap();
     
    -        let descriptor = descriptor.as_derived(0, &secp);
    +        let descriptor = descriptor.at_derivation_index(0);
     
             let script = Script::from_str("5321022f533b667e2ea3b36e21961c9fe9dca340fbe0af5210173a83ae0337ab20a57621026bb53a98e810bd0ee61a0ed1164ba6c024786d76554e793e202dc6ce9c78c4ea2102d5b8a7d66a41ffdb6f4c53d61994022e886b4f45001fb158b95c9164d45f8ca3210324b75eead2c1f9c60e8adeb5e7009fec7a29afcdb30d829d82d09562fe8bae8521032d34f8932200833487bd294aa219dcbe000b9f9b3d824799541430009f0fa55121037468f8ea99b6c64788398b5ad25480cad08f4b0d65be54ce3a55fd206b5ae4722103f72d3d96663b0ea99b0aeb0d7f273cab11a8de37885f1dddc8d9112adb87169357ae").unwrap();
     
    -        assert_eq!(descriptor.psbt_redeem_script(), Some(script.to_v0_p2wsh()));
    -        assert_eq!(descriptor.psbt_witness_script(), Some(script));
    +        let mut psbt_input = psbt::Input::default();
    +        psbt_input
    +            .update_with_descriptor_unchecked(&descriptor)
    +            .unwrap();
    +
    +        assert_eq!(psbt_input.redeem_script, Some(script.to_v0_p2wsh()));
    +        assert_eq!(psbt_input.witness_script, Some(script));
         }
     }
     
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/policy.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/policy.rs.html index 1a3dd1fc33..37f7c85553 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/policy.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/policy.rs.html @@ -1920,6 +1920,13 @@ 1913 1914 1915 +1916 +1917 +1918 +1919 +1920 +1921 +1922
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -1965,14 +1972,17 @@
     use serde::ser::SerializeMap;
     use serde::{Serialize, Serializer};
     
    -use bitcoin::hashes::*;
    +use bitcoin::hashes::{hash160, ripemd160, sha256};
     use bitcoin::util::bip32::Fingerprint;
    -use bitcoin::{PublicKey, XOnlyPublicKey};
    +use bitcoin::{LockTime, PublicKey, Sequence, XOnlyPublicKey};
     
     use miniscript::descriptor::{
    -    DescriptorPublicKey, DescriptorSinglePub, ShInner, SinglePubKey, SortedMultiVec, WshInner,
    +    DescriptorPublicKey, ShInner, SinglePub, SinglePubKey, SortedMultiVec, WshInner,
    +};
    +use miniscript::hash256;
    +use miniscript::{
    +    Descriptor, Miniscript, Satisfier, ScriptContext, SigType, Terminal, ToPublicKey,
     };
    -use miniscript::{Descriptor, Miniscript, MiniscriptKey, Satisfier, ScriptContext, Terminal};
     
     #[allow(unused_imports)]
     use log::{debug, error, info, trace};
    @@ -1980,7 +1990,7 @@
     use crate::descriptor::ExtractPolicy;
     use crate::keys::ExtScriptContext;
     use crate::wallet::signer::{SignerId, SignersContainer};
    -use crate::wallet::utils::{self, After, Older, SecpCtx};
    +use crate::wallet::utils::{After, Older, SecpCtx};
     
     use super::checksum::get_checksum;
     use super::error::Error;
    @@ -2003,11 +2013,11 @@
     impl PkOrF {
         fn from_key(k: &DescriptorPublicKey, secp: &SecpCtx) -> Self {
             match k {
    -            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    +            DescriptorPublicKey::Single(SinglePub {
                     key: SinglePubKey::FullKey(pk),
                     ..
                 }) => PkOrF::Pubkey(*pk),
    -            DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    +            DescriptorPublicKey::Single(SinglePub {
                     key: SinglePubKey::XOnly(pk),
                     ..
                 }) => PkOrF::XOnlyPubkey(*pk),
    @@ -2033,7 +2043,7 @@
         /// Double SHA256 preimage hash
         Hash256Preimage {
             /// The digest value
    -        hash: sha256d::Hash,
    +        hash: hash256::Hash,
         },
         /// RIPEMD160 preimage hash
         Ripemd160Preimage {
    @@ -2047,13 +2057,13 @@
         },
         /// Absolute timeclock timestamp
         AbsoluteTimelock {
    -        /// The timestamp value
    -        value: u32,
    +        /// The timelock value
    +        value: LockTime,
         },
         /// Relative timelock locktime
         RelativeTimelock {
    -        /// The locktime value
    -        value: u32,
    +        /// The timelock value
    +        value: Sequence,
         },
         /// Multi-signature public keys with threshold count
         Multisig {
    @@ -2360,32 +2370,30 @@
     }
     
     /// An extra condition that must be satisfied but that is out of control of the user
    -#[derive(Hash, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Default, Serialize)]
    +/// TODO: use `bitcoin::LockTime` and `bitcoin::Sequence`
    +#[derive(Hash, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Default, Serialize)]
     pub struct Condition {
         /// Optional CheckSequenceVerify condition
         #[serde(skip_serializing_if = "Option::is_none")]
    -    pub csv: Option<u32>,
    +    pub csv: Option<Sequence>,
         /// Optional timelock condition
         #[serde(skip_serializing_if = "Option::is_none")]
    -    pub timelock: Option<u32>,
    +    pub timelock: Option<LockTime>,
     }
     
     impl Condition {
    -    fn merge_nlocktime(a: u32, b: u32) -> Result<u32, PolicyError> {
    -        if (a < utils::BLOCKS_TIMELOCK_THRESHOLD) != (b < utils::BLOCKS_TIMELOCK_THRESHOLD) {
    +    fn merge_nlocktime(a: LockTime, b: LockTime) -> Result<LockTime, PolicyError> {
    +        if !a.is_same_unit(b) {
                 Err(PolicyError::MixedTimelockUnits)
    +        } else if a > b {
    +            Ok(a)
             } else {
    -            Ok(max(a, b))
    +            Ok(b)
             }
         }
     
    -    fn merge_nsequence(a: u32, b: u32) -> Result<u32, PolicyError> {
    -        let mask = utils::SEQUENCE_LOCKTIME_TYPE_FLAG | utils::SEQUENCE_LOCKTIME_MASK;
    -
    -        let a = a & mask;
    -        let b = b & mask;
    -
    -        if (a < utils::SEQUENCE_LOCKTIME_TYPE_FLAG) != (b < utils::SEQUENCE_LOCKTIME_TYPE_FLAG) {
    +    fn merge_nsequence(a: Sequence, b: Sequence) -> Result<Sequence, PolicyError> {
    +        if a.is_time_locked() != b.is_time_locked() {
                 Err(PolicyError::MixedTimelockUnits)
             } else {
                 Ok(max(a, b))
    @@ -2642,15 +2650,18 @@
     }
     
     fn signer_id(key: &DescriptorPublicKey, secp: &SecpCtx) -> SignerId {
    +    // For consistency we always compute the key hash in "ecdsa" form (with the leading sign
    +    // prefix) even if we are in a taproot descriptor. We just want some kind of unique identifier
    +    // for a key, so it doesn't really matter how the identifier is computed.
         match key {
    -        DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    +        DescriptorPublicKey::Single(SinglePub {
                 key: SinglePubKey::FullKey(pk),
                 ..
    -        }) => pk.to_pubkeyhash().into(),
    -        DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    +        }) => pk.to_pubkeyhash(SigType::Ecdsa).into(),
    +        DescriptorPublicKey::Single(SinglePub {
                 key: SinglePubKey::XOnly(pk),
                 ..
    -        }) => pk.to_pubkeyhash().into(),
    +        }) => pk.to_pubkeyhash(SigType::Ecdsa).into(),
             DescriptorPublicKey::XPub(xpub) => xpub.root_fingerprint(secp).into(),
         }
     }
    @@ -2701,7 +2712,7 @@
     ) -> bool {
         //TODO check signature validity
         psbt.inputs.iter().all(|input| match key {
    -        DescriptorPublicKey::SinglePub(DescriptorSinglePub { key, .. }) => check(input, key),
    +        DescriptorPublicKey::Single(SinglePub { key, .. }) => check(input, key),
             DescriptorPublicKey::XPub(xpub) => {
                 //TODO check actual derivation matches
                 match extract(input, xpub.root_fingerprint(secp)) {
    @@ -2813,10 +2824,13 @@
                     Some(Ctx::make_signature(pubkey_hash, signers, build_sat, secp))
                 }
                 Terminal::After(value) => {
    -                let mut policy: Policy = SatisfiableItem::AbsoluteTimelock { value: *value }.into();
    +                let mut policy: Policy = SatisfiableItem::AbsoluteTimelock {
    +                    value: value.into(),
    +                }
    +                .into();
                     policy.contribution = Satisfaction::Complete {
                         condition: Condition {
    -                        timelock: Some(*value),
    +                        timelock: Some(value.into()),
                             csv: None,
                         },
                     };
    @@ -2827,9 +2841,11 @@
                     } = build_sat
                     {
                         let after = After::new(Some(current_height), false);
    -                    let after_sat = Satisfier::<bitcoin::PublicKey>::check_after(&after, *value);
    -                    let inputs_sat = psbt_inputs_sat(psbt)
    -                        .all(|sat| Satisfier::<bitcoin::PublicKey>::check_after(&sat, *value));
    +                    let after_sat =
    +                        Satisfier::<bitcoin::PublicKey>::check_after(&after, value.into());
    +                    let inputs_sat = psbt_inputs_sat(psbt).all(|sat| {
    +                        Satisfier::<bitcoin::PublicKey>::check_after(&sat, value.into())
    +                    });
                         if after_sat && inputs_sat {
                             policy.satisfaction = policy.contribution.clone();
                         }
    @@ -2921,6 +2937,9 @@
     
                     Policy::make_thresh(mapped, threshold)?
                 }
    +
    +            // Unsupported
    +            Terminal::RawPkH(_) => None,
             })
         }
     }
    @@ -3046,14 +3065,12 @@
         use crate::descriptor::{ExtractPolicy, IntoWalletDescriptor};
     
         use super::*;
    -    use crate::descriptor::derived::AsDerived;
         use crate::descriptor::policy::SatisfiableItem::{EcdsaSignature, Multisig, Thresh};
         use crate::keys::{DescriptorKey, IntoDescriptorKey};
         use crate::wallet::signer::SignersContainer;
         use bitcoin::secp256k1::Secp256k1;
         use bitcoin::util::bip32;
         use bitcoin::Network;
    -    use miniscript::DescriptorTrait;
         use std::str::FromStr;
         use std::sync::Arc;
     
    @@ -3251,9 +3268,8 @@
             let (wallet_desc, keymap) = desc
                 .into_wallet_descriptor(&secp, Network::Testnet)
                 .unwrap();
    -        let single_key = wallet_desc.derive(0);
             let signers_container = Arc::new(SignersContainer::build(keymap, &wallet_desc, &secp));
    -        let policy = single_key
    +        let policy = wallet_desc
                 .extract_policy(&signers_container, BuildSatisfaction::None, &secp)
                 .unwrap()
                 .unwrap();
    @@ -3265,16 +3281,15 @@
             let (wallet_desc, keymap) = desc
                 .into_wallet_descriptor(&secp, Network::Testnet)
                 .unwrap();
    -        let single_key = wallet_desc.derive(0);
             let signers_container = Arc::new(SignersContainer::build(keymap, &wallet_desc, &secp));
    -        let policy = single_key
    +        let policy = wallet_desc
                 .extract_policy(&signers_container, BuildSatisfaction::None, &secp)
                 .unwrap()
                 .unwrap();
     
    -        assert!(matches!(&policy.item, EcdsaSignature(PkOrF::Fingerprint(f)) if f == &fingerprint));
    +        assert!(matches!(policy.item, EcdsaSignature(PkOrF::Fingerprint(f)) if f == fingerprint));
             assert!(
    -            matches!(&policy.contribution, Satisfaction::Complete {condition} if condition.csv == None && condition.timelock == None)
    +            matches!(policy.contribution, Satisfaction::Complete {condition} if condition.csv == None && condition.timelock == None)
             );
         }
     
    @@ -3290,21 +3305,20 @@
             let (wallet_desc, keymap) = desc
                 .into_wallet_descriptor(&secp, Network::Testnet)
                 .unwrap();
    -        let single_key = wallet_desc.derive(0);
             let signers_container = Arc::new(SignersContainer::build(keymap, &wallet_desc, &secp));
    -        let policy = single_key
    +        let policy = wallet_desc
                 .extract_policy(&signers_container, BuildSatisfaction::None, &secp)
                 .unwrap()
                 .unwrap();
     
             assert!(
    -            matches!(&policy.item, Multisig { keys, threshold } if threshold == &1
    +            matches!(policy.item, Multisig { keys, threshold } if threshold == 1
                 && keys[0] == PkOrF::Fingerprint(fingerprint0)
                 && keys[1] == PkOrF::Fingerprint(fingerprint1))
             );
             assert!(
    -            matches!(&policy.contribution, Satisfaction::PartialComplete { n, m, items, conditions, .. } if n == &2
    -             && m == &1
    +            matches!(policy.contribution, Satisfaction::PartialComplete { n, m, items, conditions, .. } if n == 2
    +             && m == 1
                  && items.len() == 2
                  && conditions.contains_key(&vec![0])
                  && conditions.contains_key(&vec![1])
    @@ -3349,8 +3363,8 @@
                  && m == &2
                  && items.len() == 3
                  && conditions.get(&vec![0,1]).unwrap().iter().next().unwrap().csv.is_none()
    -             && conditions.get(&vec![0,2]).unwrap().iter().next().unwrap().csv == Some(sequence)
    -             && conditions.get(&vec![1,2]).unwrap().iter().next().unwrap().csv == Some(sequence)
    +             && conditions.get(&vec![0,2]).unwrap().iter().next().unwrap().csv == Some(Sequence(sequence))
    +             && conditions.get(&vec![1,2]).unwrap().iter().next().unwrap().csv == Some(Sequence(sequence))
                 )
             );
         }
    @@ -3496,7 +3510,7 @@
                 .unwrap();
     
             let addr = wallet_desc
    -            .as_derived(0, &secp)
    +            .at_derivation_index(0)
                 .address(Network::Testnet)
                 .unwrap();
             assert_eq!(
    @@ -3568,7 +3582,7 @@
             let signers_container = Arc::new(SignersContainer::build(keymap, &wallet_desc, &secp));
     
             let addr = wallet_desc
    -            .as_derived(0, &secp)
    +            .at_derivation_index(0)
                 .address(Network::Testnet)
                 .unwrap();
             assert_eq!(
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/template.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/template.rs.html
    index b0d62e464d..8ed57c2e46 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/template.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/descriptor/template.rs.html
    @@ -771,10 +771,6 @@
     764
     765
     766
    -767
    -768
    -769
    -770
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -1245,12 +1241,10 @@
         use std::str::FromStr;
     
         use super::*;
    -    use crate::descriptor::derived::AsDerived;
         use crate::descriptor::{DescriptorError, DescriptorMeta};
         use crate::keys::ValidNetworks;
         use bitcoin::network::constants::Network::Regtest;
    -    use bitcoin::secp256k1::Secp256k1;
    -    use miniscript::descriptor::{DescriptorPublicKey, DescriptorTrait, KeyMap};
    +    use miniscript::descriptor::{DescriptorPublicKey, KeyMap};
         use miniscript::Descriptor;
     
         // BIP44 `pkh(key/44'/{0,1}'/0'/{0,1}/*)`
    @@ -1294,17 +1288,15 @@
             is_fixed: bool,
             expected: &[&str],
         ) {
    -        let secp = Secp256k1::new();
    -
             let (desc, _key_map, _networks) = desc.unwrap();
             assert_eq!(desc.is_witness(), is_witness);
    -        assert_eq!(!desc.is_deriveable(), is_fixed);
    +        assert_eq!(!desc.has_wildcard(), is_fixed);
             for i in 0..expected.len() {
                 let index = i as u32;
    -            let child_desc = if !desc.is_deriveable() {
    -                desc.as_derived_fixed(&secp)
    +            let child_desc = if !desc.has_wildcard() {
    +                desc.at_derivation_index(0)
                 } else {
    -                desc.as_derived(index, &secp)
    +                desc.at_derivation_index(index)
                 };
                 let address = child_desc.address(Regtest).unwrap();
                 assert_eq!(address.to_string(), *expected.get(i).unwrap());
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/error.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/error.rs.html
    index bd4185258c..487e0606ae 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/error.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/error.rs.html
    @@ -247,6 +247,14 @@
     240
     241
     242
    +243
    +244
    +245
    +246
    +247
    +248
    +249
    +250
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -261,7 +269,7 @@
     use std::fmt;
     
     use crate::bitcoin::Network;
    -use crate::{descriptor, wallet, wallet::address_validator};
    +use crate::{descriptor, wallet};
     use bitcoin::{OutPoint, Txid};
     
     /// Errors that can be thrown by the [`Wallet`](crate::wallet::Wallet)
    @@ -348,12 +356,12 @@
     
         /// Error related to the parsing and usage of descriptors
         Descriptor(crate::descriptor::error::Error),
    -    /// Error that can be returned to fail the validation of an address
    -    AddressValidator(crate::wallet::address_validator::AddressValidatorError),
         /// Encoding error
         Encode(bitcoin::consensus::encode::Error),
         /// Miniscript error
         Miniscript(miniscript::Error),
    +    /// Miniscript PSBT error
    +    MiniscriptPsbt(MiniscriptPsbtError),
         /// BIP32 error
         Bip32(bitcoin::util::bip32::Error),
         /// An ECDSA error
    @@ -398,6 +406,14 @@
         Rusqlite(rusqlite::Error),
     }
     
    +/// Errors returned by miniscript when updating inconsistent PSBTs
    +#[derive(Debug, Clone)]
    +pub enum MiniscriptPsbtError {
    +    Conversion(miniscript::descriptor::ConversionError),
    +    UtxoUpdate(miniscript::psbt::UtxoUpdateError),
    +    OutputUpdate(miniscript::psbt::OutputUpdateError),
    +}
    +
     /// Represents the last failed [`crate::blockchain::WalletSync`] sync attempt in which we were short
     /// on cached `scriptPubKey`s.
     #[derive(Debug)]
    @@ -430,7 +446,6 @@
     }
     
     impl_error!(descriptor::error::Error, Descriptor);
    -impl_error!(address_validator::AddressValidatorError, AddressValidator);
     impl_error!(descriptor::policy::PolicyError, InvalidPolicyPathError);
     impl_error!(wallet::signer::SignerError, Signer);
     
    @@ -447,6 +462,7 @@
     
     impl_error!(bitcoin::consensus::encode::Error, Encode);
     impl_error!(miniscript::Error, Miniscript);
    +impl_error!(MiniscriptPsbtError, MiniscriptPsbt);
     impl_error!(bitcoin::util::bip32::Error, Bip32);
     impl_error!(bitcoin::secp256k1::Error, Secp256k1);
     impl_error!(serde_json::Error, Json);
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/keys/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/keys/mod.rs.html
    index 7c9e37d8d8..2aa89b2ad0 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/keys/mod.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/keys/mod.rs.html
    @@ -1018,8 +1018,8 @@
     
     use miniscript::descriptor::{Descriptor, DescriptorXKey, Wildcard};
     pub use miniscript::descriptor::{
    -    DescriptorPublicKey, DescriptorSecretKey, DescriptorSinglePriv, DescriptorSinglePub, KeyMap,
    -    SinglePubKey, SortedMultiVec,
    +    DescriptorPublicKey, DescriptorSecretKey, KeyMap, SinglePriv, SinglePub, SinglePubKey,
    +    SortedMultiVec,
     };
     pub use miniscript::ScriptContext;
     use miniscript::{Miniscript, Terminal};
    @@ -1104,7 +1104,7 @@
                     let mut key_map = KeyMap::with_capacity(1);
     
                     let public = secret
    -                    .as_public(secp)
    +                    .to_public(secp)
                         .map_err(|e| miniscript::Error::Unexpected(e.to_string()))?;
                     key_map.insert(public.clone(), secret);
     
    @@ -1218,8 +1218,8 @@
     /// use bdk::bitcoin::PublicKey;
     ///
     /// use bdk::keys::{
    -///     mainnet_network, DescriptorKey, DescriptorPublicKey, DescriptorSinglePub,
    -///     IntoDescriptorKey, KeyError, ScriptContext, SinglePubKey,
    +///     mainnet_network, DescriptorKey, DescriptorPublicKey, IntoDescriptorKey, KeyError,
    +///     ScriptContext, SinglePub, SinglePubKey,
     /// };
     ///
     /// pub struct MyKeyType {
    @@ -1229,7 +1229,7 @@
     /// impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for MyKeyType {
     ///     fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
     ///         Ok(DescriptorKey::from_public(
    -///             DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    +///             DescriptorPublicKey::Single(SinglePub {
     ///                 origin: None,
     ///                 key: SinglePubKey::FullKey(self.pubkey),
     ///             }),
    @@ -1836,7 +1836,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
     impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorPublicKey {
         fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
             let networks = match self {
    -            DescriptorPublicKey::SinglePub(_) => any_network(),
    +            DescriptorPublicKey::Single(_) => any_network(),
                 DescriptorPublicKey::XPub(DescriptorXKey { xkey, .. })
                     if xkey.network == Network::Bitcoin =>
                 {
    @@ -1851,7 +1851,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
     
     impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for PublicKey {
         fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
    -        DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    +        DescriptorPublicKey::Single(SinglePub {
                 key: SinglePubKey::FullKey(self),
                 origin: None,
             })
    @@ -1861,7 +1861,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
     
     impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for XOnlyPublicKey {
         fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
    -        DescriptorPublicKey::SinglePub(DescriptorSinglePub {
    +        DescriptorPublicKey::Single(SinglePub {
                 key: SinglePubKey::XOnly(self),
                 origin: None,
             })
    @@ -1872,7 +1872,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
     impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorSecretKey {
         fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
             let networks = match &self {
    -            DescriptorSecretKey::SinglePriv(sk) if sk.key.network == Network::Bitcoin => {
    +            DescriptorSecretKey::Single(sk) if sk.key.network == Network::Bitcoin => {
                     mainnet_network()
                 }
                 DescriptorSecretKey::XPrv(DescriptorXKey { xkey, .. })
    @@ -1897,7 +1897,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
     
     impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for PrivateKey {
         fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
    -        DescriptorSecretKey::SinglePriv(DescriptorSinglePriv {
    +        DescriptorSecretKey::Single(SinglePriv {
                 key: self,
                 origin: None,
             })
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/lib.rs.html
    index fdeba228ab..7bbd293572 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/lib.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/lib.rs.html
    @@ -290,7 +290,6 @@
     283
     284
     285
    -286
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -566,7 +565,6 @@ fn main() -> Result<(), bdk::Error> {
     pub use descriptor::HdKeyPaths;
     pub use error::Error;
     pub use types::*;
    -pub use wallet::address_validator;
     pub use wallet::signer;
     pub use wallet::signer::SignOptions;
     pub use wallet::tx_builder::TxBuilder;
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/testutils/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/testutils/mod.rs.html
    index 08498fb453..836b1c1f9b 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/testutils/mod.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/testutils/mod.rs.html
    @@ -238,9 +238,6 @@
     231
     232
     233
    -234
    -235
    -236
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -344,25 +341,21 @@
     macro_rules! testutils {
         ( @external $descriptors:expr, $child:expr ) => ({
             use $crate::bitcoin::secp256k1::Secp256k1;
    -        use $crate::miniscript::descriptor::{Descriptor, DescriptorPublicKey, DescriptorTrait};
    -
    -        use $crate::descriptor::AsDerived;
    +        use $crate::miniscript::descriptor::{Descriptor, DescriptorPublicKey};
     
             let secp = Secp256k1::new();
     
             let parsed = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, &$descriptors.0).expect("Failed to parse descriptor in `testutils!(@external)`").0;
    -        parsed.as_derived($child, &secp).address(bitcoin::Network::Regtest).expect("No address form")
    +        parsed.at_derivation_index($child).address(bitcoin::Network::Regtest).expect("No address form")
         });
         ( @internal $descriptors:expr, $child:expr ) => ({
             use $crate::bitcoin::secp256k1::Secp256k1;
    -        use $crate::miniscript::descriptor::{Descriptor, DescriptorPublicKey, DescriptorTrait};
    -
    -        use $crate::descriptor::AsDerived;
    +        use $crate::miniscript::descriptor::{Descriptor, DescriptorPublicKey};
     
             let secp = Secp256k1::new();
     
             let parsed = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, &$descriptors.1.expect("Missing internal descriptor")).expect("Failed to parse descriptor in `testutils!(@internal)`").0;
    -        parsed.as_derived($child, &secp).address($crate::bitcoin::Network::Regtest).expect("No address form")
    +        parsed.at_derivation_index($child).address($crate::bitcoin::Network::Regtest).expect("No address form")
         });
         ( @e $descriptors:expr, $child:expr ) => ({ testutils!(@external $descriptors, $child) });
         ( @i $descriptors:expr, $child:expr ) => ({ testutils!(@internal $descriptors, $child) });
    @@ -429,49 +422,50 @@
         ( @descriptors ( $external_descriptor:expr ) $( ( $internal_descriptor:expr ) )? $( ( @keys $( $keys:tt )* ) )* ) => ({
             use std::str::FromStr;
             use std::collections::HashMap;
    +        use std::convert::Infallible;
    +
             use $crate::miniscript::descriptor::Descriptor;
             use $crate::miniscript::TranslatePk;
     
    +        struct Translator {
    +            keys: HashMap<&'static str, (String, Option<String>, Option<String>)>,
    +            is_internal: bool,
    +        }
    +
    +        impl $crate::miniscript::Translator<String, String, Infallible> for Translator {
    +            fn pk(&mut self, pk: &String) -> Result<String, Infallible> {
    +                match self.keys.get(pk.as_str()) {
    +                    Some((key, ext_path, int_path)) => {
    +                        let path = if self.is_internal { int_path } else { ext_path };
    +                        Ok(format!("{}{}", key, path.clone().unwrap_or_default()))
    +                    }
    +                    None => Ok(pk.clone()),
    +                }
    +            }
    +            fn sha256(&mut self, sha256: &String) -> Result<String, Infallible> { Ok(sha256.clone()) }
    +            fn hash256(&mut self, hash256: &String) -> Result<String, Infallible> { Ok(hash256.clone()) }
    +            fn ripemd160(&mut self, ripemd160: &String) -> Result<String, Infallible> { Ok(ripemd160.clone()) }
    +            fn hash160(&mut self, hash160: &String) -> Result<String, Infallible> { Ok(hash160.clone()) }
    +        }
    +
             #[allow(unused_assignments, unused_mut)]
    -        let mut keys: HashMap<&'static str, (String, Option<String>, Option<String>)> = HashMap::new();
    +        let mut keys = HashMap::new();
             $(
                 keys = testutils!{ @keys $( $keys )* };
             )*
     
    -        let external: Descriptor<String> = FromStr::from_str($external_descriptor).unwrap();
    -        let external: Descriptor<String> = external.translate_pk_infallible::<_, _>(|k| {
    -            if let Some((key, ext_path, _)) = keys.get(&k.as_str()) {
    -                format!("{}{}", key, ext_path.as_ref().unwrap_or(&"".into()))
    -            } else {
    -                k.clone()
    -            }
    -        }, |kh| {
    -            if let Some((key, ext_path, _)) = keys.get(&kh.as_str()) {
    -                format!("{}{}", key, ext_path.as_ref().unwrap_or(&"".into()))
    -            } else {
    -                kh.clone()
    -            }
    +        let mut translator = Translator { keys, is_internal: false };
     
    -        });
    +        let external: Descriptor<String> = FromStr::from_str($external_descriptor).unwrap();
    +        let external = external.translate_pk(&mut translator).expect("Infallible conversion");
             let external = external.to_string();
     
    -        let internal = None::<String>$(.or({
    -            let string_internal: Descriptor<String> = FromStr::from_str($internal_descriptor).unwrap();
    +        translator.is_internal = true;
     
    -            let string_internal: Descriptor<String> = string_internal.translate_pk_infallible::<_, _>(|k| {
    -                if let Some((key, _, int_path)) = keys.get(&k.as_str()) {
    -                    format!("{}{}", key, int_path.as_ref().unwrap_or(&"".into()))
    -                } else {
    -                    k.clone()
    -                }
    -            }, |kh| {
    -                if let Some((key, _, int_path)) = keys.get(&kh.as_str()) {
    -                    format!("{}{}", key, int_path.as_ref().unwrap_or(&"".into()))
    -                } else {
    -                    kh.clone()
    -                }
    -            });
    -            Some(string_internal.to_string())
    +        let internal = None::<String>$(.or({
    +            let internal: Descriptor<String> = FromStr::from_str($internal_descriptor).unwrap();
    +            let internal = internal.translate_pk(&mut translator).expect("Infallible conversion");
    +            Some(internal.to_string())
             }))?;
     
             (external, internal)
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/types.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/types.rs.html
    index 59b972c075..b7501081dd 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/types.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/types.rs.html
    @@ -574,7 +574,7 @@
     }
     
     /// A [`Utxo`] with its `satisfaction_weight`.
    -#[derive(Debug, Clone, PartialEq)]
    +#[derive(Debug, Clone, PartialEq, Eq)]
     pub struct WeightedUtxo {
         /// The weight of the witness data and `scriptSig` expressed in [weight units]. This is used to
         /// properly maintain the feerate when adding this input to a transaction during coin selection.
    @@ -585,7 +585,7 @@
         pub utxo: Utxo,
     }
     
    -#[derive(Debug, Clone, PartialEq)]
    +#[derive(Debug, Clone, PartialEq, Eq)]
     /// An unspent transaction output (UTXO).
     pub enum Utxo {
         /// A UTXO owned by the local wallet.
    @@ -632,7 +632,7 @@
     }
     
     /// A wallet transaction
    -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)]
    +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
     pub struct TransactionDetails {
         /// Optional transaction
         pub transaction: Option<Transaction>,
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/address_validator.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/address_validator.rs.html
    deleted file mode 100644
    index 6cd3ed6c38..0000000000
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/address_validator.rs.html
    +++ /dev/null
    @@ -1,326 +0,0 @@
    -address_validator.rs - source
    -    
    -    
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 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
    -
    // Bitcoin Dev Kit
    -// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
    -//
    -// Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    -//
    -// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
    -// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
    -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
    -// You may not use this file except in accordance with one or both of these
    -// licenses.
    -
    -//! Address validation callbacks
    -//!
    -//! The typical usage of those callbacks is for displaying the newly-generated address on a
    -//! hardware wallet, so that the user can cross-check its correctness.
    -//!
    -//! More generally speaking though, these callbacks can also be used to "do something" every time
    -//! an address is generated, without necessarily checking or validating it.
    -//!
    -//! An address validator can be attached to a [`Wallet`](super::Wallet) by using the
    -//! [`Wallet::add_address_validator`](super::Wallet::add_address_validator) method, and
    -//! whenever a new address is generated (either explicitly by the user with
    -//! [`Wallet::get_address`](super::Wallet::get_address) or internally to create a change
    -//! address) all the attached validators will be polled, in sequence. All of them must complete
    -//! successfully to continue.
    -//!
    -//! ## Example
    -//!
    -//! ```
    -//! # use std::sync::Arc;
    -//! # use bitcoin::*;
    -//! # use bdk::address_validator::*;
    -//! # use bdk::database::*;
    -//! # use bdk::*;
    -//! # use bdk::wallet::AddressIndex::New;
    -//! #[derive(Debug)]
    -//! struct PrintAddressAndContinue;
    -//!
    -//! impl AddressValidator for PrintAddressAndContinue {
    -//!     fn validate(
    -//!         &self,
    -//!         keychain: KeychainKind,
    -//!         hd_keypaths: &HdKeyPaths,
    -//!         script: &Script
    -//!     ) -> Result<(), AddressValidatorError> {
    -//!         let address = Address::from_script(script, Network::Testnet)
    -//!             .as_ref()
    -//!             .map(Address::to_string)
    -//!             .unwrap_or(script.to_string());
    -//!         println!("New address of type {:?}: {}", keychain, address);
    -//!         println!("HD keypaths: {:#?}", hd_keypaths);
    -//!
    -//!         Ok(())
    -//!     }
    -//! }
    -//!
    -//! let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
    -//! let mut wallet = Wallet::new(descriptor, None, Network::Testnet, MemoryDatabase::default())?;
    -//! wallet.add_address_validator(Arc::new(PrintAddressAndContinue));
    -//!
    -//! let address = wallet.get_address(New)?;
    -//! println!("Address: {}", address);
    -//! # Ok::<(), bdk::Error>(())
    -//! ```
    -
    -use std::fmt;
    -
    -use bitcoin::Script;
    -
    -use crate::descriptor::HdKeyPaths;
    -use crate::types::KeychainKind;
    -
    -/// Errors that can be returned to fail the validation of an address
    -#[derive(Debug, Clone, PartialEq, Eq)]
    -pub enum AddressValidatorError {
    -    /// User rejected the address
    -    UserRejected,
    -    /// Network connection error
    -    ConnectionError,
    -    /// Network request timeout error
    -    TimeoutError,
    -    /// Invalid script
    -    InvalidScript,
    -    /// A custom error message
    -    Message(String),
    -}
    -
    -impl fmt::Display for AddressValidatorError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        write!(f, "{:?}", self)
    -    }
    -}
    -
    -impl std::error::Error for AddressValidatorError {}
    -
    -/// Trait to build address validators
    -///
    -/// All the address validators attached to a wallet with [`Wallet::add_address_validator`](super::Wallet::add_address_validator) will be polled
    -/// every time an address (external or internal) is generated by the wallet. Errors returned in the
    -/// validator will be propagated up to the original caller that triggered the address generation.
    -///
    -/// For a usage example see [this module](crate::address_validator)'s documentation.
    -#[deprecated = "AddressValidator was rarely used. Address validation can occur outside of BDK"]
    -pub trait AddressValidator: Send + Sync + fmt::Debug {
    -    /// Validate or inspect an address
    -    fn validate(
    -        &self,
    -        keychain: KeychainKind,
    -        hd_keypaths: &HdKeyPaths,
    -        script: &Script,
    -    ) -> Result<(), AddressValidatorError>;
    -}
    -
    -#[cfg(test)]
    -mod test {
    -    use std::sync::Arc;
    -
    -    use super::*;
    -    use crate::wallet::AddressIndex::New;
    -    use crate::wallet::{get_funded_wallet, test::get_test_wpkh};
    -
    -    #[derive(Debug)]
    -    struct TestValidator;
    -    #[allow(deprecated)]
    -    impl AddressValidator for TestValidator {
    -        fn validate(
    -            &self,
    -            _keychain: KeychainKind,
    -            _hd_keypaths: &HdKeyPaths,
    -            _script: &bitcoin::Script,
    -        ) -> Result<(), AddressValidatorError> {
    -            Err(AddressValidatorError::InvalidScript)
    -        }
    -    }
    -
    -    #[test]
    -    #[should_panic(expected = "InvalidScript")]
    -    fn test_address_validator_external() {
    -        let (mut wallet, _, _) = get_funded_wallet(get_test_wpkh());
    -        #[allow(deprecated)]
    -        wallet.add_address_validator(Arc::new(TestValidator));
    -
    -        wallet.get_address(New).unwrap();
    -    }
    -
    -    #[test]
    -    #[should_panic(expected = "InvalidScript")]
    -    fn test_address_validator_internal() {
    -        let (mut wallet, descriptors, _) = get_funded_wallet(get_test_wpkh());
    -        #[allow(deprecated)]
    -        wallet.add_address_validator(Arc::new(TestValidator));
    -
    -        let addr = crate::testutils!(@external descriptors, 10);
    -        let mut builder = wallet.build_tx();
    -        builder.add_recipient(addr.script_pubkey(), 25_000);
    -        builder.finish().unwrap();
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/coin_selection.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/coin_selection.rs.html index 236abece5d..96e56095a7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/coin_selection.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/coin_selection.rs.html @@ -1604,6 +1604,7 @@ 1597 1598 1599 +1600
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -1916,7 +1917,7 @@
         let drain_val = remaining_amount.saturating_sub(change_fee);
     
         if drain_val.is_dust(drain_script) {
    -        let dust_threshold = drain_script.dust_value().as_sat();
    +        let dust_threshold = drain_script.dust_value().to_sat();
             Excess::NoChange {
                 dust_threshold,
                 change_fee,
    @@ -2441,7 +2442,7 @@
                         )
                         .unwrap(),
                         txout: TxOut {
    -                        value: rng.gen_range(0, 200000000),
    +                        value: rng.gen_range(0..200000000),
                             script_pubkey: Script::new(),
                         },
                         keychain: KeychainKind::External,
    @@ -2472,7 +2473,7 @@
         }
     
         fn sum_random_utxos(mut rng: &mut StdRng, utxos: &mut Vec<WeightedUtxo>) -> u64 {
    -        let utxos_picked_len = rng.gen_range(2, utxos.len() / 2);
    +        let utxos_picked_len = rng.gen_range(2..utxos.len() / 2);
             utxos.shuffle(&mut rng);
             utxos[..utxos_picked_len]
                 .iter()
    @@ -2832,6 +2833,7 @@
         }
     
         #[test]
    +    #[ignore]
         fn test_bnb_coin_selection_required_not_enough() {
             let utxos = get_test_utxos();
             let database = MemoryDatabase::default();
    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 679e4a7d11..eea90aa148 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
    @@ -5554,84 +5554,6 @@
     5547
     5548
     5549
    -5550
    -5551
    -5552
    -5553
    -5554
    -5555
    -5556
    -5557
    -5558
    -5559
    -5560
    -5561
    -5562
    -5563
    -5564
    -5565
    -5566
    -5567
    -5568
    -5569
    -5570
    -5571
    -5572
    -5573
    -5574
    -5575
    -5576
    -5577
    -5578
    -5579
    -5580
    -5581
    -5582
    -5583
    -5584
    -5585
    -5586
    -5587
    -5588
    -5589
    -5590
    -5591
    -5592
    -5593
    -5594
    -5595
    -5596
    -5597
    -5598
    -5599
    -5600
    -5601
    -5602
    -5603
    -5604
    -5605
    -5606
    -5607
    -5608
    -5609
    -5610
    -5611
    -5612
    -5613
    -5614
    -5615
    -5616
    -5617
    -5618
    -5619
    -5620
    -5621
    -5622
    -5623
    -5624
    -5625
    -5626
    -5627
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -5658,20 +5580,17 @@
     use bitcoin::secp256k1::Secp256k1;
     
     use bitcoin::consensus::encode::serialize;
    -use bitcoin::util::{psbt, taproot};
    +use bitcoin::util::psbt;
     use bitcoin::{
    -    Address, EcdsaSighashType, Network, OutPoint, SchnorrSighashType, Script, Transaction, TxOut,
    -    Txid, Witness,
    +    Address, EcdsaSighashType, LockTime, Network, OutPoint, SchnorrSighashType, Script, Sequence,
    +    Transaction, TxOut, Txid, Witness,
     };
     
    -use miniscript::descriptor::DescriptorTrait;
    -use miniscript::psbt::PsbtInputSatisfier;
    -use miniscript::ToPublicKey;
    +use miniscript::psbt::{PsbtExt, PsbtInputExt, PsbtInputSatisfier};
     
     #[allow(unused_imports)]
     use log::{debug, error, info, trace};
     
    -pub mod address_validator;
     pub mod coin_selection;
     pub mod export;
     pub mod signer;
    @@ -5688,24 +5607,20 @@
     
     pub use utils::IsDust;
     
    -#[allow(deprecated)]
    -use address_validator::AddressValidator;
     use coin_selection::DefaultCoinSelectionAlgorithm;
     use signer::{SignOptions, SignerOrdering, SignersContainer, TransactionSigner};
     use tx_builder::{BumpFee, CreateTx, FeePolicy, TxBuilder, TxParams};
    -use utils::{check_nlocktime, check_nsequence_rbf, After, Older, SecpCtx};
    +use utils::{check_nsequence_rbf, After, Older, SecpCtx};
     
     use crate::blockchain::{GetHeight, NoopProgress, Progress, WalletSync};
     use crate::database::memory::MemoryDatabase;
     use crate::database::{AnyDatabase, BatchDatabase, BatchOperations, DatabaseUtils, SyncTime};
    -use crate::descriptor::derived::AsDerived;
     use crate::descriptor::policy::BuildSatisfaction;
     use crate::descriptor::{
    -    get_checksum, into_wallet_descriptor_checked, DerivedDescriptor, DerivedDescriptorMeta,
    -    DescriptorMeta, DescriptorScripts, ExtendedDescriptor, ExtractPolicy, IntoWalletDescriptor,
    -    Policy, XKeyUtils,
    +    get_checksum, into_wallet_descriptor_checked, DerivedDescriptor, DescriptorMeta,
    +    ExtendedDescriptor, ExtractPolicy, IntoWalletDescriptor, Policy, XKeyUtils,
     };
    -use crate::error::Error;
    +use crate::error::{Error, MiniscriptPsbtError};
     use crate::psbt::PsbtUtils;
     use crate::signer::SignerError;
     use crate::testutils;
    @@ -5734,9 +5649,6 @@
         signers: Arc<SignersContainer>,
         change_signers: Arc<SignersContainer>,
     
    -    #[allow(deprecated)]
    -    address_validators: Vec<Arc<dyn AddressValidator>>,
    -
         network: Network,
     
         database: RefCell<D>,
    @@ -5777,7 +5689,7 @@
     
     /// A derived address and the index it was found at
     /// For convenience this automatically derefs to `Address`
    -#[derive(Debug, PartialEq)]
    +#[derive(Debug, PartialEq, Eq)]
     pub struct AddressInfo {
         /// Child index of this address
         pub index: u32,
    @@ -5870,7 +5782,6 @@
                 change_descriptor,
                 signers,
                 change_signers,
    -            address_validators: Vec::new(),
                 network,
                 database: RefCell::new(database),
                 secp,
    @@ -5888,7 +5799,7 @@
     
             let address_result = self
                 .get_descriptor_for_keychain(keychain)
    -            .as_derived(incremented_index, &self.secp)
    +            .at_derivation_index(incremented_index)
                 .address(self.network);
     
             address_result
    @@ -5907,7 +5818,7 @@
     
             let derived_key = self
                 .get_descriptor_for_keychain(keychain)
    -            .as_derived(current_index, &self.secp);
    +            .at_derivation_index(current_index);
     
             let script_pubkey = derived_key.script_pubkey();
     
    @@ -5935,7 +5846,7 @@
         // Return derived address for the descriptor of given [`KeychainKind`] at a specific index
         fn peek_address(&self, index: u32, keychain: KeychainKind) -> Result<AddressInfo, Error> {
             self.get_descriptor_for_keychain(keychain)
    -            .as_derived(index, &self.secp)
    +            .at_derivation_index(index)
                 .address(self.network)
                 .map(|address| AddressInfo {
                     index,
    @@ -5951,7 +5862,7 @@
             self.set_index(keychain, index)?;
     
             self.get_descriptor_for_keychain(keychain)
    -            .as_derived(index, &self.secp)
    +            .at_derivation_index(index)
                 .address(self.network)
                 .map(|address| AddressInfo {
                     index,
    @@ -6000,7 +5911,7 @@
         /// transaction output scripts.
         pub fn ensure_addresses_cached(&self, max_addresses: u32) -> Result<bool, Error> {
             let mut new_addresses_cached = false;
    -        let max_address = match self.descriptor.is_deriveable() {
    +        let max_address = match self.descriptor.has_wildcard() {
                 false => 0,
                 true => max_addresses,
             };
    @@ -6017,7 +5928,7 @@
             }
     
             if let Some(change_descriptor) = &self.change_descriptor {
    -            let max_address = match change_descriptor.is_deriveable() {
    +            let max_address = match change_descriptor.has_wildcard() {
                     false => 0,
                     true => max_addresses,
                 };
    @@ -6186,24 +6097,6 @@
             }
         }
     
    -    /// Add an address validator
    -    ///
    -    /// See [the `address_validator` module](address_validator) for an example.
    -    #[deprecated]
    -    #[allow(deprecated)]
    -    pub fn add_address_validator(&mut self, validator: Arc<dyn AddressValidator>) {
    -        self.address_validators.push(validator);
    -    }
    -
    -    /// Get the address validators
    -    ///
    -    /// See [the `address_validator` module](address_validator).
    -    #[deprecated]
    -    #[allow(deprecated)]
    -    pub fn get_address_validators(&self) -> &[Arc<dyn AddressValidator>] {
    -        &self.address_validators
    -    }
    -
         /// Start building a transaction.
         ///
         /// This returns a blank [`TxBuilder`] from which you can specify the parameters for the transaction.
    @@ -6318,10 +6211,9 @@
             // We use a match here instead of a map_or_else as it's way more readable :)
             let current_height = match params.current_height {
                 // If they didn't tell us the current height, we assume it's the latest sync height.
    -            None => self
    -                .database()
    -                .get_sync_time()?
    -                .map(|sync_time| sync_time.block_time.height),
    +            None => self.database().get_sync_time()?.map(|sync_time| {
    +                LockTime::from_height(sync_time.block_time.height).expect("Invalid height")
    +            }),
                 h => h,
             };
     
    @@ -6331,24 +6223,33 @@
                     // Fee sniping can be partially prevented by setting the timelock
                     // to current_height. If we don't know the current_height,
                     // we default to 0.
    -                let fee_sniping_height = current_height.unwrap_or(0);
    +                let fee_sniping_height = current_height.unwrap_or(LockTime::ZERO);
    +
                     // We choose the biggest between the required nlocktime and the fee sniping
                     // height
    -                std::cmp::max(requirements.timelock.unwrap_or(0), fee_sniping_height)
    +                match requirements.timelock {
    +                    // No requirement, just use the fee_sniping_height
    +                    None => fee_sniping_height,
    +                    // There's a block-based requirement, but the value is lower than the fee_sniping_height
    +                    Some(value @ LockTime::Blocks(_)) if value < fee_sniping_height => fee_sniping_height,
    +                    // There's a time-based requirement or a block-based requirement greater
    +                    // than the fee_sniping_height use that value
    +                    Some(value) => value,
    +                }
                 }
                 // Specific nLockTime required and we have no constraints, so just set to that value
                 Some(x) if requirements.timelock.is_none() => x,
                 // Specific nLockTime required and it's compatible with the constraints
    -            Some(x) if check_nlocktime(x, requirements.timelock.unwrap()) => x,
    +            Some(x) if requirements.timelock.unwrap().is_same_unit(x) && x >= requirements.timelock.unwrap() => x,
                 // Invalid nLockTime required
    -            Some(x) => return Err(Error::Generic(format!("TxBuilder requested timelock of `{}`, but at least `{}` is required to spend from this script", x, requirements.timelock.unwrap())))
    +            Some(x) => return Err(Error::Generic(format!("TxBuilder requested timelock of `{:?}`, but at least `{:?}` is required to spend from this script", x, requirements.timelock.unwrap())))
             };
     
             let n_sequence = match (params.rbf, requirements.csv) {
                 // No RBF or CSV but there's an nLockTime, so the nSequence cannot be final
    -            (None, None) if lock_time != 0 => 0xFFFFFFFE,
    +            (None, None) if lock_time != LockTime::ZERO => Sequence::ENABLE_LOCKTIME_NO_RBF,
                 // No RBF, CSV or nLockTime, make the transaction final
    -            (None, None) => 0xFFFFFFFF,
    +            (None, None) => Sequence::MAX,
     
                 // No RBF requested, use the value from CSV. Note that this value is by definition
                 // non-final, so even if a timelock is enabled this nSequence is fine, hence why we
    @@ -6356,7 +6257,7 @@
                 (None, Some(csv)) => csv,
     
                 // RBF with a specific value but that value is too high
    -            (Some(tx_builder::RbfValue::Value(rbf)), _) if rbf >= 0xFFFFFFFE => {
    +            (Some(tx_builder::RbfValue::Value(rbf)), _) if !rbf.is_rbf() => {
                     return Err(Error::Generic(
                         "Cannot enable RBF with a nSequence >= 0xFFFFFFFE".into(),
                     ))
    @@ -6366,7 +6267,7 @@
                     if !check_nsequence_rbf(rbf, csv) =>
                 {
                     return Err(Error::Generic(format!(
    -                    "Cannot enable RBF with nSequence `{}` given a required OP_CSV of `{}`",
    +                    "Cannot enable RBF with nSequence `{:?}` given a required OP_CSV of `{:?}`",
                         rbf, csv
                     )))
                 }
    @@ -6409,7 +6310,7 @@
     
             let mut tx = Transaction {
                 version,
    -            lock_time,
    +            lock_time: lock_time.into(),
                 input: vec![],
                 output: vec![],
             };
    @@ -6474,7 +6375,7 @@
                 params.drain_wallet,
                 params.manually_selected_only,
                 params.bumping_fee.is_some(), // we mandate confirmed transactions if we're bumping the fee
    -            current_height,
    +            current_height.map(LockTime::to_consensus_u32),
             )?;
     
             // get drain script
    @@ -6626,7 +6527,11 @@
                 Some(tx) => tx,
             };
             let mut tx = details.transaction.take().unwrap();
    -        if !tx.input.iter().any(|txin| txin.sequence <= 0xFFFFFFFD) {
    +        if !tx
    +            .input
    +            .iter()
    +            .any(|txin| txin.sequence.to_consensus_u32() <= 0xFFFFFFFD)
    +        {
                 return Err(Error::IrreplaceableTransaction);
             }
     
    @@ -6752,8 +6657,9 @@
             psbt: &mut psbt::PartiallySignedTransaction,
             sign_options: SignOptions,
         ) -> Result<bool, Error> {
    -        // this helps us doing our job later
    -        self.add_input_hd_keypaths(psbt)?;
    +        // This adds all the PSBT metadata for the inputs, which will help us later figure out how
    +        // to derive our keys
    +        self.update_psbt_with_descriptor(psbt)?;
     
             // If we aren't allowed to use `witness_utxo`, ensure that every input (except p2tr and finalized ones)
             // has the `non_witness_utxo`
    @@ -6954,21 +6860,18 @@
             }
         }
     
    -    fn get_descriptor_for_txout(
    -        &self,
    -        txout: &TxOut,
    -    ) -> Result<Option<DerivedDescriptor<'_>>, Error> {
    +    fn get_descriptor_for_txout(&self, txout: &TxOut) -> Result<Option<DerivedDescriptor>, Error> {
             Ok(self
                 .database
                 .borrow()
                 .get_path_from_script_pubkey(&txout.script_pubkey)?
                 .map(|(keychain, child)| (self.get_descriptor_for_keychain(keychain), child))
    -            .map(|(desc, child)| desc.as_derived(child, &self.secp)))
    +            .map(|(desc, child)| desc.at_derivation_index(child)))
         }
     
         fn fetch_and_increment_index(&self, keychain: KeychainKind) -> Result<u32, Error> {
             let (descriptor, keychain) = self._get_descriptor_for_keychain(keychain);
    -        let index = match descriptor.is_deriveable() {
    +        let index = match descriptor.has_wildcard() {
                 false => 0,
                 true => self.database.borrow_mut().increment_last_index(keychain)?,
             };
    @@ -6982,22 +6885,12 @@
                 self.cache_addresses(keychain, index, CACHE_ADDR_BATCH_SIZE)?;
             }
     
    -        let derived_descriptor = descriptor.as_derived(index, &self.secp);
    -
    -        let hd_keypaths = derived_descriptor.get_hd_keypaths(&self.secp);
    -        let script = derived_descriptor.script_pubkey();
    -
    -        for validator in &self.address_validators {
    -            #[allow(deprecated)]
    -            validator.validate(keychain, &hd_keypaths, &script)?;
    -        }
    -
             Ok(index)
         }
     
         fn fetch_index(&self, keychain: KeychainKind) -> Result<u32, Error> {
             let (descriptor, keychain) = self._get_descriptor_for_keychain(keychain);
    -        let index = match descriptor.is_deriveable() {
    +        let index = match descriptor.has_wildcard() {
                 false => Some(0),
                 true => self.database.borrow_mut().get_last_index(keychain)?,
             };
    @@ -7021,7 +6914,7 @@
             mut count: u32,
         ) -> Result<(), Error> {
             let (descriptor, keychain) = self._get_descriptor_for_keychain(keychain);
    -        if !descriptor.is_deriveable() {
    +        if !descriptor.has_wildcard() {
                 if from > 0 {
                     return Ok(());
                 }
    @@ -7034,7 +6927,7 @@
             let start_time = time::Instant::new();
             for i in from..(from + count) {
                 address_batch.set_script_pubkey(
    -                &descriptor.as_derived(i, &self.secp).script_pubkey(),
    +                &descriptor.at_derivation_index(i).script_pubkey(),
                     keychain,
                     i,
                 )?;
    @@ -7238,52 +7131,7 @@
                 }
             }
     
    -        // probably redundant but it doesn't hurt...
    -        self.add_input_hd_keypaths(&mut psbt)?;
    -
    -        // add metadata for the outputs
    -        for (psbt_output, tx_output) in psbt.outputs.iter_mut().zip(psbt.unsigned_tx.output.iter())
    -        {
    -            if let Some((keychain, child)) = self
    -                .database
    -                .borrow()
    -                .get_path_from_script_pubkey(&tx_output.script_pubkey)?
    -            {
    -                let (desc, _) = self._get_descriptor_for_keychain(keychain);
    -                let derived_descriptor = desc.as_derived(child, &self.secp);
    -
    -                if let miniscript::Descriptor::Tr(tr) = &derived_descriptor {
    -                    let tap_tree = if tr.taptree().is_some() {
    -                        let mut builder = taproot::TaprootBuilder::new();
    -                        for (depth, ms) in tr.iter_scripts() {
    -                            let script = ms.encode();
    -                            builder = builder.add_leaf(depth, script).expect(
    -                                "Computing spend data on a valid Tree should always succeed",
    -                            );
    -                        }
    -                        Some(
    -                            psbt::TapTree::from_builder(builder)
    -                                .expect("The tree should always be valid"),
    -                        )
    -                    } else {
    -                        None
    -                    };
    -                    psbt_output.tap_tree = tap_tree;
    -                    psbt_output
    -                        .tap_key_origins
    -                        .append(&mut derived_descriptor.get_tap_key_origins(&self.secp));
    -                    psbt_output.tap_internal_key = Some(tr.internal_key().to_x_only_pubkey());
    -                } else {
    -                    psbt_output
    -                        .bip32_derivation
    -                        .append(&mut derived_descriptor.get_hd_keypaths(&self.secp));
    -                }
    -                if params.include_output_redeem_witness_script {
    -                    psbt_output.witness_script = derived_descriptor.psbt_witness_script();
    -                    psbt_output.redeem_script = derived_descriptor.psbt_redeem_script();
    -                };
    -            }
    -        }
    +        self.update_psbt_with_descriptor(&mut psbt)?;
     
             Ok(psbt)
         }
    @@ -7309,29 +7157,11 @@
             };
     
             let desc = self.get_descriptor_for_keychain(keychain);
    -        let derived_descriptor = desc.as_derived(child, &self.secp);
    -
    -        if let miniscript::Descriptor::Tr(tr) = &derived_descriptor {
    -            psbt_input.tap_key_origins = derived_descriptor.get_tap_key_origins(&self.secp);
    -            psbt_input.tap_internal_key = Some(tr.internal_key().to_x_only_pubkey());
    -
    -            let spend_info = tr.spend_info();
    -            psbt_input.tap_merkle_root = spend_info.merkle_root();
    -            psbt_input.tap_scripts = spend_info
    -                .as_script_map()
    -                .keys()
    -                .filter_map(|script_ver| {
    -                    spend_info
    -                        .control_block(script_ver)
    -                        .map(|cb| (cb, script_ver.clone()))
    -                })
    -                .collect();
    -        } else {
    -            psbt_input.bip32_derivation = derived_descriptor.get_hd_keypaths(&self.secp);
    -        }
    +        let derived_descriptor = desc.at_derivation_index(child);
     
    -        psbt_input.redeem_script = derived_descriptor.psbt_redeem_script();
    -        psbt_input.witness_script = derived_descriptor.psbt_witness_script();
    +        psbt_input
    +            .update_with_descriptor_unchecked(&derived_descriptor)
    +            .map_err(MiniscriptPsbtError::Conversion)?;
     
             let prev_output = utxo.outpoint;
             if let Some(prev_tx) = self.database.borrow().get_raw_tx(&prev_output.txid)? {
    @@ -7345,38 +7175,47 @@
             Ok(psbt_input)
         }
     
    -    fn add_input_hd_keypaths(
    +    fn update_psbt_with_descriptor(
             &self,
             psbt: &mut psbt::PartiallySignedTransaction,
         ) -> Result<(), Error> {
    -        let mut input_utxos = Vec::with_capacity(psbt.inputs.len());
    -        for n in 0..psbt.inputs.len() {
    -            input_utxos.push(psbt.get_utxo_for(n).clone());
    -        }
    +        // We need to borrow `psbt` mutably within the loops, so we have to allocate a vec for all
    +        // the input utxos and outputs
    +        //
    +        // Clippy complains that the collect is not required, but that's wrong
    +        #[allow(clippy::needless_collect)]
    +        let utxos = (0..psbt.inputs.len())
    +            .filter_map(|i| psbt.get_utxo_for(i).map(|utxo| (true, i, utxo)))
    +            .chain(
    +                psbt.unsigned_tx
    +                    .output
    +                    .iter()
    +                    .enumerate()
    +                    .map(|(i, out)| (false, i, out.clone())),
    +            )
    +            .collect::<Vec<_>>();
     
    -        // try to add hd_keypaths if we've already seen the output
    -        for (psbt_input, out) in psbt.inputs.iter_mut().zip(input_utxos.iter()) {
    -            if let Some(out) = out {
    -                if let Some((keychain, child)) = self
    -                    .database
    -                    .borrow()
    -                    .get_path_from_script_pubkey(&out.script_pubkey)?
    -                {
    -                    debug!("Found descriptor {:?}/{}", keychain, child);
    -
    -                    // merge hd_keypaths or tap_key_origins
    -                    let desc = self.get_descriptor_for_keychain(keychain);
    -                    if desc.is_taproot() {
    -                        let mut tap_key_origins = desc
    -                            .as_derived(child, &self.secp)
    -                            .get_tap_key_origins(&self.secp);
    -                        psbt_input.tap_key_origins.append(&mut tap_key_origins);
    -                    } else {
    -                        let mut hd_keypaths = desc
    -                            .as_derived(child, &self.secp)
    -                            .get_hd_keypaths(&self.secp);
    -                        psbt_input.bip32_derivation.append(&mut hd_keypaths);
    -                    }
    +        // Try to figure out the keychain and derivation for every input and output
    +        for (is_input, index, out) in utxos.into_iter() {
    +            if let Some((keychain, child)) = self
    +                .database
    +                .borrow()
    +                .get_path_from_script_pubkey(&out.script_pubkey)?
    +            {
    +                debug!(
    +                    "Found descriptor for input #{} {:?}/{}",
    +                    index, keychain, child
    +                );
    +
    +                let desc = self.get_descriptor_for_keychain(keychain);
    +                let desc = desc.at_derivation_index(child);
    +
    +                if is_input {
    +                    psbt.update_input_with_descriptor(index, &desc)
    +                        .map_err(MiniscriptPsbtError::UtxoUpdate)?;
    +                } else {
    +                    psbt.update_output_with_descriptor(index, &desc)
    +                        .map_err(MiniscriptPsbtError::OutputUpdate)?;
                     }
                 }
             }
    @@ -7415,12 +7254,12 @@
     
             // We need to ensure descriptor is derivable to fullfil "missing cache", otherwise we will
             // end up with an infinite loop
    -        let is_deriveable = self.descriptor.is_deriveable()
    +        let has_wildcard = self.descriptor.has_wildcard()
                 && (self.change_descriptor.is_none()
    -                || self.change_descriptor.as_ref().unwrap().is_deriveable());
    +                || self.change_descriptor.as_ref().unwrap().has_wildcard());
     
             // Restrict max rounds in case of faulty "missing cache" implementation by blockchain
    -        let max_rounds = if is_deriveable { 100 } else { 1 };
    +        let max_rounds = if has_wildcard { 100 } else { 1 };
     
             for _ in 0..max_rounds {
                 let sync_res =
    @@ -7555,7 +7394,7 @@
     
     #[cfg(test)]
     pub(crate) mod test {
    -    use bitcoin::{util::psbt, Network};
    +    use bitcoin::{util::psbt, Network, PackedLockTime, Sequence};
     
         use crate::database::Database;
         use crate::types::KeychainKind;
    @@ -7868,7 +7707,7 @@
     
             // Since we never synced the wallet we don't have a last_sync_height
             // we could use to try to prevent fee sniping. We default to 0.
    -        assert_eq!(psbt.unsigned_tx.lock_time, 0);
    +        assert_eq!(psbt.unsigned_tx.lock_time, PackedLockTime(0));
         }
     
         #[test]
    @@ -7893,7 +7732,7 @@
             let (psbt, _) = builder.finish().unwrap();
     
             // current_height will override the last sync height
    -        assert_eq!(psbt.unsigned_tx.lock_time, current_height);
    +        assert_eq!(psbt.unsigned_tx.lock_time, PackedLockTime(current_height));
         }
     
         #[test]
    @@ -7916,7 +7755,10 @@
             let (psbt, _) = builder.finish().unwrap();
     
             // If there's no current_height we're left with using the last sync height
    -        assert_eq!(psbt.unsigned_tx.lock_time, sync_time.block_time.height);
    +        assert_eq!(
    +            psbt.unsigned_tx.lock_time,
    +            PackedLockTime(sync_time.block_time.height)
    +        );
         }
     
         #[test]
    @@ -7927,7 +7769,7 @@
             builder.add_recipient(addr.script_pubkey(), 25_000);
             let (psbt, _) = builder.finish().unwrap();
     
    -        assert_eq!(psbt.unsigned_tx.lock_time, 100_000);
    +        assert_eq!(psbt.unsigned_tx.lock_time, PackedLockTime(100_000));
         }
     
         #[test]
    @@ -7938,13 +7780,13 @@
             builder
                 .add_recipient(addr.script_pubkey(), 25_000)
                 .current_height(630_001)
    -            .nlocktime(630_000);
    +            .nlocktime(LockTime::from_height(630_000).unwrap());
             let (psbt, _) = builder.finish().unwrap();
     
             // When we explicitly specify a nlocktime
             // we don't try any fee sniping prevention trick
             // (we ignore the current_height)
    -        assert_eq!(psbt.unsigned_tx.lock_time, 630_000);
    +        assert_eq!(psbt.unsigned_tx.lock_time, PackedLockTime(630_000));
         }
     
         #[test]
    @@ -7954,15 +7796,15 @@
             let mut builder = wallet.build_tx();
             builder
                 .add_recipient(addr.script_pubkey(), 25_000)
    -            .nlocktime(630_000);
    +            .nlocktime(LockTime::from_height(630_000).unwrap());
             let (psbt, _) = builder.finish().unwrap();
     
    -        assert_eq!(psbt.unsigned_tx.lock_time, 630_000);
    +        assert_eq!(psbt.unsigned_tx.lock_time, PackedLockTime(630_000));
         }
     
         #[test]
         #[should_panic(
    -        expected = "TxBuilder requested timelock of `50000`, but at least `100000` is required to spend from this script"
    +        expected = "TxBuilder requested timelock of `Blocks(Height(50000))`, but at least `Blocks(Height(100000))` is required to spend from this script"
         )]
         fn test_create_tx_custom_locktime_incompatible_with_cltv() {
             let (wallet, _, _) = get_funded_wallet(get_test_single_sig_cltv());
    @@ -7970,7 +7812,7 @@
             let mut builder = wallet.build_tx();
             builder
                 .add_recipient(addr.script_pubkey(), 25_000)
    -            .nlocktime(50000);
    +            .nlocktime(LockTime::from_height(50000).unwrap());
             builder.finish().unwrap();
         }
     
    @@ -7982,7 +7824,7 @@
             builder.add_recipient(addr.script_pubkey(), 25_000);
             let (psbt, _) = builder.finish().unwrap();
     
    -        assert_eq!(psbt.unsigned_tx.input[0].sequence, 6);
    +        assert_eq!(psbt.unsigned_tx.input[0].sequence, Sequence(6));
         }
     
         #[test]
    @@ -7996,12 +7838,12 @@
             let (psbt, _) = builder.finish().unwrap();
             // When CSV is enabled it takes precedence over the rbf value (unless forced by the user).
             // It will be set to the OP_CSV value, in this case 6
    -        assert_eq!(psbt.unsigned_tx.input[0].sequence, 6);
    +        assert_eq!(psbt.unsigned_tx.input[0].sequence, Sequence(6));
         }
     
         #[test]
         #[should_panic(
    -        expected = "Cannot enable RBF with nSequence `3` given a required OP_CSV of `6`"
    +        expected = "Cannot enable RBF with nSequence `Sequence(3)` given a required OP_CSV of `Sequence(6)`"
         )]
         fn test_create_tx_with_custom_rbf_csv() {
             let (wallet, _, _) = get_funded_wallet(get_test_single_sig_csv());
    @@ -8009,7 +7851,7 @@
             let mut builder = wallet.build_tx();
             builder
                 .add_recipient(addr.script_pubkey(), 25_000)
    -            .enable_rbf_with_sequence(3);
    +            .enable_rbf_with_sequence(Sequence(3));
             builder.finish().unwrap();
         }
     
    @@ -8021,7 +7863,7 @@
             builder.add_recipient(addr.script_pubkey(), 25_000);
             let (psbt, _) = builder.finish().unwrap();
     
    -        assert_eq!(psbt.unsigned_tx.input[0].sequence, 0xFFFFFFFE);
    +        assert_eq!(psbt.unsigned_tx.input[0].sequence, Sequence(0xFFFFFFFE));
         }
     
         #[test]
    @@ -8032,7 +7874,7 @@
             let mut builder = wallet.build_tx();
             builder
                 .add_recipient(addr.script_pubkey(), 25_000)
    -            .enable_rbf_with_sequence(0xFFFFFFFE);
    +            .enable_rbf_with_sequence(Sequence(0xFFFFFFFE));
             builder.finish().unwrap();
         }
     
    @@ -8043,10 +7885,10 @@
             let mut builder = wallet.build_tx();
             builder
                 .add_recipient(addr.script_pubkey(), 25_000)
    -            .enable_rbf_with_sequence(0xDEADBEEF);
    +            .enable_rbf_with_sequence(Sequence(0xDEADBEEF));
             let (psbt, _) = builder.finish().unwrap();
     
    -        assert_eq!(psbt.unsigned_tx.input[0].sequence, 0xDEADBEEF);
    +        assert_eq!(psbt.unsigned_tx.input[0].sequence, Sequence(0xDEADBEEF));
         }
     
         #[test]
    @@ -8073,7 +7915,7 @@
             builder.add_recipient(addr.script_pubkey(), 25_000);
             let (psbt, _) = builder.finish().unwrap();
     
    -        assert_eq!(psbt.unsigned_tx.input[0].sequence, 0xFFFFFFFF);
    +        assert_eq!(psbt.unsigned_tx.input[0].sequence, Sequence(0xFFFFFFFF));
         }
     
         #[test]
    @@ -8594,7 +8436,7 @@
                 .policy_path(path, KeychainKind::External);
             let (psbt, _) = builder.finish().unwrap();
     
    -        assert_eq!(psbt.unsigned_tx.input[0].sequence, 0xFFFFFFFF);
    +        assert_eq!(psbt.unsigned_tx.input[0].sequence, Sequence(0xFFFFFFFF));
         }
     
         #[test]
    @@ -8613,7 +8455,7 @@
                 .policy_path(path, KeychainKind::External);
             let (psbt, _) = builder.finish().unwrap();
     
    -        assert_eq!(psbt.unsigned_tx.input[0].sequence, 144);
    +        assert_eq!(psbt.unsigned_tx.input[0].sequence, Sequence(144));
         }
     
         #[test]
    @@ -10466,7 +10308,7 @@
             let (wallet, _, _) = get_funded_wallet(get_test_tr_repeated_key());
             let addr = wallet.get_address(AddressIndex::New).unwrap();
     
    -        let path = vec![("rn4nre9c".to_string(), vec![0])]
    +        let path = vec![("e5mmg3xh".to_string(), vec![0])]
                 .into_iter()
                 .collect();
     
    @@ -10476,48 +10318,50 @@
                 .policy_path(path, KeychainKind::External);
             let (psbt, _) = builder.finish().unwrap();
     
    +        let mut input_key_origins = psbt.inputs[0]
    +            .tap_key_origins
    +            .clone()
    +            .into_iter()
    +            .collect::<Vec<_>>();
    +        input_key_origins.sort();
    +
             assert_eq!(
    -            psbt.inputs[0]
    -                .tap_key_origins
    -                .clone()
    -                .into_iter()
    -                .collect::<Vec<_>>(),
    -            vec![(
    -                from_str!("2b0558078bec38694a84933d659303e2575dae7e91685911454115bfd64487e3"),
    +            input_key_origins,
    +            vec![
                     (
    -                    vec![
    -                        from_str!(
    -                            "858ad7a7d7f270e2c490c4d6ba00c499e46b18fdd59ea3c2c47d20347110271e"
    -                        ),
    -                        from_str!(
    -                            "f6e927ad4492c051fe325894a4f5f14538333b55a35f099876be42009ec8f903"
    -                        )
    -                    ],
    -                    (Default::default(), Default::default())
    +                    from_str!("b511bd5771e47ee27558b1765e87b541668304ec567721c7b880edc0a010da55"),
    +                    (
    +                        vec![],
    +                        (FromStr::from_str("871fd295").unwrap(), vec![].into())
    +                    )
    +                ),
    +                (
    +                    from_str!("2b0558078bec38694a84933d659303e2575dae7e91685911454115bfd64487e3"),
    +                    (
    +                        vec![
    +                            from_str!(
    +                                "858ad7a7d7f270e2c490c4d6ba00c499e46b18fdd59ea3c2c47d20347110271e"
    +                            ),
    +                            from_str!(
    +                                "f6e927ad4492c051fe325894a4f5f14538333b55a35f099876be42009ec8f903"
    +                            ),
    +                        ],
    +                        (FromStr::from_str("ece52657").unwrap(), vec![].into())
    +                    )
                     )
    -            )],
    +            ],
                 "Wrong input tap_key_origins"
             );
    +
    +        let mut output_key_origins = psbt.outputs[0]
    +            .tap_key_origins
    +            .clone()
    +            .into_iter()
    +            .collect::<Vec<_>>();
    +        output_key_origins.sort();
    +
             assert_eq!(
    -            psbt.outputs[0]
    -                .tap_key_origins
    -                .clone()
    -                .into_iter()
    -                .collect::<Vec<_>>(),
    -            vec![(
    -                from_str!("2b0558078bec38694a84933d659303e2575dae7e91685911454115bfd64487e3"),
    -                (
    -                    vec![
    -                        from_str!(
    -                            "858ad7a7d7f270e2c490c4d6ba00c499e46b18fdd59ea3c2c47d20347110271e"
    -                        ),
    -                        from_str!(
    -                            "f6e927ad4492c051fe325894a4f5f14538333b55a35f099876be42009ec8f903"
    -                        )
    -                    ],
    -                    (Default::default(), Default::default())
    -                )
    -            )],
    +            input_key_origins, output_key_origins,
                 "Wrong output tap_key_origins"
             );
         }
    @@ -10769,7 +10613,7 @@
         #[test]
         fn test_taproot_script_spend_sign_include_some_leaves() {
             use crate::signer::TapLeavesOptions;
    -        use crate::wallet::taproot::TapLeafHash;
    +        use bitcoin::util::taproot::TapLeafHash;
     
             let (wallet, _, _) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
             let addr = wallet.get_address(AddressIndex::New).unwrap();
    @@ -10811,7 +10655,7 @@
         #[test]
         fn test_taproot_script_spend_sign_exclude_some_leaves() {
             use crate::signer::TapLeavesOptions;
    -        use crate::wallet::taproot::TapLeafHash;
    +        use bitcoin::util::taproot::TapLeafHash;
     
             let (wallet, _, _) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
             let addr = wallet.get_address(AddressIndex::New).unwrap();
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/signer.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/signer.rs.html
    index 6029574e23..a9cfd8ceed 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/signer.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/signer.rs.html
    @@ -1123,6 +1123,11 @@
     1116
     1117
     1118
    +1119
    +1120
    +1121
    +1122
    +1123
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -1221,10 +1226,10 @@
     use bitcoin::{EcdsaSighashType, PrivateKey, PublicKey, SchnorrSighashType, Script};
     
     use miniscript::descriptor::{
    -    Descriptor, DescriptorPublicKey, DescriptorSecretKey, DescriptorSinglePriv, DescriptorXKey,
    -    KeyMap, SinglePubKey,
    +    Descriptor, DescriptorPublicKey, DescriptorSecretKey, DescriptorXKey, KeyMap, SinglePriv,
    +    SinglePubKey,
     };
    -use miniscript::{Legacy, MiniscriptKey, Segwitv0, Tap};
    +use miniscript::{Legacy, Segwitv0, SigType, Tap, ToPublicKey};
     
     use super::utils::SecpCtx;
     use crate::descriptor::{DescriptorMeta, XKeyUtils};
    @@ -1494,11 +1499,11 @@
     
     impl SignerCommon for SignerWrapper<PrivateKey> {
         fn id(&self, secp: &SecpCtx) -> SignerId {
    -        SignerId::from(self.public_key(secp).to_pubkeyhash())
    +        SignerId::from(self.public_key(secp).to_pubkeyhash(SigType::Ecdsa))
         }
     
         fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey> {
    -        Some(DescriptorSecretKey::SinglePriv(DescriptorSinglePriv {
    +        Some(DescriptorSecretKey::Single(SinglePriv {
                 key: self.signer,
                 origin: None,
             }))
    @@ -1642,13 +1647,13 @@
         let keypair = match leaf_hash {
             None => keypair
                 .tap_tweak(secp, psbt_input.tap_merkle_root)
    -            .into_inner(),
    +            .to_inner(),
             Some(_) => keypair, // no tweak for script spend
         };
     
         let msg = &Message::from_slice(&hash.into_inner()[..]).unwrap();
         let sig = secp.sign_schnorr(msg, &keypair);
    -    secp.verify_schnorr(&sig, msg, &XOnlyPublicKey::from_keypair(&keypair))
    +    secp.verify_schnorr(&sig, msg, &XOnlyPublicKey::from_keypair(&keypair).0)
             .expect("invalid or corrupted schnorr signature");
     
         let final_signature = schnorr::SchnorrSig { sig, hash_ty };
    @@ -1701,7 +1706,7 @@
             self.0
                 .values()
                 .filter_map(|signer| signer.descriptor_secret_key())
    -            .filter_map(|secret| secret.as_public(secp).ok().map(|public| (public, secret)))
    +            .filter_map(|secret| secret.to_public(secp).ok().map(|public| (public, secret)))
                 .collect()
         }
     
    @@ -1726,8 +1731,13 @@
                 };
     
                 match secret {
    -                DescriptorSecretKey::SinglePriv(private_key) => container.add_external(
    -                    SignerId::from(private_key.key.public_key(secp).to_pubkeyhash()),
    +                DescriptorSecretKey::Single(private_key) => container.add_external(
    +                    SignerId::from(
    +                        private_key
    +                            .key
    +                            .public_key(secp)
    +                            .to_pubkeyhash(SigType::Ecdsa),
    +                    ),
                         SignerOrdering::default(),
                         Arc::new(SignerWrapper::new(private_key.key, ctx)),
                     ),
    @@ -1857,7 +1867,7 @@
     }
     
     /// Customize which taproot script-path leaves the signer should sign.
    -#[derive(Debug, Clone, PartialEq)]
    +#[derive(Debug, Clone, PartialEq, Eq)]
     pub enum TapLeavesOptions {
         /// The signer will sign all the leaves it has a key for.
         All,
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/tx_builder.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/tx_builder.rs.html
    index 3469615762..7c4cd6dfb3 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/tx_builder.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/tx_builder.rs.html
    @@ -972,9 +972,7 @@
     use std::marker::PhantomData;
     
     use bitcoin::util::psbt::{self, PartiallySignedTransaction as Psbt};
    -use bitcoin::{OutPoint, Script, Transaction};
    -
    -use miniscript::descriptor::DescriptorTrait;
    +use bitcoin::{LockTime, OutPoint, Script, Sequence, Transaction};
     
     use super::coin_selection::{CoinSelectionAlgorithm, DefaultCoinSelectionAlgorithm};
     use crate::{database::BatchDatabase, Error, Utxo, Wallet};
    @@ -1069,7 +1067,7 @@
         pub(crate) manually_selected_only: bool,
         pub(crate) sighash: Option<psbt::PsbtSighashType>,
         pub(crate) ordering: TxOrdering,
    -    pub(crate) locktime: Option<u32>,
    +    pub(crate) locktime: Option<LockTime>,
         pub(crate) rbf: Option<RbfValue>,
         pub(crate) version: Option<Version>,
         pub(crate) change_policy: ChangeSpendPolicy,
    @@ -1077,7 +1075,7 @@
         pub(crate) add_global_xpubs: bool,
         pub(crate) include_output_redeem_witness_script: bool,
         pub(crate) bumping_fee: Option<PreviousFee>,
    -    pub(crate) current_height: Option<u32>,
    +    pub(crate) current_height: Option<LockTime>,
         pub(crate) allow_dust: bool,
     }
     
    @@ -1356,7 +1354,7 @@
         /// Use a specific nLockTime while creating the transaction
         ///
         /// This can cause conflicts if the wallet's descriptors contain an "after" (OP_CLTV) operator.
    -    pub fn nlocktime(&mut self, locktime: u32) -> &mut Self {
    +    pub fn nlocktime(&mut self, locktime: LockTime) -> &mut Self {
             self.params.locktime = Some(locktime);
             self
         }
    @@ -1471,7 +1469,7 @@
         ///
         /// If the `nsequence` is higher than `0xFFFFFFFD` an error will be thrown, since it would not
         /// be a valid nSequence to signal RBF.
    -    pub fn enable_rbf_with_sequence(&mut self, nsequence: u32) -> &mut Self {
    +    pub fn enable_rbf_with_sequence(&mut self, nsequence: Sequence) -> &mut Self {
             self.params.rbf = Some(RbfValue::Value(nsequence));
             self
         }
    @@ -1488,7 +1486,7 @@
         ///
         /// In both cases, if you don't provide a current height, we use the last sync height.
         pub fn current_height(&mut self, height: u32) -> &mut Self {
    -        self.params.current_height = Some(height);
    +        self.params.current_height = Some(LockTime::from_height(height).expect("Invalid height"));
             self
         }
     
    @@ -1633,7 +1631,7 @@
                     #[cfg(not(test))]
                     let mut rng = rand::thread_rng();
                     #[cfg(test)]
    -                let mut rng = rand::rngs::StdRng::seed_from_u64(0);
    +                let mut rng = rand::rngs::StdRng::seed_from_u64(12345);
     
                     tx.output.shuffle(&mut rng);
                 }
    @@ -1666,13 +1664,13 @@
     #[derive(Debug, Ord, PartialOrd, Eq, PartialEq, Hash, Clone, Copy)]
     pub(crate) enum RbfValue {
         Default,
    -    Value(u32),
    +    Value(Sequence),
     }
     
     impl RbfValue {
    -    pub(crate) fn get_value(&self) -> u32 {
    +    pub(crate) fn get_value(&self) -> Sequence {
             match self {
    -            RbfValue::Default => 0xFFFFFFFD,
    +            RbfValue::Default => Sequence::ENABLE_RBF_NO_LOCKTIME,
                 RbfValue::Value(v) => *v,
             }
         }
    @@ -1788,10 +1786,12 @@
         }
     
         fn get_test_utxos() -> Vec<LocalUtxo> {
    +        use bitcoin::hashes::Hash;
    +
             vec![
                 LocalUtxo {
                     outpoint: OutPoint {
    -                    txid: Default::default(),
    +                    txid: bitcoin::Txid::from_inner([0; 32]),
                         vout: 0,
                     },
                     txout: Default::default(),
    @@ -1800,7 +1800,7 @@
                 },
                 LocalUtxo {
                     outpoint: OutPoint {
    -                    txid: Default::default(),
    +                    txid: bitcoin::Txid::from_inner([0; 32]),
                         vout: 1,
                     },
                     txout: Default::default(),
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/utils.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/utils.rs.html
    index b39554b328..830d2c4276 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/utils.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/utils.rs.html
    @@ -186,56 +186,6 @@
     179
     180
     181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -247,23 +197,11 @@
     // You may not use this file except in accordance with one or both of these
     // licenses.
     
    -use bitcoin::blockdata::script::Script;
     use bitcoin::secp256k1::{All, Secp256k1};
    +use bitcoin::{LockTime, Script, Sequence};
     
     use miniscript::{MiniscriptKey, Satisfier, ToPublicKey};
     
    -// MSB of the nSequence. If set there's no consensus-constraint, so it must be disabled when
    -// spending using CSV in order to enforce CSV rules
    -pub(crate) const SEQUENCE_LOCKTIME_DISABLE_FLAG: u32 = 1 << 31;
    -// When nSequence is lower than this flag the timelock is interpreted as block-height-based,
    -// otherwise it's time-based
    -pub(crate) const SEQUENCE_LOCKTIME_TYPE_FLAG: u32 = 1 << 22;
    -// Mask for the bits used to express the timelock
    -pub(crate) const SEQUENCE_LOCKTIME_MASK: u32 = 0x0000FFFF;
    -
    -// Threshold for nLockTime to be considered a block-height-based timelock rather than time-based
    -pub(crate) const BLOCKS_TIMELOCK_THRESHOLD: u32 = 500000000;
    -
     /// Trait to check if a value is below the dust limit.
     /// We are performing dust value calculation for a given script public key using rust-bitcoin to
     /// keep it compatible with network dust rate
    @@ -276,7 +214,7 @@
     
     impl IsDust for u64 {
         fn is_dust(&self, script: &Script) -> bool {
    -        *self < script.dust_value().as_sat()
    +        *self < script.dust_value().to_sat()
         }
     }
     
    @@ -294,19 +232,15 @@
         }
     }
     
    -pub(crate) fn check_nsequence_rbf(rbf: u32, csv: u32) -> bool {
    -    // This flag cannot be set in the nSequence when spending using OP_CSV
    -    if rbf & SEQUENCE_LOCKTIME_DISABLE_FLAG != 0 {
    +pub(crate) fn check_nsequence_rbf(rbf: Sequence, csv: Sequence) -> bool {
    +    // The RBF value must enable relative timelocks
    +    if !rbf.is_relative_lock_time() {
             return false;
         }
     
    -    let mask = SEQUENCE_LOCKTIME_TYPE_FLAG | SEQUENCE_LOCKTIME_MASK;
    -    let rbf = rbf & mask;
    -    let csv = csv & mask;
    -
         // Both values should be represented in the same unit (either time-based or
         // block-height based)
    -    if (rbf < SEQUENCE_LOCKTIME_TYPE_FLAG) != (csv < SEQUENCE_LOCKTIME_TYPE_FLAG) {
    +    if rbf.is_time_locked() != csv.is_time_locked() {
             return false;
         }
     
    @@ -318,24 +252,10 @@
         true
     }
     
    -pub(crate) fn check_nlocktime(nlocktime: u32, required: u32) -> bool {
    -    // Both values should be expressed in the same unit
    -    if (nlocktime < BLOCKS_TIMELOCK_THRESHOLD) != (required < BLOCKS_TIMELOCK_THRESHOLD) {
    -        return false;
    -    }
    -
    -    // The value should be at least `required`
    -    if nlocktime < required {
    -        return false;
    -    }
    -
    -    true
    -}
    -
     impl<Pk: MiniscriptKey + ToPublicKey> Satisfier<Pk> for After {
    -    fn check_after(&self, n: u32) -> bool {
    +    fn check_after(&self, n: LockTime) -> bool {
             if let Some(current_height) = self.current_height {
    -            current_height >= n
    +            current_height >= n.to_consensus_u32()
             } else {
                 self.assume_height_reached
             }
    @@ -363,10 +283,15 @@
     }
     
     impl<Pk: MiniscriptKey + ToPublicKey> Satisfier<Pk> for Older {
    -    fn check_older(&self, n: u32) -> bool {
    +    fn check_older(&self, n: Sequence) -> bool {
             if let Some(current_height) = self.current_height {
                 // TODO: test >= / >
    -            current_height as u64 >= self.create_height.unwrap_or(0) as u64 + n as u64
    +            current_height
    +                >= self
    +                    .create_height
    +                    .unwrap_or(0)
    +                    .checked_add(n.to_consensus_u32())
    +                    .expect("Overflowing addition")
             } else {
                 self.assume_height_reached
             }
    @@ -377,11 +302,12 @@
     
     #[cfg(test)]
     mod test {
    -    use super::{
    -        check_nlocktime, check_nsequence_rbf, IsDust, BLOCKS_TIMELOCK_THRESHOLD,
    -        SEQUENCE_LOCKTIME_TYPE_FLAG,
    -    };
    -    use crate::bitcoin::Address;
    +    // When nSequence is lower than this flag the timelock is interpreted as block-height-based,
    +    // otherwise it's time-based
    +    pub(crate) const SEQUENCE_LOCKTIME_TYPE_FLAG: u32 = 1 << 22;
    +
    +    use super::{check_nsequence_rbf, IsDust};
    +    use crate::bitcoin::{Address, Sequence};
         use std::str::FromStr;
     
         #[test]
    @@ -403,66 +329,40 @@
     
         #[test]
         fn test_check_nsequence_rbf_msb_set() {
    -        let result = check_nsequence_rbf(0x80000000, 5000);
    +        let result = check_nsequence_rbf(Sequence(0x80000000), Sequence(5000));
             assert!(!result);
         }
     
         #[test]
         fn test_check_nsequence_rbf_lt_csv() {
    -        let result = check_nsequence_rbf(4000, 5000);
    +        let result = check_nsequence_rbf(Sequence(4000), Sequence(5000));
             assert!(!result);
         }
     
         #[test]
         fn test_check_nsequence_rbf_different_unit() {
    -        let result = check_nsequence_rbf(SEQUENCE_LOCKTIME_TYPE_FLAG + 5000, 5000);
    +        let result =
    +            check_nsequence_rbf(Sequence(SEQUENCE_LOCKTIME_TYPE_FLAG + 5000), Sequence(5000));
             assert!(!result);
         }
     
         #[test]
         fn test_check_nsequence_rbf_mask() {
    -        let result = check_nsequence_rbf(0x3f + 10_000, 5000);
    +        let result = check_nsequence_rbf(Sequence(0x3f + 10_000), Sequence(5000));
             assert!(result);
         }
     
         #[test]
         fn test_check_nsequence_rbf_same_unit_blocks() {
    -        let result = check_nsequence_rbf(10_000, 5000);
    +        let result = check_nsequence_rbf(Sequence(10_000), Sequence(5000));
             assert!(result);
         }
     
         #[test]
         fn test_check_nsequence_rbf_same_unit_time() {
             let result = check_nsequence_rbf(
    -            SEQUENCE_LOCKTIME_TYPE_FLAG + 10_000,
    -            SEQUENCE_LOCKTIME_TYPE_FLAG + 5000,
    -        );
    -        assert!(result);
    -    }
    -
    -    #[test]
    -    fn test_check_nlocktime_lt_cltv() {
    -        let result = check_nlocktime(4000, 5000);
    -        assert!(!result);
    -    }
    -
    -    #[test]
    -    fn test_check_nlocktime_different_unit() {
    -        let result = check_nlocktime(BLOCKS_TIMELOCK_THRESHOLD + 5000, 5000);
    -        assert!(!result);
    -    }
    -
    -    #[test]
    -    fn test_check_nlocktime_same_unit_blocks() {
    -        let result = check_nlocktime(10_000, 5000);
    -        assert!(result);
    -    }
    -
    -    #[test]
    -    fn test_check_nlocktime_same_unit_time() {
    -        let result = check_nlocktime(
    -            BLOCKS_TIMELOCK_THRESHOLD + 10_000,
    -            BLOCKS_TIMELOCK_THRESHOLD + 5000,
    +            Sequence(SEQUENCE_LOCKTIME_TYPE_FLAG + 10_000),
    +            Sequence(SEQUENCE_LOCKTIME_TYPE_FLAG + 5000),
             );
             assert!(result);
         }